给法的影响是 1597 倍,模型档位的影响是 10 倍——先想清楚给什么,再谈用哪个。 判据是「容错度」,不是「重要性」:错了没成本的用小模型,错了要返工的用大模型。 别用最贵的模型去干最便宜的活,也别用最便宜的模型去动数据库结构。
上一篇讲完流程。这一篇讲一个几乎每个人都会问的问题:用哪个模型。 这个问题有个陷阱:它听起来像「选最强的」, 但实际上它是个成本问题——强模型更贵、更慢,而大部分任务用不着那么强。 这一篇的 Demo 量了一个反直觉的结论: 同一件事,整个仓库全塞要 28749 token,只给那个函数要 18 token——差 1597 倍。 而大模型和小模型的价差,大概 10 倍。 所以「怎么给」比「用哪个」重要两个数量级。
一、三档模型各自的取舍
厂商一般给两三档,差别在三个维度上:能力、速度、价格。 这三者是互斥的——没有「又强又快又便宜」的。
| 档位 | 强在哪 | 弱在哪 | 什么时候用 |
|---|---|---|---|
| 大(旗舰) | 长链推理、跨文件理解 | 慢、贵 | 改结构、跨模块 |
| 中 | 日常改写、单文件任务 | 复杂推理会绕 | 大部分日常 |
| 小(快) | 快、便宜、格式类任务稳 | 遇到歧义就崩 | 改名、补注释、格式化 |
注意「小模型遇到歧义就崩」这一条。 它不是「笨」,是「不敢猜」——小模型更容易死守字面,大模型更敢按意图推断。 所以「任务描述写得含糊」时,大模型反而更省事;「任务描述写得极清楚」时,小模型完全够用。 这也给出一个反直觉的用法: 越是懒得写清楚,越要用贵的模型——因为你把「想清楚」的成本转移给它了。 而这个成本最终会以「返工」的形式还回来。
二、什么任务值得上大模型
判据不是「这个任务重要不重要」,是「错了能不能便宜地改回来」。
| 任务 | 错了的代价 | 建议 |
|---|---|---|
| 改数据库结构 | 数据丢了找不回 | 大模型 |
| 跨五个文件的一致改动 | 漏一处就断链,要全量排查 | 大模型 |
| 重构一个函数的内部实现 | 测试能立刻发现 | 中/小 |
| 改一个格式、补一个注释 | 改错了肉眼可见 | 小 |
「错了能不能便宜地改回来」这个判据,比「重要性」好用得多。 因为「重要」是个模糊词——首页按钮的颜色很重要,但改错了改回来只要一分钟; 数据库迁移看着不显眼,改错了可能丢一周的数据。 还有一类任务适合大模型:探索性的。 「这个报错可能是什么原因」——它要给出几个假设,然后逐个验证。 小模型在这种任务上容易「只给一个答案」,而那个答案往往是错的。
三、成本怎么估
成本 = token 数 × 单价。 所以估成本其实是估两件事:这次要读多少、要写多少。 读的部分是大头,而且它经常是「不必要的浪费」。 Demo 里量过:改一个函数,整个仓库全塞 28749 token,只给目标文件 1437,只给那个函数 18。 差 1597 倍。 写的那部分(它生成的代码)反而稳定——改一个函数大概几百 token,改十个文件才上千。 所以「怎么控制成本」的答案几乎总是同一个:控制读进去的东西。 一个实用的估算办法: 看文件行数,一行大概 10 到 15 个 token(代码比中文密)。 一个 300 行的文件约 3000 token;二十个文件就是 6 万。 心里有这个量级,你就知道「全塞进去」是什么概念了。
四、动手 Demo:同一件事,三种给法,token 差多少倍
这个 Demo 造一个二十个文件的中型仓库,然后问同一件事:改其中一个函数。 三种给法:整个仓库全塞、只给目标文件、只给那个函数。 逐个数 token。 然后用一个假设的价差(大模型 10 倍价)算相对成本—— 价格只做相对比较,不给绝对值,因为具体价格随时会变。 结论不依赖具体价格:给法的影响是 1597 倍,档位的影响是 10 倍。
# 造 20 个文件,每个 76 个函数
for i in range(1, 21):
lines = ['"""模块 %02d"""' % i, ""]
for j in range(1, 76):
lines += ["def m%02d_f%02d(x):" % (i, j),
" return x + %d" % j, ""]
put(base, "mod%02d.py" % i, "\n".join(lines))
# 三种给法
whole = "".join(get(base, f) for f in all_files) # 28749 token
one_file = get(base, "mod07.py") # 1437 token
snippet = 只取 m07_f03 那四行 # 18 token
实跑输出:
--------------------------------------------------------------------
同一件事,三种给法,token 差多少倍
--------------------------------------------------------------------
① 造一个二十个文件的中型仓库
--------------------------------------------------------------------
20 个文件,共 6040 行、82380 字符。
② 任务:把 mod07.py 里的 m07_f03 改成乘 2
--------------------------------------------------------------------
③ 三种给法,各要多少 token
--------------------------------------------------------------------
| 给法 | 内容量 | token | 倍数 |
|---|---|---:|---:|
| 整个仓库全塞 | 6040 行 | 28749 | 1597.2 倍 |
| 只给目标文件 | 302 行 | 1437 | 79.8 倍 |
| 只给那个函数 | 4 行 | 18 | 1.0 倍 |
三种给法,最大和最小差 1597 倍。
! 这不是「省钱技巧」,是「注意力问题」——塞进去的无关内容越多,它越容易抓错重点。
④ 换成钱:大模型和小模型怎么选
--------------------------------------------------------------------
| 组合 | token | 相对成本(大模型 10 倍价) |
|---|---:|---:|
| 大模型 + 全塞 | 28749 | 287.49 |
| 大模型 + 只给函数 | 18 | 0.18 |
| 小模型 + 全塞 | 28749 | 28.75 |
| 小模型 + 只给函数 | 18 | 0.02 |
注意最便宜的那一格不是「小模型 + 全塞」,是「小模型 + 只给函数」。
给法的影响(1597 倍)比模型档位的影响(10 倍)还大。
! 所以「选哪个模型」这个问题,应该排在「给它什么」后面。先想清楚给什么,再谈用哪个。
⑤ 那什么时候值得上大模型
--------------------------------------------------------------------
| 任务特征 | 建议 |
|---|---|
| 一次做错就要重来(改数据库结构) | 大模型 |
| 要跨五个以上文件推理 | 大模型 |
| 改一个格式、补一个注释 | 小模型 |
| 已经写死了边界,只差执行 | 小模型 |
判据是「容错度」,不是「重要性」。错了没成本的,用小模型;错了要返工的,用大模型。
28749 : 1437 : 18。 最大和最小差 1597 倍。 这个数字大到有点不真实,但它就是「全塞」的真相——二十个文件、六千行,一次全读进去。 换成钱那一节,四格里最便宜的不是「小模型 + 全塞」,是「小模型 + 只给函数」。 而「大模型 + 只给函数」比「小模型 + 全塞」还便宜。 这一格值得盯着看一会儿。 它推翻了一个很常见的直觉:省钱靠换小模型。 实际上省钱靠缩小范围——范围缩小 1597 倍,比换模型省那 10 倍狠得多。 当然「只给那个函数」不是永远可行。 要它理解上下文、要它判断影响面的时候,必须给够。 但「给够」的标准是「够它判断」,不是「全给它看」。 这两个标准差得很远。
30 秒实验
- 算一算你最近一次任务读进去多少。 文件行数 × 12 token 是个粗估——如果超过三万,说明你给多了。
- 把「全塞」改一次「只给相关文件」,看结果差多少。 如果结果一样,说明以前那些多给的都是浪费。
- 下一件要动数据库的事,用最贵的模型。 下一件改注释的事,用最便宜的。 感受一下两者的差别在哪儿。
常见误区
- 「贵的就是好的,无脑用最贵的。」 贵模型在「格式类任务」上不比便宜的好——因为它更爱「发挥」,而格式类任务要的是「照做」。 结果可能是:更贵、更慢、还不准。
- 「省钱靠换小模型。」 Demo 量出来的是:省钱靠缩小范围。 范围缩小 1597 倍,模型档位只差 10 倍。 顺序搞反了,省不了多少。
- 「模型选择是一次性决定,定了就不改。」 不同任务该用不同档位。 固定用一档,等于把所有任务都按最贵或最差的那个配。
自测三问(点开对答案)
1. 为什么说「怎么给」比「用哪个模型」重要? —— **因为给法的影响是 1597 倍,模型档位只有 10 倍。** **整个仓库全塞 28749 token,只给那个函数 18 token**—— **缩小范围的收益比换模型大两个数量级。** 2. 什么任务值得上大模型?判据是什么? —— **判据是「错了能不能便宜地改回来」,不是「任务重不重要」。** **改数据库结构、跨五个文件的一致改动、探索性分析**——上大模型。**改格式、补注释**——用小模型。 3. 为什么「任务描述含糊」时反而要用大模型? —— **因为含糊意味着要它替你「猜意图」,而小模型更死守字面。** **用大模型是把「想清楚」的成本转移给它**—— **但这个成本最终会以返工的形式还回来,所以最好还是自己写清楚。**下一篇 3.5 讲安全边界:有三类任务,不管模型多强都不该交出去。
- ☐ (本篇完,下一篇 3.5 安全边界:哪些任务不该交给 Codex)