核心要点

  • 能区分错误类型:瞬时错误(超时/限流/5xx)可重试,参数/校验错误应让模型修正,持久错误(鉴权/资源不存在)走回退

  • 能讲重试策略:指数退避 + 抖动、设最大重试次数与总超时,对幂等操作才安全重试

  • 能讲回退:降级到备用工具/缓存/默认值,或把失败信息回灌给模型让它换方案

  • 能讲反馈闭环:把结构化错误信息作为观察返回模型(ReAct),并记录 trace 便于排查

标准回答

一、先给出结论和背景

  • 先分类错误:工具失败不能一律重试。先区分:瞬时错误(网络超时、限流 429、服务端 5xx)、输入错误(参数缺失/类型不对/校验不过)、持久错误(鉴权失败、资源不存在、权限不足)。不同类别处理方式不同。
  • 重试:仅对瞬时且幂等的调用重试:采用指数退避加随机抖动,设最大重试次数与整体超时上限,避免雪崩与无限等待。非幂等写操作需配合幂等键,否则不能盲目重试。

二、拆开关键步骤和判断点

  • 让模型自我修复:参数/校验类错误应把结构化错误信息作为「观察」回灌给模型,在 ReAct 循环里让它修正参数或改用别的工具,而不是程序硬重试。
  • 回退:持久失败或重试耗尽时走回退:切换备用工具、读缓存、返回安全默认值,或把「该工具不可用」明确告知模型让它换思路,必要时降级为人工兜底。

三、补上落地边界和取舍

常见误区

⚠️ 常见踩坑

误区一:容易答偏的地方:别对所有错误统一「重试 N 次」——对参数错误重试只会原样失败,对非幂等写操作重试可能重复下单/扣款;必须先分类错误、再决定重试还是回灌模型修复。

追问

追问 1如何保证非幂等工具的安全重试?

为写操作引入幂等键(idempotency key),服务端按键去重,使同一逻辑请求重试只生效一次;无法幂等时改为「先查状态再决定是否重试」,避免重复副作用。

追问 2工具反复失败导致 Agent 卡在循环里怎么办?

设置全局工具调用次数与总时长上限、对同一工具的连续失败做熔断、检测重复动作提前终止,并在耗尽预算时返回部分结果或转人工,而非无限循环。

追问 3错误信息怎么返回给模型最有效?

返回结构化、可操作的错误(错误类型、具体字段、修复提示),而非原始堆栈;明确告诉模型「哪里错、可以怎么改」,能显著提升其自我修复成功率。

🔗 相似问题

同一考点的不同问法,换着练更稳

没找到想看的面试题?把你想看的告诉我们 →

延伸学习

按主题分类的相关资源,便于系统复习