Appearance
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: 可以,但建议先检查生成的请求体是否符合预期,确认模型选择和参数设置正确后再使用。