现象:Agent 调一个工具,参数校验不过,它改一版再调,还是不过,来回十几次,token 烧光了。
看日志发现:工具返回的错误信息是 zod 的原始报错,一长串英文堆栈。模型看不懂重点,每次只改一个字段,改完另一个又错。
改法有三层:
- 错误信息人话化
不返回 zod 原文,返回「参数 timeout 必须是数字,你传了字符串 \"30s\"」。直接告诉它错在哪、期望什么。
- 限制重试次数
同一个工具连续失败 3 次,强制中断,把失败详情交回主流程,让人决定。别让它无限试。
- 给正确样例
工具描述里放一个完整的合法参数示例。模型模仿样例的能力很强,有样例之后第一次就对的概率高很多。
改完这三条,那个工具的成功率从三成提到九成。错误信息写给模型看,跟写给人看一样重要。
主楼我这边是反过来的,便宜模型反而更稳,可能是渠道问题。
继续逛逛