先看现象。把 temperature 从 0.7 调到 1.5 做创意文案,接口立刻返回 1210,message 只有一句参数非法,没有指出是哪个字段,改回 0.7 就恢复正常。
这类报错背后常见的原因有几处,逐个排除就行。temperature 的合法区间是 0 到 1,超过就报错。另一种情况是top_p 与 temperature 同时修改,掩盖了真正出错的字段。
还有一种情况,整型字段传了字符串,类型校验不通过。
另外,请求体里多了未定义的字段,被当成非法参数。
恢复默认参数,只改一个字段做对照
payload = {'model':'glm-4-flash','messages':msgs,'temperature':0.7}
接着按字段表核对取值范围并重发
curl https://open.bigmodel.cn/api/paas/v4/chat/completions -H "Authorization: Bearer $ZHIPU_KEY" -d '{"model":"glm-4-flash","messages":[{"role":"user","content":"hi"}],"temperature":0.9}'
请求前打印完整报文并做类型断言
assert isinstance(payload['temperature'], float)
等前面都确认过,再把参数校验抽成函数,上线前统一拦截
python -c "print(validate(payload))")
怎么算真的好了,看的是同一批现象。参数改回合法区间后返回 200,响应里不再出现 1210,批量任务能连续跑完。
提醒一点。1210 是笼统的参数错误码,不会告诉你具体字段,排查时一次只改一个参数,否则很容易改错方向还以为是模型问题。拖得越久,排查成本越高,因为现场状态会被后续操作覆盖。