概述
集成详情
模型特性
设置
要通过 OpenRouter 访问模型,您需要创建一个 OpenRouter 账户,获取 API 密钥,并安装langchain-openrouter 集成包。
安装
LangChain OpenRouter 集成位于langchain-openrouter 包中:
凭证
前往 OpenRouter 密钥页面 注册并生成 API 密钥。完成后,设置OPENROUTER_API_KEY 环境变量:
实例化
现在我们可以实例化模型对象并生成聊天补全:调用
流式传输
工具调用
OpenRouter 使用 OpenAI 兼容的工具调用格式。您可以描述工具及其参数,让模型返回一个包含要调用工具及其输入参数的 JSON 对象。绑定工具
使用ChatOpenRouter.bind_tools,您可以将 Pydantic 类、字典模式、LangChain 工具或函数作为工具传递给模型。在底层,这些会被转换为 OpenAI 工具模式,并在每次模型调用中传递。
工具调用
AIMessage 有一个tool_calls 属性。它包含一个与模型提供商无关的标准化格式的工具调用。
严格模式
传递strict=True 以保证模型输出与工具定义中提供的 JSON Schema 完全匹配:
结构化输出
ChatOpenRouter 通过 with_structured_output 方法支持结构化输出。有两种方法可用:function_calling(默认)和 json_schema。
单个模型调用
单个模型调用
使用
with_structured_output 生成结构化的模型响应。指定 method="json_schema" 以使用基于 JSON Schema 的结构化输出;否则方法默认为函数调用。智能体响应格式
智能体响应格式
function_calling 和 json_schema 方法中传递 strict=True 以强制完全遵循模式。strict 参数不支持 json_mode。
推理输出
对于支持推理的模型(例如anthropic/claude-sonnet-4.5、deepseek/deepseek-r1),您可以通过 reasoning 参数启用推理令牌。详情请参阅 OpenRouter 推理文档:
reasoning 字典支持两个键:
effort:控制推理令牌预算。值:"xhigh"、"high"、"medium"、"low"、"minimal"、"none"。summary:控制响应中返回的推理摘要的详细程度。值:"auto"、"concise"、"detailed"。
usage_metadata 中:
努力程度到预算的映射取决于模型。例如,Google Gemini 模型将努力程度映射到内部的
thinkingLevel 而不是精确的令牌预算。详情请参阅 OpenRouter 推理文档。多模态输入
OpenRouter 支持接受多模态输入的模型的 多模态输入。可用的模态取决于您选择的模型——请查看 OpenRouter 模型页面 了解详情。支持的输入方法
并非所有模型都支持所有模态。请查看 OpenRouter 模型页面 了解特定模型的支持情况。
图像输入
使用带有列表内容格式的HumanMessage 提供图像输入以及文本。
音频输入
提供音频输入以及文本。音频以 base64 内联数据形式传递。视频输入
视频输入会自动转换为 OpenRouter 的video_url 格式。
PDF 输入
提供 PDF 文件输入以及文本。令牌使用量元数据
调用后,令牌使用量信息可在响应的usage_metadata 属性中找到:
推理令牌
output_token_details.reasoning 报告模型用于内部思维链推理的令牌数量。这在使用推理模型(例如 deepseek/deepseek-r1、openai/o3)或显式启用推理时出现:
缓存的输入令牌
input_token_details.cache_read 报告从提供商的提示缓存中提供的输入令牌数量,input_token_details.cache_creation 报告首次调用时写入缓存的令牌数量。
提示缓存需要在消息内容块中显式的 cache_control 断点。在要缓存的内容块上传递 {"cache_control": {"type": "ephemeral"}}:
如果消息内容块上没有
cache_control,提供商将不会缓存提示,这些字段也不会出现。响应元数据
调用后,提供商和模型元数据可在response_metadata 属性中找到:
native_finish_reason 字段包含底层提供商的原始完成原因,可能与标准化的 finish_reason 不同。
提供商路由
OpenRouter 上的许多模型由多个提供商提供服务。openrouter_provider 参数让您可以控制哪些提供商处理您的请求以及如何选择它们。
排序和过滤提供商
使用order 设置首选提供商序列。OpenRouter 按顺序尝试每个提供商,如果某个提供商不可用,则回退到下一个:
only。要排除某些提供商,请使用 ignore:
按成本、速度或延迟排序
默认情况下,OpenRouter 在提供商之间进行负载均衡,优先考虑较低成本。使用sort 更改优先级:
数据收集策略
如果您的用例要求提供商不存储或训练您的数据,请将data_collection 设置为 "deny":
按量化过滤
对于开放权重模型,您可以限制路由到特定的精度级别:路由参数
route 参数控制高级路由行为:
"fallback":启用跨提供商的自动故障转移(默认行为)。"sort":基于openrouter_provider中配置的排序策略进行路由。
组合选项
提供商选项可以组合使用:应用归属
OpenRouter 通过 HTTP 标头支持应用归属。您可以通过初始化参数或环境变量设置这些:API 参考
有关ChatOpenRouter 所有功能和配置的详细文档,请查阅 ChatOpenRouter API 参考。
有关 OpenRouter 平台、模型和功能的更多信息,请参阅 OpenRouter 文档。
Connect these docs to Claude, VSCode, and more via MCP for real-time answers.

