use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum AiProvider {
#[serde(rename = "openai")]
Openai,
#[serde(rename = "azure_openai")]
AzureOpenai,
#[serde(rename = "anthropic")]
Anthropic,
#[serde(rename = "mistral")]
Mistral,
#[serde(rename = "deepseek")]
Deepseek,
#[serde(rename = "googleai")]
Googleai,
#[serde(rename = "groq")]
Groq,
#[serde(rename = "openrouter")]
Openrouter,
#[serde(rename = "togetherai")]
Togetherai,
#[serde(rename = "aws_bedrock")]
AwsBedrock,
#[serde(rename = "customai")]
Customai,
}
impl std::fmt::Display for AiProvider {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
match self {
Self::Openai => write!(f, "openai"),
Self::AzureOpenai => write!(f, "azure_openai"),
Self::Anthropic => write!(f, "anthropic"),
Self::Mistral => write!(f, "mistral"),
Self::Deepseek => write!(f, "deepseek"),
Self::Googleai => write!(f, "googleai"),
Self::Groq => write!(f, "groq"),
Self::Openrouter => write!(f, "openrouter"),
Self::Togetherai => write!(f, "togetherai"),
Self::AwsBedrock => write!(f, "aws_bedrock"),
Self::Customai => write!(f, "customai"),
}
}
}
impl Default for AiProvider {
fn default() -> AiProvider {
Self::Openai
}
}