고객에겐 "끊김 없이 사용". 사장에겐 "예측 가능한 마진". 두 마리 토끼를 잡는 다단 모델 라우팅 전략과 실제 코드.
| 모델 | 월 3,000질문 | 월 6,000질문 | 월 10,000질문 |
|---|---|---|---|
| Sonnet 4.6 단독 | ₩88,200 | ₩176,400 | ₩294,000 |
| Haiku 4.5 단독 | ₩23,520 | ₩47,040 | ₩78,400 |
| 자동 전환 | ₩88,200 (Sonnet) | ₩111,720 (혼합) | ₩145,000 (혼합) |
매출 ₩220,000 기준 마진:
Phase 1 (월 1~3,000건): Sonnet 4.6 ← 풀 품질
Phase 2 (월 3,001~8,000): Haiku 4.5 ← 자동 전환
Phase 3 (월 8,001건+): 응답 지연 + 추가팩 자동 결제
const PLAN_LIMITS = {
trial: { sonnet: 750, haiku: 1250 },
pro: { sonnet: 3000, haiku: 5000 },
};
async function route(env, userId, plan) {
const sUsed = parseInt(await env.KV.get(`s:${userId}`) || "0");
const hUsed = parseInt(await env.KV.get(`h:${userId}`) || "0");
const limits = PLAN_LIMITS[plan];
if (sUsed < limits.sonnet) {
await env.KV.put(`s:${userId}`, String(sUsed + 1));
return { model: "claude-sonnet-4-6", tier: 1 };
}
if (hUsed < limits.haiku) {
if (sUsed === limits.sonnet) {
// 처음 전환되는 시점에 알림
await notify(env, userId, "📊 Sonnet 한도 도달 — Haiku로 자동 전환 (속도 ↑)");
}
await env.KV.put(`h:${userId}`, String(hUsed + 1));
return { model: "claude-haiku-4-5", tier: 2 };
}
// Phase 3: 추가팩 자동 결제 트리거
await chargeAddon(env, userId);
return { model: "claude-haiku-4-5", tier: 3 };
}
고객은 "한도 도달 → 정지" 대신 "한도 도달 → 더 빠른 모델로 자동 전환"을 경험한다. 오히려 만족도 ↑.
"3,000건째에 알림이 와서 처음엔 '이제 끝났구나' 했는데, 계속 답변이 오더라구요. 오히려 더 빨라진 느낌." — 가상 고객 후기
| 용도 | 1순위 | 2순위 |
|---|---|---|
| FAQ·간단 응답 | Haiku 4.5 | Gemini Flash-Lite |
| 업무 자동화 | Sonnet 4.6 | GPT-4.1 |
| 복잡 추론 | Opus 4.7 | GPT-5 |
| 실시간 검색 결합 | Gemini 3 Pro | GPT-5 |
// 짧은 질문(< 50자) = Haiku
// 코드·논리 질문 = Sonnet
// 분석·추론 = Opus
function pickModel(text) {
if (text.length < 50) return "haiku";
if (/code|분석|왜|이유|어떻게/.test(text)) return "sonnet";
if (text.length > 500) return "opus";
return "sonnet";
}
AI 비즈니스의 핵심은 "최고 모델"이 아니라 "최적 모델 라우팅"이다. 한 모델로 모든 걸 처리하면 비용이 폭발하고, 저가 모델만 쓰면 품질이 떨어진다. 자동 전환은 고객 만족 ↑ + 마진 ↑를 동시에 잡는다.