大模型怎么选:从任务类型出发的选型方法
先说结论:排行榜解决不了选型问题
榜单衡量的是「平均能力」,而你的业务只关心「这个任务能不能稳定做对,每千次调用花多少钱」。两件事没有必然关系——一个总分很低的模型,可能在你的任务上更稳、更便宜、延迟更低。
真正决定选型的是四个变量:
| 变量 | 为什么关键 | 怎么量化 |
|---|---|---|
| 任务类型 | 决定能力下限(推理 / 抽取 / 生成 / 代码 / 多模态) | 抽 30~50 条真实样本,人工标注期望输出 |
| 成本 | 高频调用时会吃掉全部毛利 | 每次调用 token × 单价 × 日调用量 |
| 延迟 | 直接决定用户是否愿意等 | P50 / P95 首 token 延迟与总耗时 |
| 合规 | 决定「能不能用」,不是「好不好用」 | 数据是否需出境、是否可私有化 |
顺序不能反:先筛合规,再筛能力,最后压成本和延迟。反过来做,经常是选了便宜模型、上线前才发现数据不能出境。
第一步:把任务拆成四类
不同任务类型的瓶颈完全不同,用同一套指标评估是浪费。
1. 结构化抽取(最高性价比)
从文本里抽出字段、分类打标、意图识别。这类任务不需要强推理,需要的是稳定遵循指令和严格输出格式。
- 关键指标:格式合规率(能不能稳定输出合法 JSON)、字段准确率
- 常见误区:上最贵的模型。抽取任务上,小模型 + 好的 schema 约束往往就够
- 必做:
response_format/ JSON mode,加校验失败重试(见下文第 5 篇)
2. 长文理解(最容易被上下文长度误导)
合同比对、文档问答、会议纪要。厂商都在宣传「支持 1M 上下文」,但放得下不等于读得懂。
- 关键指标:关键信息召回率(该找到的找没找到)、长文中间位置的准确率
- 必做:做一个「大海捞针」测试——把关键句子埋在第 3 万字的位置,看能不能答对
- 结论:如果召回率不达标,别怪模型,直接上 RAG(见第 5 篇)
3. 代码生成(差异最明显)
代码补全、单测生成、重构。这类任务在不同模型间差距最大,也最容易判断——跑测试就行,不需要人来打分。
- 关键指标:测试通过率、首次可运行率
- 优势:可以自动化评测,构建一条 CI 流水线就能持续对比
4. 开放生成(最难评估)
文案、摘要、客服话术。没有唯一正确答案,主观性强。
- 关键指标:人工盲评胜率(A/B 两两比较,比打分靠谱)
- 必做:至少要 100 条样本做盲评,20 条样本得出的结论基本是噪声
第二步:五个必问问题(能问倒一堆方案)
选型评审时,这五个问题能筛掉大部分拍脑袋的决定:
- P95 延迟是多少? —— 只看平均值会被长尾坑死。用户能忍受 2 秒,忍不了偶尔 30 秒。
- 失败时返回什么? —— 是报错、是超时、还是返回一个看起来正常的幻觉?这决定你要不要做兜底。
- 超长输入怎么计费? —— 有些厂商输入单价低但输出高,有些对长文本有阶梯价,算错了成本预估会差 3 倍。
- 有没有速率限制(RPM/TPM)? —— 免费额度和正式配额的限流差别巨大,压测时才发现就打乱了上线节奏。
- 模型版本会灰度更新吗? —— 如果厂商随时替换底层模型,你今天测好的效果明天可能就变了。要问清是否有版本锁定。
第三步:一套能落地的评分表
别用「感觉不错」做决策。把候选模型(3~5 个就够)拉进同一张表,每项 1~5 分加权:
总分 = 合规(一票否决) × [ 0.35×任务准确率 + 0.25×稳定性
+ 0.20×成本 + 0.10×延迟 + 0.10×生态 ]
- 任务准确率:自己那 30~50 条样本上的通过率
- 稳定性:同一输入跑 5 次,输出一致的次数(抽取任务尤其重要)
- 成本:按你的真实调用量算出的月账单,不是单价
- 延迟:P95,不是平均
- 生态:SDK 质量、文档、是否有 OpenAI 兼容(决定迁移成本)
权重要按业务改。客服场景延迟权重应该更高;离线批处理场景成本权重更高。
第四步:别忽略「换模型的成本」
一个常被低估的隐性成本:prompt 是模型绑定的。
你在 A 模型上调好的 prompt,换到 B 模型上经常直接掉点——因为不同模型对指令的敏感度、对 few-shot 的依赖、对格式的遵循程度都不一样。所以:
- 选型时不要只测一个模型,至少留一个备胎跑通链路
- prompt 里不要把话说过死(比如写死「你必须输出以下格式」而不用 schema 约束)
- 关键路径上保留抽象层(统一走 OpenAI 兼容接口,见专栏的接入方式部分)
# 统一入口:换厂商只改 base_url 与 model
client = OpenAI(api_key=KEY, base_url=BASE_URL)
resp = client.chat.completions.create(model=MODEL, messages=msgs)
这样下次迁移,改动面从「重写所有 prompt」缩小到「改两个常量」。
一张图总结选型流程
合规检查(能否出境 / 能否私有化)
↓
任务分类(抽取 / 长文 / 代码 / 生成)
↓
跑真实样本(30~50 条,人工标注)
↓
算三项硬指标:准确率、P95 延迟、真实月成本
↓
留备胎 + 抽象层 → 上线
常见误区清单
- ❌ 只看榜单选模型 → 榜单测的不是你的任务
- ❌ 用 20 条样本下结论 → 样本量不足,结论是噪声
- ❌ 只算单价不算用量 → 输出 token 通常是输入的数倍
- ❌ 认为「上下文长 = 长文能力强」→ 要自己测召回率
- ❌ 不留备胎 → 单一厂商限流或涨价时被动
- ✅ 先合规、再能力、后成本 → 顺序错了会返工