一键导入
llm-backends
Constructing LLM backends (OpenAI, Claude, DeepSeek, Qwen, Ollama) and configuring CallOptions.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Constructing LLM backends (OpenAI, Claude, DeepSeek, Qwen, Ollama) and configuring CallOptions.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
AgentExecutor, ChatAgent (ReAct), OpenAIToolsAgent, and the Agent trait.
JOB-251 — Why Arc<dyn LLM> over LLMClone, migration pattern, and correct LLM ownership model.
All Chain types — LLMChain, ConversationalChain, SequentialChain, StuffDocuments, ConversationalRetrievalQA, SqlDatabaseChain.
Trait conformance tests, property-based tests (proptest), fuzz targets, and boundary contracts for langchainx traits.
Core langchainx patterns — LLMChain, builder pattern, Chain trait, prompt macros, and basic invocation.
JOB-256 — blanket From impl, removing redundant Into impls, RwLock vs Mutex for memory.
| name | llm-backends |
| description | Constructing LLM backends (OpenAI, Claude, DeepSeek, Qwen, Ollama) and configuring CallOptions. |
| Backend | Struct | Default env var | Feature flag |
|---|---|---|---|
| OpenAI | OpenAI<OpenAIConfig> | OPENAI_API_KEY | (default) |
| Claude | Claude | CLAUDE_API_KEY | (default) |
| DeepSeek | Deepseek | DEEPSEEK_API_KEY | (default) |
| Qwen | Qwen | DASHSCOPE_API_KEY | (default) |
| Ollama | Ollama | — (local) | ollama |
use langchainx::llm::openai::{OpenAI, OpenAIModel};
use async_openai::config::OpenAIConfig;
// Default (reads OPENAI_API_KEY from env)
let llm = OpenAI::default();
// With model
let llm = OpenAI::default().with_model(OpenAIModel::Gpt4.to_string());
// With custom config
let config = OpenAIConfig::default().with_api_key("sk-...");
let llm = OpenAI::new(config).with_model(OpenAIModel::Gpt4o.to_string());
## Claude
use langchainx::llm::claude::{Claude, ClaudeModel};
// Default (reads CLAUDE_API_KEY from env)
let llm = Claude::new();
// With model — use string form to avoid stale enum variants
let llm = Claude::new()
.with_model("claude-sonnet-4-6") // prefer string over enum for new models
.with_api_key("sk-ant-...");
Note: ClaudeModel enum only covers models up to claude-3.5-sonnet-20240620. For newer
models (claude-sonnet-4-6, claude-opus-4-6) pass the string directly to .with_model().
use langchainx::llm::deepseek::Deepseek;
use langchainx::llm::qwen::Qwen;
let deepseek = Deepseek::default(); // reads DEEPSEEK_API_KEY
let qwen = Qwen::default(); // reads DASHSCOPE_API_KEY
Both reuse the OpenAI client with a custom base URL internally.
## CallOptionsCallOptions configures inference parameters. Pass to a builder via .options() on chains,
or directly to the LLM via .with_options().
use langchainx::language_models::options::CallOptions;
let options = CallOptions::new()
.with_max_tokens(512)
.with_temperature(0.7)
.with_top_p(0.9)
.with_stop_words(vec!["END".to_string()]);
// Apply to LLM directly
let llm = Claude::new().with_options(options.clone());
// Or via chain builder (preferred — chain merges into LLM options)
use langchainx::chain::options::ChainCallOptions;
let chain_opts = ChainCallOptions::default()
.with_max_tokens(512)
.with_temperature(0.7);
let chain = LLMChainBuilder::new()
.llm(Claude::new())
.prompt(prompt)
.options(chain_opts)
.build()?;
DO NOT set streaming_func on CallOptions — use chain.stream() or llm.stream() instead.
See the streaming skill.
LLM::add_options merges options in-place. Used internally by chain builders.
let mut llm = OpenAI::default();
llm.add_options(CallOptions::new().with_temperature(0.0));