摘要:模型选择不该写死在配置里,而应该按 task_type、risk_level、context_length 和 latency_budget 做路由。
很多系统接入新模型以后,会犯一个很常见的错:把默认模型直接切到最高档。
这不是工程化,这是偷懒。
按 OpenAI 当前 API pricing 页面,GPT-5.6 Sol 的输出价格是 20 美元 / 100 万 token,Luna 是 1.2 美元 / 100 万 token。同样 100 万输出 token,差约 16.7 倍。
路由字段
ts
type TaskType = 'debug' | 'coding' | 'writing' | 'classify' | 'support'
type RiskLevel = 'low' | 'medium' | 'high'
type ModelRouteInput = {
taskType: TaskType
riskLevel: RiskLevel
contextLength: 'short' | 'medium' | 'long'
latencyBudget: 'realtime' | 'normal' | 'batch'
expectedOutputTokens: number
}
路由策略
ts
function routeModel(input: ModelRouteInput) {
if (input.riskLevel === 'high') return 'reasoning_tier'
if (input.contextLength === 'long') return 'reasoning_tier'
if (input.expectedOutputTokens > 2000 && input.taskType !== 'debug') return 'main_tier'
if (input.taskType === 'debug') return 'reasoning_tier'
if (input.taskType === 'coding') return 'main_tier'
if (input.taskType === 'writing') return 'main_tier'
if (input.taskType === 'classify') return 'light_tier'
if (input.taskType === 'support') return 'light_tier'
return 'main_tier'
}
这里故意不用具体模型名写死。真实系统里,Sol、Terra、Luna 或其他模型名称都应该放在配置里,价格也应该从配置读取,不要写死在业务代码里。
ts
const modelConfig = {
reasoning_tier: { model: 'sol', outputPer1M: 20 },
main_tier: { model: 'terra', outputPer1M: 12 },
light_tier: { model: 'luna', outputPer1M: 1.2 },
}
真实例子
- 线上事故排查:reasoning_tier
- PR 描述和单测:main_tier
- 500 条反馈分类:light_tier
- 普通客服问答:light_tier
- 带日志的客服升级:reasoning_tier
结论
模型选择不是信仰题,是路由题。不要问哪个模型最强,先问这个任务错了以后代价有多大。