Agent 工具调用报错怎么处理:错误分类与重试策略设计提示词(哪些重试、哪些换做法、哪些直接上报,报错信息怎么写)

给智能体接了一批工具,发现它遇到报错要么原样反复重试、要么直接放弃、要么编一个结果继续往下走时用:把工具清单和常见报错交给 AI,它把错误分成几类并分别规定处理方式,改写报错信息让模型看得懂下一步该做什么,还会指出哪些操作重试会造成重复扣款、重复发送这类副作用。

NNathaniel bigo··原创首发·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

同款作品

用这条提示词做出来的作品;原作者会因此获得积分

做同款

还没有同款,来做第一个。

Nathaniel 的更多内容

同主题

同模型

0 条评论

登录 后参与评论

还没有评论,来抢沙发~