Agent因步数或时间预算停止,怎样区分部分完成与任务成功?
Agent达到步数或时间上限,只说明运行被中止,不说明任务已经完成。应分别记录停止原因、已经确认的结果和仍未执行的工作,并用目标产物判断成功。
先从这里排查
Agent达到步数或时间上限,只说明运行被中止,不说明任务已经完成。应分别记录停止原因、已经确认的结果和仍未执行的工作,并用目标产物判断成功。预算控制还需要与单个工具的超时区分,否则一个卡住的调用可能在总步数没有增加时持续占用运行时间。
先定义任务成功与循环停止的差别
适用于界面显示“结束”,却没有得到报告,或者Agent停止后仍有工具在后台写入。先保存一次运行记录,确认停止发生在模型规划、工具执行还是结果整理阶段。给任务定义实际完成条件,例如文件存在且字段正确,而不是仅用循环退出作为完成信号。
核对步数统计和取消动作的含义
检查最大步数统计的是模型轮次、工具调用还是所有消息,避免同一个数字在不同框架中含义不同。再核对时间限制是否会取消正在执行的动作,还是只阻止下一轮开始。中断时未返回的工具结果应标为未知,不能直接视为未执行,更不能自动无限重试。
停止新调度并保存可恢复的结果
在每次启动新动作前检查预算,达到上限后停止调度并保留已完成结果。对单个工具设置独立超时及可取消方式,无法取消时记录其状态并继续查询。任务报告采用明确的部分完成或待确认标记,恢复时从已经验证的状态继续,避免把全部动作重新执行一遍。
验证预算中止时没有重复执行动作
测试至少覆盖正常完成、预算中止和工具未返回三种情况,检查报告与实际产物一致。达到上限以后不应启动新的工具;已执行动作也不应在恢复时无意重复。只有目标结果经过检查,才能将状态改为成功,不能靠模型最后一句“完成了”代替验证。
不同编排库对终止条件与取消操作的支持不同,示例中的轮数不能直接套用到其他产品。本文没有运行真实Agent或进行外部写入测试。涉及有副作用的工具时,恢复流程还需要服务端幂等与状态查询;提高预算并不能修复错误参数或缺失的工具反馈。
核对来源
以下资料用于核对概念和方法。文中的示例与测试范围分别注明,实际使用时请核对所用工具的版本。