事情本身不复杂,线索都在日志里。同一个总结提示词在 gpt-4.1 上平均 180 字,在另一个同价位模型上平均 720 字,前端卡片被撑破,按字数估的 token 预算也全超了。

第一反应是「没有按模型分别设 max_tokens」,验证下来不成立。

这类报错背后常见的原因有几处,逐个排除就行。提示词只写了“简要总结”,没有给字数区间。另一种情况是两个模型对 system 指令的服从度不同。

少数情况下是评测只在主力模型上做过,新模型直接上线。

先按模型统计输出长度分布

python -c "import json,collections;print(collections.Counter(r['model'] for r in json.load(open('out.jsonl'))))"

然后在提示词里加明确的字数区间

python -c "print('len_range=120-200')"

接着按模型拆分 max_tokens 配置

python -c "print({'gpt-4.1':400,'other':400})"

双模型各跑 100 条验证长度收敛

python eval_len.py --models gpt-4.1,alt --set sum_100.jsonl

恢复的判定其实很直接。两个模型的输出长度都落在 120 到 220 字之间,前端卡片不再溢出,token 预算的偏差控制在 15% 以内。

提醒一点。换模型时最先变的往往不是准确率而是啰嗦程度,字数区间和 max_tokens 要按模型分别配,别指望一套参数通用。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。

作者 9823189