事情本身不复杂,线索都在日志里。同一个总结提示词在 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 要按模型分别配,别指望一套参数通用。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。
