WhichModel을 사용해 20줄로 모델 라우터 만들기

발행: (2026년 4월 10일 오후 11:49 GMT+9)
4 분 소요
원문: Dev.to

Source: Dev.to

WhichModel으로 20줄만에 모델 라우터 만들기

AI 에이전트가 LLM을 호출합니다. 항상 같은 모델을 사용하죠. 비용, 성능, 품질을 최적화하면서 작업마다 적절한 모델을 선택하도록 하고 싶지만, 직접 가격 데이터베이스를 관리하고 싶지는 않으실 겁니다.

다음은 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);
}

// Use it
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 도구는 다음과 같은 JSON을 반환합니다:

{
  "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 & Machine Learning 카테고리

RAG를 넘어서: AI 에이전트가 자체 호스팅 'Memory Hub'가 필요한 이유 대부분의 개발자들이 LLM을 다룰 때 같은 벽에 부딪히고 있습니다: 컨텍스트 윈도우 제한과 “forg…'.