使用 WhichModel 用 20 行代码构建 Model Router
Source: Dev.to
用 WhichModel 用 20 行代码构建模型路由器
你有一个调用 LLM 的 AI 代理。它总是使用同一个模型。你希望它能够为每个任务挑选合适的模型——在成本、能力和质量之间进行优化——而无需自己维护价格数据库。
下面演示如何使用 WhichModel 和 MCP TypeScript SDK 用 20 行代码构建模型路由器。
代码
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
const client = new Client({ name: "router", version: "1.0" });
await client.connect(
new StreamableHTTPClientTransport(new URL("https://whichmodel.dev/mcp"))
);
async function pickModel(taskType: string, complexity: string, budget?: number) {
const result = await client.callTool({
name: "recommend_model",
arguments: {
task_type: taskType,
complexity,
...(budget && { budget_per_call: budget }),
},
});
return JSON.parse(result.content[0].text);
}
// 使用它
const rec = await pickModel("code_generation", "high", 0.01);
console.log(rec.recommended.model); // e.g. "anthropic/claude-sonnet-4"
console.log(rec.budget_option.model); // e.g. "google/gemini-2.5-flash"
console.log(rec.estimated_cost); // e.g. "$0.0034"就是这么简单。你的代理现在会根据实时定价数据为每一次调用挑选最优模型。
返回结果
recommend_model 工具返回:
{
"recommended": {
"model": "anthropic/claude-sonnet-4",
"provider": "anthropic",
"estimated_cost": "$0.0034",
"reasoning": "Best quality-to-cost ratio for high-complexity code generation"
},
"alternative": {
"model": "openai/gpt-4.1",
"estimated_cost": "$0.0028"
},
"budget_option": {
"model": "google/gemini-2.5-flash",
"estimated_cost": "$0.0004"
}
}提供了三种选项:最佳选择、备选方案以及预算方案。你的代理可以根据任务自行决定使用哪一个。
添加预算上限
想要强制支出上限吗?只需传入预算:
// 每次调用不超过 $0.002
const cheap = await pickModel("summarisation", "low", 0.002);WhichModel 会在你的预算范围内寻找最佳模型。如果没有合适的模型,它会告诉你。
大规模对比
在为高并发流水线确定模型之前,先对比成本:
const comparison = await client.callTool({
name: "compare_models",
arguments: {
models: [
"anthropic/claude-sonnet-4",
"openai/gpt-4.1-mini",
"google/gemini-2.5-flash"
],
volume: {
calls_per_day: 10000,
avg_input_tokens: 1000,
avg_output_tokens: 500
}
}
});这会为每个模型提供每日和每月的成本预测——无需电子表格。
为什么不直接硬编码?
- 价格每周会变动多次。
- 新模型不断发布——仅上个月就出现了 5 款比现有模型更便宜的新模型。
- 不同任务需要不同模型——一个 $15/M‑token 的模型对分类任务来说是极大的浪费。
- 在 10 K 次调用/天的规模下,模型选择会影响每月 $6 000+ 的成本。
WhichModel 会跟踪所有这些信息并每 4 小时更新一次。你的路由器无需代码更改即可保持最新。
入门
{
"mcpServers": {
"whichmodel": {
"url": "https://whichmodel.dev/mcp"
}
}
}GitHub: Which-Model/whichmodel-mcp
Website: whichmodel.dev
License: MIT — 免费使用,无需 API 密钥
20 行代码。零维护。始终使用最新定价。