From 36380475d5bd923f537e1aa29cad9f63bd138d40 Mon Sep 17 00:00:00 2001 From: sigoden Date: Tue, 31 Oct 2023 06:36:52 +0800 Subject: feat: support azure-openai (#166) --- src/client/mod.rs | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'src/client/mod.rs') diff --git a/src/client/mod.rs b/src/client/mod.rs index 810fac2..ca37804 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -1,7 +1,9 @@ +pub mod azure_openai; pub mod localai; pub mod openai; use self::{ + azure_openai::{AzureOpenAIClient, AzureOpenAIConfig}, localai::LocalAIConfig, openai::{OpenAIClient, OpenAIConfig}, }; @@ -27,6 +29,8 @@ pub enum ClientConfig { OpenAI(OpenAIConfig), #[serde(rename = "localai")] LocalAI(LocalAIConfig), + #[serde(rename = "azure-openai")] + AzureOpenAI(AzureOpenAIConfig), } #[derive(Debug, Clone)] @@ -128,6 +132,7 @@ pub trait Client { pub fn init_client(config: SharedConfig) -> Result> { OpenAIClient::init(config.clone()) .or_else(|| LocalAIClient::init(config.clone())) + .or_else(|| AzureOpenAIClient::init(config.clone())) .ok_or_else(|| { let model_info = config.read().model_info.clone(); anyhow!( @@ -139,7 +144,11 @@ pub fn init_client(config: SharedConfig) -> Result> { } pub fn all_clients() -> Vec<&'static str> { - vec![OpenAIClient::name(), LocalAIClient::name()] + vec![ + OpenAIClient::name(), + LocalAIClient::name(), + AzureOpenAIClient::name(), + ] } pub fn create_client_config(client: &str) -> Result { @@ -147,6 +156,8 @@ pub fn create_client_config(client: &str) -> Result { OpenAIClient::create_config() } else if client == LocalAIClient::name() { LocalAIClient::create_config() + } else if client == AzureOpenAIClient::name() { + AzureOpenAIClient::create_config() } else { bail!("Unknown client {}", &client) } @@ -160,6 +171,7 @@ pub fn list_models(config: &Config) -> Vec { .flat_map(|(i, v)| match v { ClientConfig::OpenAI(c) => OpenAIClient::list_models(c, i), ClientConfig::LocalAI(c) => LocalAIClient::list_models(c, i), + ClientConfig::AzureOpenAI(c) => AzureOpenAIClient::list_models(c, i), }) .collect() } -- cgit v1.2.3