1#![warn(missing_docs)]
2mod error;
18mod media;
19mod retry;
20mod sampling;
21mod wrapper;
22
23pub mod client;
25pub mod ollama;
27pub mod openai;
29pub mod openai_compatible;
32pub mod providers;
34
35pub use client::LLMClient;
36pub use error::ProviderError;
37pub use ollama::{OllamaChat, OllamaConfig};
38pub use openai::{
39 AssistantError, BuiltinTool, OpenAIAssistant, OpenAIChat, OpenAIConfig, ResponsesConfig,
40 ResponsesError, ResponsesModel, OPENAI_MODELS,
41};
42pub use openai_compatible::{
43 GroqChat, OpenAICompatibleChat, OpenAICompatibleConfig, OpenRouterChat, XaiChat,
44 DEFAULT_GROQ_MODEL, DEFAULT_XAI_MODEL, GROQ_BASE_URL, GROQ_MODELS, OPENROUTER_BASE_URL,
45 XAI_BASE_URL, XAI_MODELS,
46};
47pub use providers::{
48 AnthropicChat, AnthropicConfig, AnthropicError, AnthropicStreamToken,
49 AnthropicStructuredOutputMethod, AnthropicUsage, AzureOpenAIChat, AzureOpenAIConfig,
50 AzureOpenAIError, CohereChat, CohereConfig, CohereError, DeepSeekChat, DeepSeekConfig,
51 GeminiChat, GeminiConfig, GeminiError, GeminiStructuredOutputMethod, MistralChat,
52 MistralConfig, MoonshotChat, MoonshotConfig, QwenChat, QwenConfig, ThinkingConfig,
53 ThinkingType, ZhipuChat, ZhipuConfig,
54};
55pub use wrapper::{wrap_chat_model, ChatModelWrapper};
56
57#[cfg(test)]
62pub(crate) static ENV_TEST_LOCK: std::sync::Mutex<()> = std::sync::Mutex::new(());