文本改写脚本用 cohere 4.57 的 co.generate(model='command', prompt=...),升到 5.11 后报 AttributeError: 'Client' object has no attribute 'generate',官方文档里的示例还是老写法。

一开始怀疑是「返回结构从 generations[0].text 变成 message.content[0].text」,查了一圈,方向不对。

排查方向其实有限,先把可能性排一排。5.x 把 generate 合并进了 chat。另一种情况是入参从 prompt 改成 messages 数组。

少数情况下是客户端初始化类从 Client 变成 ClientV2。

上来先确认安装版本

python -c "import cohere;print(cohere.__version__)"

接着改用 chat 接口发一条请求

python -c "import cohere;c=cohere.ClientV2('$COHERE_KEY');r=c.chat(model='command-r',messages=[{'role':'user','content':'hi'}]);print(r.message.content[0].text[:30])"

批量脚本按新结构取文本

python rewrite.py --api chat --model command-r

末了跑样本对比改写质量

python diff_eval.py --old out_old.jsonl --new out_new.jsonl

白天有业务在跑,能验证的部分都压到了晚上做。

当时还开着另一个排查窗口,两边日志对照着看才定位到。

同一份数据我导出了两份,一份留底,一份拿来试。

这类问题以前遇到过,但这次的触发条件和上次不一样。

恢复的判定其实很直接。脚本不再报 AttributeError,输出文件行数与输入一致,抽样十条语义正常。

cohere 从 v4 到 v5 是大改,方法名、参数、返回结构三处都变,升级前先把调用点列全。这类问题最好一次改到位,反复小改反而容易把原因搅混。

作者 9823189