From 0e740d81e94505bd57036755abaaecb12c3b26e3 Mon Sep 17 00:00:00 2001 From: sigoden Date: Sun, 28 Jul 2024 06:04:36 +0800 Subject: feat: abandon rag_dedicated client and improve (#757) --- src/client/macros.rs | 94 +++++++++------------------------------------------- 1 file changed, 16 insertions(+), 78 deletions(-) (limited to 'src/client/macros.rs') diff --git a/src/client/macros.rs b/src/client/macros.rs index 19e7734..67a2d83 100644 --- a/src/client/macros.rs +++ b/src/client/macros.rs @@ -54,8 +54,7 @@ macro_rules! register_client { if local_config.models.is_empty() { if let Some(models) = $crate::client::ALL_MODELS.iter().find(|v| { v.platform == $name || - ($name == OpenAICompatibleClient::NAME && local_config.name.as_deref() == Some(&v.platform)) || - ($name == RagDedicatedClient::NAME && local_config.name.as_deref() == Some(&v.platform)) + ($name == OpenAICompatibleClient::NAME && local_config.name.as_deref() == Some(&v.platform)) }) { return Model::from_config(client_name, &models.models); } @@ -161,71 +160,12 @@ macro_rules! client_common_fns { #[macro_export] macro_rules! impl_client_trait { - ($client:ident, $chat_completions:path, $chat_completions_streaming:path) => { - #[async_trait::async_trait] - impl $crate::client::Client for $crate::client::$client { - client_common_fns!(); - - async fn chat_completions_inner( - &self, - client: &reqwest::Client, - data: $crate::client::ChatCompletionsData, - ) -> anyhow::Result<$crate::client::ChatCompletionsOutput> { - let request_data = self.prepare_chat_completions(data)?; - let builder = self.request_builder(client, request_data, ApiType::ChatCompletions); - $chat_completions(builder).await - } - - async fn chat_completions_streaming_inner( - &self, - client: &reqwest::Client, - handler: &mut $crate::client::SseHandler, - data: $crate::client::ChatCompletionsData, - ) -> Result<()> { - let request_data = self.prepare_chat_completions(data)?; - let builder = self.request_builder(client, request_data, ApiType::ChatCompletions); - $chat_completions_streaming(builder, handler).await - } - } - }; - ($client:ident, $chat_completions:path, $chat_completions_streaming:path, $embeddings:path) => { - #[async_trait::async_trait] - impl $crate::client::Client for $crate::client::$client { - client_common_fns!(); - - async fn chat_completions_inner( - &self, - client: &reqwest::Client, - data: $crate::client::ChatCompletionsData, - ) -> anyhow::Result<$crate::client::ChatCompletionsOutput> { - let request_data = self.prepare_chat_completions(data)?; - let builder = self.request_builder(client, request_data, ApiType::ChatCompletions); - $chat_completions(builder).await - } - - async fn chat_completions_streaming_inner( - &self, - client: &reqwest::Client, - handler: &mut $crate::client::SseHandler, - data: $crate::client::ChatCompletionsData, - ) -> Result<()> { - let request_data = self.prepare_chat_completions(data)?; - let builder = self.request_builder(client, request_data, ApiType::ChatCompletions); - $chat_completions_streaming(builder, handler).await - } - - async fn embeddings_inner( - &self, - client: &reqwest::Client, - data: $crate::client::EmbeddingsData, - ) -> Result<$crate::client::EmbeddingsOutput> { - let request_data = self.prepare_embeddings(data)?; - let builder = self.request_builder(client, request_data, ApiType::Embeddings); - $embeddings(builder).await - } - } - }; - ($client:ident, $chat_completions:path, $chat_completions_streaming:path, $embeddings:path, $rerank:path) => { + ( + $client:ident, + ($prepare_chat_completions:path, $chat_completions:path, $chat_completions_streaming:path), + ($prepare_embeddings:path, $embeddings:path), + ($prepare_rerank:path, $rerank:path), + ) => { #[async_trait::async_trait] impl $crate::client::Client for $crate::client::$client { client_common_fns!(); @@ -235,9 +175,9 @@ macro_rules! impl_client_trait { client: &reqwest::Client, data: $crate::client::ChatCompletionsData, ) -> anyhow::Result<$crate::client::ChatCompletionsOutput> { - let request_data = self.prepare_chat_completions(data)?; + let request_data = $prepare_chat_completions(self, data)?; let builder = self.request_builder(client, request_data, ApiType::ChatCompletions); - $chat_completions(builder).await + $chat_completions(builder, self.model()).await } async fn chat_completions_streaming_inner( @@ -246,9 +186,9 @@ macro_rules! impl_client_trait { handler: &mut $crate::client::SseHandler, data: $crate::client::ChatCompletionsData, ) -> Result<()> { - let request_data = self.prepare_chat_completions(data)?; + let request_data = $prepare_chat_completions(self, data)?; let builder = self.request_builder(client, request_data, ApiType::ChatCompletions); - $chat_completions_streaming(builder, handler).await + $chat_completions_streaming(builder, handler, self.model()).await } async fn embeddings_inner( @@ -256,9 +196,9 @@ macro_rules! impl_client_trait { client: &reqwest::Client, data: $crate::client::EmbeddingsData, ) -> Result<$crate::client::EmbeddingsOutput> { - let request_data = self.prepare_embeddings(data)?; + let request_data = $prepare_embeddings(self, data)?; let builder = self.request_builder(client, request_data, ApiType::Embeddings); - $embeddings(builder).await + $embeddings(builder, self.model()).await } async fn rerank_inner( @@ -266,9 +206,9 @@ macro_rules! impl_client_trait { client: &reqwest::Client, data: $crate::client::RerankData, ) -> Result<$crate::client::RerankOutput> { - let request_data = self.prepare_rerank(data)?; + let request_data = $prepare_rerank(self, data)?; let builder = self.request_builder(client, request_data, ApiType::Rerank); - $rerank(builder).await + $rerank(builder, self.model()).await } } }; @@ -286,9 +226,7 @@ macro_rules! config_get_fn { format!("{}_{}", env_prefix, stringify!($field_name)).to_ascii_uppercase(); std::env::var(&env_name).ok() }) - .ok_or_else(|| { - anyhow::anyhow!("Miss '{}' in client configuration", stringify!($field_name)) - }) + .ok_or_else(|| anyhow::anyhow!("Miss '{}'", stringify!($field_name))) } }; } -- cgit v1.2.3