OpenRouter 平台功能
OpenRouter 平台功能
服务端工具概览
3 分钟阅读
服务端工具
由 OpenRouter 运营、模型可在请求期间调用的工具
测试版(Beta)
服务端工具目前处于测试阶段。API 和行为可能会变化。
服务端工具是由 OpenRouter 运营、任何模型都可以在请求期间调用的专用工具。当模型决定使用服务端工具时,OpenRouter 会在服务端执行它并将结果返回给模型,因此无需客户端实现。
服务端工具 vs 插件 vs 用户自定义工具
| 服务端工具 | 插件 | 用户自定义工具 | |
|---|---|---|---|
| 由谁决定使用 | 模型 | 始终运行 | 模型 |
| 由谁执行 | OpenRouter | OpenRouter | 你的应用 |
| 调用频率 | 每个请求 0 到 N 次 | 每个请求一次 | 每个请求 0 到 N 次 |
| 通过什么指定 | tools 数组 | plugins 数组 | tools 数组 |
| 类型前缀 | openrouter:* | 不适用 | function |
服务端工具是模型在一次请求中可以调用零次或多次的工具。OpenRouter 透明地处理执行。
插件通过注入或修改请求或响应来添加功能(例如响应修复、PDF 解析)。启用后始终运行一次。
用户自定义工具是标准的函数调用工具:模型建议一次调用,由你的应用执行。
可用的服务端工具
| 工具 | 类型 | 说明 |
|---|---|---|
| Web 搜索 | openrouter:web_search | 搜索网络以获取最新信息 |
| Datetime | openrouter:datetime | 获取当前日期和时间 |
| 图像生成 | openrouter:image_generation | 根据文本提示词生成图像 |
| Web 获取 | openrouter:web_fetch | 从 URL 获取并提取内容 |
| Apply Patch | openrouter:apply_patch | 通过 V4A diff 补丁提议文件编辑(仅 Responses API) |
| Shell | openrouter:shell | 在托管的沙箱 Shell 中运行命令(Responses 和 Messages API) |
| Fusion | openrouter:fusion | 运行一组模型和一位分析师,进行多模型分析 |
| Advisor | openrouter:advisor | 在生成过程中咨询更强的模型以获取指导 |
| 子智能体 | openrouter:subagent | 将自成一体的任务委派给更小、更快的工作者模型 |
| 搜索模型 | openrouter:experimental__search_models | 搜索并筛选 OpenRouter 模型目录 |
服务端工具如何工作
- 在 API 请求的
tools数组中包含一个或多个服务端工具。 - 模型根据用户的提示词决定是否以及何时调用每个服务端工具。
- OpenRouter 拦截工具调用,在服务端执行,并将结果返回给模型。
- 模型利用结果形成响应。如有需要,可能会再次调用该工具。
服务端工具可以与你自己的用户自定义工具一起使用。你可以在同一请求中同时包含二者。
工具调用上限
每个使用服务端工具的请求都会运行带步数预算的智能体循环。模型进行的每次工具调用(一次网页搜索、一次图像生成等)消耗一步;预算耗尽后,模型会被要求基于目前收集到的上下文给出最终答案。
两个顶层请求字段控制外层循环(二者都是 messages 和 tools 的同级字段):
| 字段 | 默认值 | 最大值 | 行为 |
|---|---|---|---|
max_tool_calls | 30 | 30 | 该请求允许的服务端工具总步数,覆盖所有服务端工具 |
stop_server_tools_when | 无 | 无 | 停止条件数组(步数、消费上限等)。设置后会覆盖 max_tool_calls |
运行自身内层智能体循环的工具,通过该工具的 parameters 配置独立的按工具预算:
这些内层预算约束每位小组成员、Advisor 或工作者模型自己的工具循环,与外层请求预算相互独立。
快速开始
使用 openrouter: 类型前缀,将服务端工具添加到 tools 数组:
与用户自定义工具组合
服务端工具和用户自定义工具可以在同一请求中使用:
模型可以调用服务端工具和用户自定义工具的任意组合。OpenRouter 自动执行服务端工具,而你的应用像往常一样处理用户自定义工具调用。
用量跟踪
服务端工具用量记录在响应的 usage 对象中: