使用 WhichModel 用 20 行代码构建 Model Router

发布: (2026年4月10日 GMT+8 22:49)
4 分钟阅读
原文: Dev.to

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 行代码。零维护。始终使用最新定价。

0 浏览
Back to Blog

相关文章

阅读更多 »

讨论:AI 与机器学习类别

超越 RAG:为什么 AI 代理需要自托管的“记忆中心” 大多数使用 LLM 的开发者都遇到了同样的瓶颈:上下文窗口的限制以及“遗忘”……