"想得久"不等于"答得对"
推理型模型会先输出一段思考再给结论。很多团队一上线就把思考长度拉到最大 ✗,
结果:成本翻几倍、延迟翻几倍,而正确率提升有限 ✔。所以"思考长度"要像输出长度一样设上限与预算 ✔。
一、先分清两类预算
- 输出(含思考)token 预算:直接决定成本 ✔;
- 时限预算:决定 P95 延迟(用户感知)✔。
两者要同时设 ✔:只限 token 可能仍然很慢(思考多但输出短 ✗),只限时间可能截断在半路 ✗。
二、按任务难度分层设定
| 任务 | 建议 |
|---|---|
| 分类/抽取/格式化 | 不需要思考(关掉,直接答)✔ |
| 单跳问答、短改写 | 小额度(例如几百 token)✔ |
| 多跳推理、代码修复 | 中额度 ✔ |
| 复杂规划/数学证明 | 大额度,但必须有超时与兜底 ✔ |
关键:把"需不需要思考"做成可判定的路由(按任务类型/输入长度)✔,而不是全局开关 ✗。
三、思考被截断时怎么办
- 必须能识别(响应里有截断标记 ✔);截断但当成正常结果返回 ✗ 是最危险的 ✗;
- 降级策略:给一个"缩短思考、先给结论"的重试 ✔;
- 如实标注:告诉用户结果可能不完整 ✔(见可解释那篇 ✔)。
四、该观测的四个指标
- 思考 token 的分布(P50/P95,看长尾 ✗);
- 截断率(被上限切掉的比例 ✔);
- 单位成本与 P95 延迟(分任务类型 ✔);
- "思考更长但没更好"的比例(改动是否白花钱 ✔)。
五、三条纪律
- 每次只调一个维度(额度或时限),用同一批样本对照 ✔;
- 结论要写样本量(见小样本那篇 ✔);
- 上限进配置(版本化 ✔),别散在代码里 ✗。
一条判据
如果能证明"把额度从 X 提到 2X,正确率没变、成本翻倍",那就该把上限设回 X ✔。
这件事必须用数据说,不能凭"感觉更稳" ✗。