Skip to content

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 接口,支持:

功能说明
Streamingmodel.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 解析。