三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

Agent 工具调用失败怎么办:从超时重试到幂等执行的完整设计

Agent 工具调用失败怎么办:从超时重试到幂等执行的完整设计

本文定位:Agent 生产可靠性 / 工作流设计 / Java 后端

示例环境:Java 21、Spring Boot 3.3、PostgreSQL 16、Redis 7。代码展示的是核心设计,具体模型 SDK 和消息队列实现可按项目替换。

摘要

很多 Agent Demo 都是一个循环:模型决定调用工具,程序执行工具,把结果再交给模型,直到模型输出最终答案。演示时流程很顺,接入真实业务后却会遇到一组绕不开的问题:工具超时是否重试?重试会不会重复扣款?服务刚写入数据库就宕机,任务从哪里恢复?模型已经生成“准备提交”的结果,但用户没有确认,系统能不能继续执行?同一个请求重复发送时,会不会产生两张工单?

这些问题说明,Agent 不是“会循环调用函数”就够了。只要工具具有副作用,就必须引入状态、幂等键、权限、超时、重试和人工确认。本文从一个“创建工单并通知值班人员”的例子出发,设计一套可恢复、可审计、可降级的执行模型。

一、先区分只读工具和有副作用工具

工具可以粗略分为三类:

类型示例默认策略
只读查询查订单、查库存、查监控指标可设置短重试,结果要带时间戳
可变更但可回滚修改草稿、生成配置
← 返回列表