Skip to main content

lc_providers/
lib.rs

1#![warn(missing_docs)]
2// lc-providers/src/lib.rs
3//! LLM provider integrations for langchainrust.
4//!
5//! This crate provides unified chat model interfaces for:
6//! - OpenAI (GPT-5 / GPT-4o / o-series)
7//! - Generic OpenAI-compatible endpoints ([`openai_compatible`]): Groq,
8//!   OpenRouter, xAI (Grok), and arbitrary self-hosted/private base URLs
9//! - Ollama (local LLMs like Llama, Mistral)
10//! - DeepSeek (cost-effective Chinese LLM)
11//! - Moonshot (long-context Kimi)
12//! - Qwen (Alibaba Cloud)
13//! - Zhipu (ChatGLM)
14//! - Anthropic (Claude)
15//! - Gemini (Google)
16
17mod error;
18mod media;
19mod retry;
20mod sampling;
21mod wrapper;
22
23/// LLMClient — zero-config unified entry point.
24pub mod client;
25/// Ollama local LLM integration.
26pub mod ollama;
27/// OpenAI API integration.
28pub mod openai;
29/// B5: generic OpenAI-compatible endpoint support (Groq, OpenRouter, xAI,
30/// vLLM, LM Studio, private gateways) — one transport, named presets.
31pub mod openai_compatible;
32/// Third-party provider integrations.
33pub 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/// Global mutex for serializing env-var tests across the crate.
58/// Env vars are process-global, so parallel tests that set/remove them
59/// can race. All env-var tests should `lock()` this before touching
60/// `std::env::set_var` / `std::env::remove_var`.
61#[cfg(test)]
62pub(crate) static ENV_TEST_LOCK: std::sync::Mutex<()> = std::sync::Mutex::new(());