diff options
| author | sigoden <sigoden@gmail.com> | 2023-10-31 06:36:52 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-10-31 06:36:52 +0800 |
| commit | 36380475d5bd923f537e1aa29cad9f63bd138d40 (patch) | |
| tree | 773a5f08daaa865e14020a73ff137239bd5c5b1d /src/client/mod.rs | |
| parent | 86fd9d207e780931f8dc152bf90387de481fb3ee (diff) | |
| download | aichat-36380475d5bd923f537e1aa29cad9f63bd138d40.tar.gz | |
feat: support azure-openai (#166)
Diffstat (limited to 'src/client/mod.rs')
| -rw-r--r-- | src/client/mod.rs | 14 |
1 files changed, 13 insertions, 1 deletions
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<Box<dyn Client>> { 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<Box<dyn Client>> { } 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<String> { @@ -147,6 +156,8 @@ pub fn create_client_config(client: &str) -> Result<String> { 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<ModelInfo> { .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() } |
