现场是这样的。照旧文档写 client.messages.create(max_tokens_to_sample=1024),anthropic 0.34 报 TypeError: create got an unexpected keyword argument max_tokens_to_sample。
中间走过弯路,把「示例代码取自更早版本的文档」当成主因,改完现象没变。
这类报错背后常见的原因有几处,逐个排除就行。参数名在新版改为 max_tokens;旧补全接口与新消息接口混用;类型检查拦不住运行期关键字错误。
动手时先看版本与函数签名
python -c "import anthropic,inspect;print(anthropic.__version__);print(inspect.signature(anthropic.Anthropic().messages.create))"
然后把参数名改成 max_tokens
python patch_call.py --old max_tokens_to_sample --new max_tokens
系统提示挪到 system 字段
python patch_call.py --move-system
回归三条基础用例验证输出
python smoke.py --cases 3
命令输出我都留了记录,免得改完记不清原来的值。
改之前先确认了最近有没有人动过配置,避免白查一遍。
这次没动代码,只在配置和运行环境上找原因。
隔了一天再看,现象没变,说明不是偶发。
怎么算真的好了,看的是同一批现象。调用返回 200 且有正常 content,签名里不再出现旧参数名。
这里还有个坑。接口改名通常伴随消息结构变化,只改参数名不改结构还会报下一次。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。
