Appearance
LangChain 为 OpenRouter 提供了专用集成包——TypeScript 用 @langchain/openrouter,Python 用 langchain-openrouter。安装后创建 ChatOpenRouter 实例并传入模型 ID,即可使用所有 LangChain 标准接口(streaming、tool calling、结构化输出、多模态等),底层请求通过 OpenRouter 路由,无需手动配置 base URL。
LangChain 提供了与 OpenRouter 的标准集成,通过专用 ChatOpenRouter 类可在 LangChain 应用中访问所有 OpenRouter 模型。
TypeScript / JavaScript
安装:
bash
npm install @langchain/openrouter基本用法:
typescript
import { ChatOpenRouter } from "@langchain/openrouter";
const model = new ChatOpenRouter(
"anthropic/claude-sonnet-4.6",
{ temperature: 0.8 }
);
// 调用模型
const response = await model.invoke([
{ role: "system", content: "You are a helpful assistant." },
{ role: "user", content: "Hello, how are you?" },
]);
console.log(response.content);环境变量:
bash
export OPENROUTER_API_KEY="sk-or-..."ChatOpenRouter 自动从 OPENROUTER_API_KEY 环境变量读取 API key。
Python
安装:
bash
pip install langchain-openrouter基本用法:
python
from langchain_openrouter import ChatOpenRouter
model = ChatOpenRouter(
model_name="anthropic/claude-sonnet-4.6",
temperature=0.8
)
response = model.invoke([
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Hello, how are you?"}
])
print(response.content)支持的功能
ChatOpenRouter 实现了 LangChain 标准的 BaseChatModel 接口,支持:
| 功能 | 说明 |
|---|---|
| Streaming | model.stream() 流式输出 |
| Tool Calling | .bind_tools() 绑定工具 |
| 结构化输出 | .with_structured_output() |
| 推理模式 | Thinking tokens(需模型支持) |
| 多模态输入 | 图片、音频等(需模型支持) |
| Provider 路由 | 通过额外参数传入 OpenRouter 路由选项 |
更多文档
常见问题
Q: 为什么用 @langchain/openrouter 而不是直接用 @langchain/openai + base URL?
A: @langchain/openrouter 是 OpenRouter 官方推荐的集成方式,会处理 OpenRouter 特有的参数(如 Provider 路由、HTTP-Referer 请求头等),并随 OpenRouter API 更新而维护。用 @langchain/openai 配合 base_url 也能工作,但可能缺少 OpenRouter 专有功能。
Q: 如何在 LangChain 链中传入 OpenRouter 的 Provider 路由选项?
A: 在创建 ChatOpenRouter 时传入 model_kwargs 参数,例如:
python
model = ChatOpenRouter(
model_name="anthropic/claude-sonnet-4.6",
model_kwargs={"provider": {"order": ["Anthropic", "AWS Bedrock"]}}
)Q: LangChain 的 streaming 如何与 OpenRouter 配合?
A: 与直接调用 OpenRouter API 一样,model.stream() 通过 Server-Sent Events 接收流式响应,ChatOpenRouter 自动处理底层的 SSE 解析。