use crate::adapter::AdapterKind;
use crate::impl_pass_through_adapter;
pub use super::anthropic::AnthropicAdapter;
pub use super::cohere::CohereAdapter;
pub use super::gemini::GeminiAdapter;
pub use super::ollama::OllamaAdapter;
pub use super::openai::OpenAIAdapter;
pub use super::openai_resp::OpenAIRespAdapter;
pub use super::bedrock::BedrockApiAdapter;
#[cfg(feature = "bedrock-sigv4")]
pub use super::bedrock::BedrockSigv4Adapter;
pub use super::vertex::VertexAdapter;
pub use super::fireworks::FireworksAdapter;
pub use super::ollama_cloud::OllamaCloudAdapter;
pub use super::baidu::BaiduAdapter;
pub use super::github_copilot::GithubCopilotAdapter;
pub use super::opencode_go::OpenCodeGoAdapter;
pub use super::zai::ZaiAdapter;
pub use super::custom::CustomAdapter;
pub struct AihubmixAdapter;
impl_pass_through_adapter!(
name: AihubmixAdapter,
kind: AdapterKind::Aihubmix,
key_env: Some("AIHUBMIX_API_KEY"),
endpoint: "https://aihubmix.com/v1/",
delegate: OpenAIAdapter,
);
pub struct AliyunAdapter;
impl_pass_through_adapter!(
name: AliyunAdapter,
kind: AdapterKind::Aliyun,
key_env: Some("ALIYUN_API_KEY"),
endpoint: "https://dashscope.aliyuncs.com/compatible-mode/v1/",
delegate: OpenAIAdapter,
);
pub struct BigModelAdapter;
impl_pass_through_adapter!(
name: BigModelAdapter,
kind: AdapterKind::BigModel,
key_env: Some("BIGMODEL_API_KEY"),
endpoint: "https://open.bigmodel.cn/api/paas/v4/",
delegate: OpenAIAdapter,
);
pub struct DeepSeekAdapter;
impl_pass_through_adapter!(
name: DeepSeekAdapter,
kind: AdapterKind::DeepSeek,
key_env: Some("DEEPSEEK_API_KEY"),
endpoint: "https://api.deepseek.com/v1/",
delegate: OpenAIAdapter,
);
pub struct GroqAdapter;
impl_pass_through_adapter!(
name: GroqAdapter,
kind: AdapterKind::Groq,
key_env: Some("GROQ_API_KEY"),
endpoint: "https://api.groq.com/openai/v1/",
delegate: OpenAIAdapter,
unsupported: [embeddings],
);
pub struct KimiAdapter;
impl_pass_through_adapter!(
name: KimiAdapter,
kind: AdapterKind::Kimi,
key_env: Some("KIMI_API_KEY"),
endpoint: "https://api.moonshot.ai/v1/",
delegate: OpenAIAdapter,
unsupported: [embeddings],
);
pub struct MoonshotAdapter;
impl_pass_through_adapter!(
name: MoonshotAdapter,
kind: AdapterKind::Moonshot,
key_env: Some("MOONSHOT_API_KEY"),
endpoint: "https://api.moonshot.cn/v1/",
delegate: OpenAIAdapter,
);
pub struct MiniMaxAdapter;
impl_pass_through_adapter!(
name: MiniMaxAdapter,
kind: AdapterKind::MiniMax,
key_env: Some("MINIMAX_API_KEY"),
endpoint: "https://api.minimax.io/anthropic/v1/",
delegate: AnthropicAdapter,
unsupported: [embeddings],
);
pub struct MimoAdapter;
impl_pass_through_adapter!(
name: MimoAdapter,
kind: AdapterKind::Mimo,
key_env: Some("MIMO_API_KEY"),
endpoint: "https://api.mimo.com/openai/v1/",
delegate: OpenAIAdapter,
);
pub struct NebiusAdapter;
impl_pass_through_adapter!(
name: NebiusAdapter,
kind: AdapterKind::Nebius,
key_env: Some("NEBIUS_API_KEY"),
endpoint: "https://api.studio.nebius.ai/v1/",
delegate: OpenAIAdapter,
);
pub struct OpenRouterAdapter;
impl_pass_through_adapter!(
name: OpenRouterAdapter,
kind: AdapterKind::OpenRouter,
key_env: Some("OPEN_ROUTER_API_KEY"),
endpoint: "https://openrouter.ai/api/v1/",
delegate: OpenAIAdapter,
);
pub struct TogetherAdapter;
impl_pass_through_adapter!(
name: TogetherAdapter,
kind: AdapterKind::Together,
key_env: Some("TOGETHER_API_KEY"),
endpoint: "https://api.together.xyz/v1/",
delegate: OpenAIAdapter,
);
pub struct XaiAdapter;
impl_pass_through_adapter!(
name: XaiAdapter,
kind: AdapterKind::Xai,
key_env: Some("XAI_API_KEY"),
endpoint: "https://api.x.ai/v1/",
delegate: OpenAIAdapter,
);