Skip to content

Body Builder(openrouter/bodybuilder)将自然语言描述转换为可执行的 OpenRouter API 请求 JSON,让你无需手动构造多个请求体即可跨模型并行运行同一任务。本身免费使用,执行生成的请求按各模型标准价格计费。

用法

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

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

// 第一步:生成请求体
const completion = await openRouter.chat.send({
  model: 'openrouter/bodybuilder',
  messages: [
    { role: 'user', content: 'Count to 10 using Claude Sonnet and GPT-5' },
  ],
});

// 解析生成的请求列表
const { requests } = JSON.parse(completion.choices[0].message.content);

响应格式

Body Builder 返回包含请求数组的 JSON:

json
{
  "requests": [
    {
      "model": "anthropic/claude-sonnet-4.5",
      "messages": [{ "role": "user", "content": "Count to 10" }]
    },
    {
      "model": "openai/gpt-5.1",
      "messages": [{ "role": "user", "content": "Count to 10" }]
    }
  ]
}

并行执行生成的请求

typescript
// 生成请求体
const builderResponse = await openRouter.chat.send({
  model: 'openrouter/bodybuilder',
  messages: [{ role: 'user', content: 'Explain gravity using Gemini and Claude' }],
});

const { requests } = JSON.parse(builderResponse.choices[0].message.content);

// 并行执行所有请求
const results = await Promise.all(
  requests.map((req) => openRouter.chat.send(req))
);

// 处理结果
results.forEach((result, i) => {
  console.log(`Model: ${requests[i].model}`);
  console.log(`Response: ${result.choices[0].message.content}\n`);
});

模型引用方式

Body Builder 理解常见的模型别名,会自动映射到最新版本:

描述解析为
"Claude Sonnet"anthropic/claude-sonnet-4.5
"GPT-5"openai/gpt-5.1
"Gemini"google/gemini-3.1-pro-preview
"DeepSeek"deepseek/deepseek-v3.2

模型版本会随新版发布更新,在 Models 页面查看最新 slug。

计费

  • 生成请求体:免费
  • 执行生成的请求:按各模型标准价格计费

适用场景

  • 模型基准测试:同一任务跨多模型对比
  • 可靠性保障:关键应用同时发给多个提供商
  • A/B 测试:找出最适合你用例的模型
  • 模型探索:快速了解不同模型对同一问题的处理方式

常见问题

Q: Body Builder 支持系统提示词吗?

A: 支持,你输入中的 system 消息会被保留并传递到所有生成的请求中。

Q: 可以指定生成多少个请求吗?

A: 可以在自然语言描述中说明,如"用三个不同的 Anthropic 模型"。Body Builder 会根据描述生成相应数量的请求。

Q: 生成的请求可以直接用于生产环境吗?

A: 可以,但建议先检查生成的请求体是否符合预期,确认模型选择和参数设置正确后再使用。