summaryrefslogtreecommitdiffstats
path: root/src/client/gemini.rs
diff options
context:
space:
mode:
authorsigoden <sigoden@gmail.com>2024-04-26 07:43:35 +0800
committerGitHub <noreply@github.com>2024-04-26 07:43:35 +0800
commit740ca2413a1992d151c0a9ea62c12e69321c0973 (patch)
treeccacd2fd5789064c091b212f26f3c46561f71f69 /src/client/gemini.rs
parenta21e1213ccdd11d76f6338436c431e459ab8e574 (diff)
downloadaichat-740ca2413a1992d151c0a9ea62c12e69321c0973.tar.gz
refactor: simplify impl client trait (#445)
Diffstat (limited to 'src/client/gemini.rs')
-rw-r--r--src/client/gemini.rs33
1 files changed, 8 insertions, 25 deletions
diff --git a/src/client/gemini.rs b/src/client/gemini.rs
index 05e19a3..4b6f053 100644
--- a/src/client/gemini.rs
+++ b/src/client/gemini.rs
@@ -1,12 +1,9 @@
-use super::vertexai::{gemini_build_body, gemini_send_message, gemini_send_message_streaming};
-use super::{
- Client, ExtraConfig, GeminiClient, Model, ModelConfig, PromptType, ReplyHandler, SendData,
-};
+use super::vertexai::gemini_build_body;
+use super::{ExtraConfig, GeminiClient, Model, ModelConfig, PromptType, SendData};
use crate::utils::PromptKind;
use anyhow::Result;
-use async_trait::async_trait;
use reqwest::{Client as ReqwestClient, RequestBuilder};
use serde::Deserialize;
@@ -22,26 +19,6 @@ pub struct GeminiConfig {
pub extra: Option<ExtraConfig>,
}
-#[async_trait]
-impl Client for GeminiClient {
- client_common_fns!();
-
- async fn send_message_inner(&self, client: &ReqwestClient, data: SendData) -> Result<String> {
- let builder = self.request_builder(client, data)?;
- gemini_send_message(builder).await
- }
-
- async fn send_message_streaming_inner(
- &self,
- client: &ReqwestClient,
- handler: &mut ReplyHandler,
- data: SendData,
- ) -> Result<()> {
- let builder = self.request_builder(client, data)?;
- gemini_send_message_streaming(builder, handler).await
- }
-}
-
impl GeminiClient {
list_models_fn!(
GeminiConfig,
@@ -80,3 +57,9 @@ impl GeminiClient {
Ok(builder)
}
}
+
+impl_client_trait!(
+ GeminiClient,
+ crate::client::vertexai::gemini_send_message,
+ crate::client::vertexai::gemini_send_message_streaming
+);