事情本身不复杂,线索都在日志里。调 deepseek-reasoner 做数学题,只读了 message.content,日志里思考过程完全看不到,想分析模型在哪一步走偏时没有任何线索。
第一反应是「部分网关会丢弃非标准字段」,验证下来不成立。
这类报错背后常见的原因有几处,逐个排除就行。响应体里思考内容在 reasoning_content 字段。也可能是流式增量里两个字段分开推送,只拼了 content。
另外,历史消息里回填思考内容会导致下一轮报错。
动手时先看响应体里有哪些字段
python -c "import json;d=json.load(open('r.json'));print(list(d['choices'][0]['message'].keys()))"
流式时分别累加两个字段
python -c "print({'delta_keys':['content','reasoning_content']})"
返回 400 时确认历史里是否带了思考内容
python run_chat.py --drop-reasoning-in-history
末了把思考过程单独落盘便于事后分析
python chat.py --save-reasoning traces/reasoning.jsonl
怎么算真的好了,看的是同一批现象。日志里能看到完整的思考过程,正文答案不受影响,多轮对话不再因为回填思考内容报错。
思考内容只用于排查和展示,回填到下一轮消息里通常会被拒,落盘留档即可,不要塞回历史。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。
