现场是这样的。照旧文档写 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,签名里不再出现旧参数名。

这里还有个坑。接口改名通常伴随消息结构变化,只改参数名不改结构还会报下一次。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。

作者 9823189