Agent 工具调用报错怎么处理:错误分类与重试策略设计提示词(哪些重试、哪些换做法、哪些直接上报,报错信息怎么写)
给智能体接了一批工具,发现它遇到报错要么原样反复重试、要么直接放弃、要么编一个结果继续往下走时用:把工具清单和常见报错交给 AI,它把错误分成几类并分别规定处理方式,改写报错信息让模型看得懂下一步该做什么,还会指出哪些操作重试会造成重复扣款、重复发送这类副作用。
通用大模型 对话模型通用
【角色】你是做过多个智能体工具层的后端工程师。你的经验是:智能体怎么应对失败,一半取决于提示词,一半取决于工具返回的报错写得好不好。 【输入】 - 工具清单(名称、作用、是否有副作用):[工具清单] - 实际遇到的报错示例(原文):[报错示例] - 智能体目前遇到报错时的表现:[当前表现] - 哪些操作重复执行会出问题(如创建订单、发送消息、扣费):[不可重复的操作] - 程序层是否已有自动重试,以及规则:[程序层重试情况] 【任务】 1. 错误分类:把我给的报错示例归类,并补充每类的识别特征—— - 暂时性故障(超时、限流、服务暂时不可用); - 输入错误(参数缺失、格式不对、取值超出范围); - 前提不成立(对象不存在、状态不允许、版本冲突); - 权限与认证问题; - 结果不确定(请求已发出但不知道是否成功); - 工具自身缺陷或环境故障。 2. 为每一类规定处理方式,写成规则表:由谁处理(程序自动重试、智能体自行调整、上报给人)、最多尝试几次、两次之间做什么(等待、修改参数、先查询当前状态)、什么时候放弃。 3. 重点处理「不可重复的操作」: - 这些操作失败或结果不确定时,禁止直接重试,必须先查询是否已经生效; - 建议为它们增加幂等标识或「先查后做」的配套查询工具; - 分清程序层重试和智能体重试的责任,避免两层叠加后重复执行很多次。 4. 改写报错信息:对每条示例报错,给出改写后的版本,要求包含——发生了什么、是否已产生影响、是否可以重试、建议的下一步、需要的话给出正确的参数示例。去掉对模型没用的堆栈和内部代号,但保留用于排查的请求标识。 5. 写一段放进系统提示词的「遇到工具报错时」规则,要点包括:先读完报错再行动;不得在工具失败后编造工具结果或假装成功;同样的调用不改变任何东西就不要再发;绕过失败的做法如果会改变任务范围或降低安全性,要先问人;最终汇报里如实列出失败过的步骤。 6. 给出 5–6 个测试场景(每类错误至少一个,含一次「结果不确定」的写操作),写明期望的智能体行为。 【约束】 - 不假设具体的状态码或错误码含义超出我给的示例;需要时写「请对照该服务的文档」。 - 规则要能执行:凡是写「适当重试」的地方,都换成具体次数和条件。 【输出格式】错误分类表 → 处理规则表 → 不可重复操作的专门规则 → 报错改写对照 → 系统提示词片段 → 测试场景。
高亮处换成你自己的内容:[工具清单]、[报错示例]、[当前表现]、[不可重复的操作]、[程序层重试情况]
ChatGPT Plus 充值
已被复制 0 次
使用说明
怎么填变量:[报错示例] 直接贴工具返回给模型的原文,哪怕只是一行「Error: 400」,这正是要改进的对象。[不可重复的操作] 要认真列,凡是「执行两次会多扣一次钱、多发一条消息、多建一条记录」的都算。[程序层重试情况] 很多 SDK 自带重试,如果不说明,模型设计的规则可能与它叠加。
常见失败与调整:
- 报错只返回「失败」两个字,模型只能瞎猜。按第 4 步改写,尤其要告诉它「能不能重试」和「下一步建议」。
- 写操作超时后模型立刻重发,结果创建了两条记录。把这类操作归入结果不确定,规定先查询。
- 工具失败后,模型在回复里写得好像成功了一样。把「不得编造工具结果」写进规则,并在测试场景里专门验证。
追问:「把处理规则表改成我可以直接实现的中间件逻辑说明」「这些工具里哪几个最值得先加幂等标识,按风险排序」。工具本身的名称、参数和说明怎么写,可以参考站内的工具定义提示词。
示例输出
示例,仅供参考(虚构:能查询与创建工单、发送通知的智能体)
| 错误类别 | 识别特征 | 谁处理 | 次数与动作 | 放弃条件 |
|---|---|---|---|---|
| 暂时性故障(读操作) | 超时、限流提示 | 程序自动重试 | 最多 3 次,逐次加长等待 | 仍失败则把报错交给智能体,由它上报 |
| 输入错误 | 提示某参数无效 | 智能体自行调整 | 按报错修改参数后重试 1 次 | 第二次仍报同样的错则上报 |
| 结果不确定(创建工单超时) | 请求已发出,未收到回应 | 智能体 | 不重发;先用查询工具按标题和时间查是否已创建 | 查询也失败则上报,并说明可能已创建 |
| 权限问题 | 提示无权访问 | 上报给人 | 不重试 | 立即 |
报错改写对照
- 改写前:
Error: 400 Bad Request - 改写后:
创建失败,未产生任何记录。原因:priority 的取值必须是 low、normal、high 之一,收到的是 "urgent"。修改该参数后可以重试。请求标识:req_8f2a
同款作品
用这条提示词做出来的作品;原作者会因此获得积分
还没有同款,来做第一个。


0 条评论
还没有评论,来抢沙发~