OpenRouter 模型与路由

OpenRouter 模型与路由

Fusion Router

4 分钟阅读

Fusion Router

把多模型评议作为一个模型 slug 来用

Fusion Routeropenrouter/fusion)会给你的模型提供一个多模型评议工具。调用时,一组模型并行回答你的提示词,然后由分析师模型比较它们的回复,并返回结构化分析,涵盖共识、矛盾、覆盖缺口、独特见解和盲点。你的模型再根据该分析写出更好的最终回答。

概述

当单个模型不够用时使用 Fusion:研究问题、专家批评、「比较与对比」类提示词,或任何「答错的代价高于多几次补全」的场景。

工作原理

  1. 你发送 model: "openrouter/fusion" 的请求。路由器把该别名解析为真实模型,并挂上 openrouter:fusion 工具。
  2. 你的模型阅读提示词,并决定该任务是否值得评议。若值得,它会调用 openrouter:fusion。(使用 tool_choice: "required" 可保证一定会调用。)
  3. 模型组(一组模型)并行回答你的提示词,每个都启用 openrouter:web_searchopenrouter:web_fetch
  4. 分析师收到全部模型组回复,并可以使用 openrouter:web_searchopenrouter:web_fetch 进行比较(它不会把回复合并)。它以 JSON 返回结构化分析:全部或大多数模型一致的内容(视为更高置信度的共识)、分歧之处、只有部分模型覆盖的内容、个别模型的独特见解,以及谁都没谈到的盲点。
  5. 你的模型收到分析并写出最终回答。

openrouter:web_searchopenrouter:web_fetch 在模型组和分析师调用上都会启用,因此模型可以在作答和分析时拉取最新来源。

两种用法

{
  "model": "openrouter/fusion",
  "messages": [
    { "role": "user", "content": "碳税最有力的支持和反对论点分别是什么?" }
  ]
}

两者走同一条流水线。模型别名更简单,因为它会自动注入工具,你不必声明。服务端工具形式给你更多控制(选择自己的外层模型,把 fusion 与其他工具组合)。

两种情况下,都由模型决定何时调用 openrouter:fusion。对于不需要评议的提示词,它会直接作答,包括调用你定义的其他工具。加上 tool_choice: "required" 可强制每次请求都走 fusion。

快速预设模型:openrouter/fusion-flash

openrouter/fusion-flash 是单独列出的模型,会以预选的 general-fast 预设运行 fusion 流水线——一组延迟相近、面向快速智能体轮次调优的模型组。当你没有钉死自己的 fusion 配置时,下面两个请求行为相同:

{
  "model": "openrouter/fusion-flash",
  "messages": [{ "role": "user", "content": "..." }]
}

该模型把预设钉为默认值,并在 /api/v1/models 中拥有独立条目,在活动动态中也有独立的用量归因。你显式传入的任何配置都会覆盖:带有自己的 presetanalysis_modelsmodelfusion 插件配置,会覆盖隐含的 general-fast。变体后缀(openrouter/fusion-flash:free)的解析方式与 openrouter/fusion 相同。

快速开始

import { OpenRouter } from '@openrouter/sdk';

const openRouter = new OpenRouter({
  apiKey: '<OPENROUTER_API_KEY>',
});

const completion = await openRouter.chat.send({
  model: 'openrouter/fusion',
  messages: [
    {
      role: 'user',
      content: '梳理碳税正反双方最有力的论点。专家在哪些地方存在分歧?',
    },
  ],
});

console.log(completion.choices[0].message.content);

配置

通过 plugins 数组或 tools 数组覆盖默认的模型组和分析师。两者都是可选的;完全省略时,fusion 使用 Quality 预设的默认值。

model: "openrouter/fusion" 旁传入一个 fusion 插件条目。这与 Pareto Routermin_coding_score 使用的模式相同。

const completion = await openRouter.chat.send({
  model: 'openrouter/fusion',
  plugins: [
    {
      id: 'fusion',
      analysis_models: [
        '~anthropic/claude-opus-latest',
        '~openai/gpt-latest',
        '~google/gemini-pro-latest',
      ],
      model: '~openai/gpt-latest',
    },
  ],
  messages: [
    {
      role: 'user',
      content: '比较 ridge、lasso 和 elastic-net 回归。各自擅长什么?',
    },
  ],
});

工具配置(使用自己的外层模型时)

当你自带模型并把 openrouter:fusion 作为服务端工具加入时,改为通过 tools 数组配置:

const completion = await openRouter.chat.send({
  model: '~anthropic/claude-opus-latest',
  messages: [
    {
      role: 'user',
      content: '比较 ridge、lasso 和 elastic-net 回归。各自擅长什么?',
    },
  ],
  tools: [
    {
      type: 'openrouter:fusion',
      parameters: {
        analysis_models: [
          '~anthropic/claude-opus-latest',
          '~openai/gpt-latest',
          '~google/gemini-pro-latest',
        ],
        model: '~openai/gpt-latest',
      },
    },
  ],
});
字段默认值说明
analysis_modelsQuality 预设(~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 运行。

强制每次请求都走 Fusion

默认由模型决定何时调用 openrouter:fusion。要保证每次请求都运行,请设置 tool_choice: "required"

const completion = await openRouter.chat.send({
  model: 'openrouter/fusion',
  messages: [
    {
      role: 'user',
      content: '比较 ridge、lasso 和 elastic-net 回归。',
    },
  ],
  tool_choice: 'required',
});

因为 openrouter/fusion 只注入一个工具(openrouter:fusion),要求必须进行某次工具调用,实际上就等于强制 fusion。如果你的请求还包含其他工具,模型可能改选其中之一。

响应

响应的 model 字段报告实际处理该请求的具体模型,而不是 openrouter/fusion 别名:

{
  "id": "gen-...",
  "model": "anthropic/claude-opus-4.5",
  "choices": [
    {
      "message": {
        "role": "assistant",
        "content": "..."
      }
    }
  ]
}

要确认某次生成是否经过 Fusion Router,请查看 生成元数据router 字段会报告 openrouter/fusion

{
  "data": {
    "id": "gen-...",
    "model": "anthropic/claude-opus-4.5",
    "router": "openrouter/fusion"
  }
}

费用

Fusion 会在你的正常请求之外再运行 N 次模型组调用 + 1 次分析师调用。使用默认的 3 模型组时,成本大约是同一提示词单次补全的 4–5 倍。成本随模型组规模线性增长。

递归保护

内层 fusion 调用会带上 x-openrouter-fusion-depth 请求头。模型组和分析师模型不能递归调用 openrouter:fusion。插件会拒绝第二次注入该工具,从而把评议限制在单层。