OpenRouter 平台功能

OpenRouter 平台功能

Fusion

3 分钟阅读

Fusion

作为服务端工具的多模型合议

Beta

测试版(Beta)

服务端工具目前处于测试阶段。API 与行为可能会变更。

openrouter:fusion 服务端工具让任意模型都能进行多模型合议。当你的模型判断某条提示词能从多种视角中获益时,会调用此工具——一组评审模型并行作答,分析模型比较它们的回复,结构化分析再返回给你的模型以给出最终答案。

这与 openrouter/fusion 模型别名fusion 插件 背后的流水线相同。直接使用服务端工具能获得最大控制权:选择你自己的外层模型、与其他工具组合,并分别配置评审组和分析模型。

快速开始

const response = await fetch('https://openrouter.ai/api/v1/chat/completions', {
  method: 'POST',
  headers: {
    Authorization: 'Bearer <OPENROUTER_API_KEY>',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    model: '~anthropic/claude-opus-latest',
    messages: [
      {
        role: 'user',
        content: '梳理支持和反对碳税的最有力论据。专家在哪些地方存在分歧?',
      },
    ],
    tools: [
      { type: 'openrouter:fusion' },
    ],
  }),
});

const data = await response.json();
console.log(data.choices[0].message.content);
Chat Completions 支持目前处于测试阶段

Fusion 在 tools 数组中目前已可用于 /chat/completions,但该路径的延迟高于 Responses API。若对延迟敏感,请将同样的 tools: [{ type: "openrouter:fusion" }] 请求体改发到 Responses API。

模型何时会调用它?

该工具的描述会引导模型仅在任务确实能从多种视角中获益时调用 openrouter:fusion——研究类问题、跨领域点评、「比较与对比」类提示词,或任何出错代价很高的场景。简单的战术性提示词不会触发它。

若要在每次请求上都强制使用 Fusion,设置 tool_choice: "required"。参见在每次请求上强制使用 Fusion

参数

在工具条目上传入可选的 parameters 对象以覆盖默认值:

{
  "tools": [
    {
      "type": "openrouter:fusion",
      "parameters": {
        "analysis_models": [
          "~google/gemini-flash-latest",
          "deepseek/deepseek-v3.2",
          "~moonshotai/kimi-latest"
        ],
        "model": "~anthropic/claude-opus-latest"
      }
    }
  ]
}
字段默认值说明
analysis_models质量预设(~anthropic/claude-opus-latest~openai/gpt-latest~google/gemini-pro-latest组成评审组的模型。每个模型并行运行,并启用 openrouter:web_searchopenrouter:web_fetch。允许 1–8 个模型。
model你的外层模型生成结构化分析 JSON 的分析模型。默认为处理你请求的同一模型。
max_tool_calls4每个评审组模型和分析模型在其 openrouter:web_search / openrouter:web_fetch 循环中最多可采取的工具调用步数,之后必须返回文本。范围为 1–16。
max_completion_tokens16000每次内部评审组/分析模型调用的最大输出 Token 数(含推理)。避免重度推理模型在产出可见文本前耗尽预算。
reasoning服务提供商默认值转发给评审组和分析模型调用的推理配置——一个可包含可选 effortmax_tokens 的对象。
temperature服务提供商默认值转发给评审组调用的温度(02)。分析模型始终以温度 0 运行。

工具返回什么

成功时,工具结果包含结构化分析和评审组的原始回复:

{
  "status": "ok",
  "analysis": {
    "consensus": ["全部或大多数评审组模型达成一致的观点"],
    "contradictions": [
      { "topic": "...", "stances": [{ "model": "...", "stance": "..." }] }
    ],
    "partial_coverage": [
      { "models": ["..."], "point": "仅部分模型覆盖了这一点" }
    ],
    "unique_insights": [
      { "model": "...", "insight": "仅有一个模型提出的见解" }
    ],
    "blind_spots": ["没有任何评审组模型涉及的主题"]
  },
  "responses": [
    { "model": "anthropic/claude-opus-4.5", "content": "..." },
    { "model": "openai/gpt-4.1", "content": "..." },
    { "model": "google/gemini-2.5-pro", "content": "..." }
  ]
}

当部分评审组模型出错但至少有一个成功时,结果仍为 status: "ok",并额外附带 failed_models 数组,说明哪些失败以及原因。

分析模型降级

评审组成功但分析模型失败——上游错误、空补全,或输出不是有效的分析 JSON——该工具不会报错。它会返回 status: "ok",附带评审组的原始 responses,并直接省略 analysis。你的模型仍可根据评审组回复撰写最终答案:

{
  "status": "ok",
  "responses": [
    { "model": "anthropic/claude-opus-4.5", "content": "..." }
  ]
}

硬失败

仅当工具无法产生任何有用输出时,才会返回 status: "error"。此时会包含带类型的 failure_reason

{
  "status": "error",
  "error": "all panel models failed",
  "failure_reason": "all_panels_failed"
}
原因含义
all_panels_failed每个评审组模型都返回了错误。
insufficient_credits每个评审组模型都失败了,且至少有一个是因为额度不足。
rate_limited每个评审组模型都失败了,且至少有一个是因为触发了速率限制。
fusion_invocation_capped同一轮中 Fusion 此前已被调用;第二次调用会被拒绝。
unexpected_error意外错误中断了此次 Fusion 运行。

每当 Fusion 失败或降级时,调用方模型都可以回退为不依赖该分析直接作答。

Web 工具

openrouter:web_searchopenrouter:web_fetch 会在评审组分析模型的调用上同时启用,因此模型可以在作答和分析时拉取最新来源。分析模型比较评审组回复,而不是简单合并:它将全部或大多数模型同意的内容视为更高置信度的共识,呈现矛盾,保留个别模型的独特见解,并标出它们都未涉及的盲点。外层模型根据该分析撰写最终答案——因此结果不是简单的多数投票。

递归保护

内部 Fusion 调用会携带 x-openrouter-fusion-depth 请求头。评审组和分析模型不能递归调用 openrouter:fusion——插件会拒绝再次注入该工具,从而将合议限制在单层。