跳到正文
OpenRouter Blog·· 2026-05-07精选AI 评分62

OpenRouter 推出 openrouter:web_search 与 openrouter:web_fetch 服务端工具

Consistent Web Search and Fetch Across Every Model

AI 导读

OpenRouter 发布 openrouter:web_search 和 openrouter:web_fetch 两个服务端工具,任何支持工具调用的模型都能在请求中调用,由 OpenRouter 在服务端执行并返回结果,无需客户端实现。

推荐理由

原文给出跨模型统一的搜索与抓取工具定义,读者可据此判断多模型切换时的工具适配成本。

正文 · AI 翻译

推出 openrouter:web_search 和 openrouter:web_fetch,这两个新工具可供任何模型在请求期间调用。当模型决定使用其中一个时,OpenRouter 会在服务端执行它,并将结果返回给模型,无需任何客户端实现。

  • Web Search:一个用于代理式搜索的工具,每次请求可搜索 0 到 N 次,让模型自行选择查询内容和时机。
  • Web Fetch:一个用于从任意 URL 检索完整页面内容的工具。常用于检索搜索过程中找到的页面。

现在就在 chatroom 中点击工具图标 tool icon 试用,并阅读文档了解 API 详情。

换模型,无需换工具

每个模型提供商都有自己内置的网页搜索工具,且 schema 各不相同。切换模型或提供商时,你就得重写搜索结果的定义、配置和解析方式。而且你也不一定能获得相同的行为,如果你需要严格强制屏蔽某些域名之类的功能,这可能会带来问题。

这些新的服务端工具为你提供了一种统一的方式来启用搜索和抓取。只需指定一次 {"type": "openrouter:web_search"},工具定义、调用和结果格式在所有支持工具调用的模型上都保持一致。如果你还希望搜索行为也完全一致,可以指定 Exa 或 Parallel 这样的提供商,这样无论请求路由到 GPT-5.5、Claude 还是 Kimi,返回给模型的结果都保持一致。

{
  "model": "openai/gpt-5.5",
  "messages": [{ "role": "user", "content": "What happened in tech news today?" }],
  "tools": [
    { "type": "openrouter:web_search" },
    { "type": "openrouter:web_fetch" }
  ]
}

Web Search

网页搜索支持四种引擎:

引擎工作方式定价
Auto(默认)如果提供商支持则使用原生,否则使用 Exa视情况而定
Native提供商内置的搜索(OpenAI、Anthropic、Google、xAI、Perplexity)提供商定价
Exa将搜索传递给 Exa,并从你的 OpenRouter 额度中扣费每次请求 $0.005。包含最多 10 条结果,之后每条额外结果 $0.001。
Parallel将搜索传递给 Parallel,并从你的 OpenRouter 额度中扣费每次请求 $0.005。包含最多 10 条结果,之后每条额外结果 $0.001。

每种引擎各有优势。原生搜索与提供商的模型紧密集成。Exa 和 Parallel 增加了可配置的结果上下文大小(search_context_size),而原生引擎会忽略这一点。大多数引擎支持域名过滤(allowed_domains、excluded_domains)。

你可以在 chatroom UI 中或通过 API 进行配置:

{
  "type": "openrouter:web_search",
  "parameters": {
    "engine": "exa",
    "max_results": 5,
    "search_context_size": "high",
    "allowed_domains": ["arxiv.org", "nature.com"]
  }
}

代理循环中的并行搜索

当模型需要跨来源比较信息时,它可以在单次请求中发起多次搜索。像“比较排名前 3 的云 GPU 提供商的定价”这样的问题,可能会在模型综合出答案之前触发三次独立的搜索,每次使用不同的查询。

Parallel web searches running in the background in the OpenRouter chatroom

使用 max_total_results 来限制一次请求中所有搜索的累计结果数。这能让成本和上下文用量保持可预测:

{
  "type": "openrouter:web_search",
  "parameters": {
    "max_results": 5,
    "max_total_results": 15
  }
}

一旦达到上限,模型会收到一条消息说明已达到限制,而不是再执行一次搜索。

Web Fetch

网页抓取让模型能够从 URL 检索完整页面内容,并支持五种引擎。

引擎工作方式定价
Auto(默认)如果支持则使用原生,否则使用 Exa视情况而定
Native提供商内置的抓取提供商定价
OpenRouter由 OpenRouter 直接进行 HTTP 抓取免费
Exa内容提取并输出干净的 markdown每次抓取 $0.001
Parallel通过 Parallel 的 extract API 进行高质量内容提取每次抓取 $0.001

将 Exa、Parallel 或 OpenRouter 指定为引擎可确保所有模型具有一致的抓取行为,包括能够使用 allowed_domains 和 blocked_domains 限制模型可以抓取哪些 URL。原生提供商的抓取能力各不相同,因此如果你需要这些参数在多个模型间都被遵守,请选择这些引擎之一。

使用 max_content_tokens 来限制模型接收的内容量(适用于会占用你上下文窗口的大型页面):

{
  "type": "openrouter:web_fetch",
  "parameters": {
    "engine": "openrouter",
    "max_content_tokens": 50000,
    "allowed_domains": ["docs.example.com", "api.example.com"],
    "blocked_domains": ["internal.example.com"]
  }
}

从 Web Search 插件迁移

到目前为止,模型只能通过 web search 插件进行搜索,该插件无论模型实际需要什么,每次请求都只执行一次搜索。模型无法决定何时搜索、搜索什么,或者是否搜索。

要迁移,请将请求体中的 plugins 替换为 tools:

之前(插件):

"plugins": [{ "id": "web" }]

之后(服务器工具):

"tools": [{ "type": "openrouter:web_search" }]

服务器工具让模型自行决定何时搜索以及搜索频率。有一点需要注意:服务器工具需要支持工具调用的模型。如果你当前的模型不支持工具,你需要切换到支持工具的模型,或者继续使用插件。

我们创建了一份迁移指南,其中包含完整细节。

来源:OpenRouter Blog · openrouter.ai