如何判断 Agent Loop 的结束条件?

考查重点:目标完成与运行退出。模型终答只是候选结束信号;按任务核对必要数据或产物,成功、错误、预算耗尽或取消分别退出,缺输入则保存状态等待

本题目录

参考答案

核心回答

Agent Loop 的结束条件需要同时考虑任务是否完成,以及运行是否还允许继续。工具调用型 Agent 常见的机制是:模型请求工具就执行并回传,模型给出最终回复且没有新的工具请求时结束本轮;但这不自动代表业务目标已经达成。

实际应区分几种情况:

  • 正常完成:所需结果已经取得,必要的工具执行和产物检查通过,可以返回答案。
  • 异常或预算退出:遇到不可恢复错误,或达到总时长、调用次数、Token 等上限,返回已完成部分及未完成原因。
  • 主动终止:用户取消,或运行策略明确要求终止,停止相应执行。
  • 暂停等待:缺少必要输入或等待外部决策,保存进度后等待恢复,不能标成任务已完成。

模型负责根据当前信息判断是否还需要行动;运行时负责执行停止规则、维护状态并记录退出原因,避免只靠模型输出一句“完成了”。

展开说明

1. 机制上的停止:模型输出怎样影响下一步?

在常见 Tool Calling Loop 中,模型回复带有工具调用时,程序执行工具并把结果写回状态,再进入下一轮。模型返回普通答案、没有新的工具请求时,路由就可以转向结束。LangGraph 官方示例中的 should_continue 就检查最新消息的 tool_calls,决定进入工具节点还是 END。

这个规则表示模型本轮不再要求行动。若它的回复是在追问用户,当前执行也可以返回并等待下一次输入;若它遗漏了工具调用,循环同样可能过早停止。因此,模型停止、一次运行结束和业务任务完成要分开记录。

还要确认得到的是完整模型结果。流式连接断开、生成达到输出上限、工具参数尚未生成完整,都不能仅因“暂时没看到工具调用”就按正常最终答案处理。

2. 业务上的完成:用任务要求和真实结果判断

以教程中的“两座城市哪个更热”为例,完成条件可以是:取得两地可比较的天气数据,核对温度单位和时间含义,再给出比较及依据。若只查到北京,上海查询失败,即使模型停止调用工具,也只能返回部分结果,不能凭空选出更热的城市。

其他任务也应有相应依据:生成文件要看文件是否实际生成、格式是否满足要求;修改代码要结合变更范围和适当验证;诊断问题要有支撑结论的证据,并说明仍未确认的部分。

能由程序检查的条件优先用程序。涉及开放式内容质量时,可以引入评分、规则或人工判断,但需要明确评价标准,不能把另一个模型说“通过”当成所有事实和外部操作的证明。

3. 运行上的退出:给探索和重试设置边界

每次继续调用前,应检查用户取消、总截止时间和剩余预算;模型与工具返回后更新消耗和错误状态。调用次数、Token、耗时是不同维度,单次输出上限也不等于整个任务预算。

可恢复错误可以在限定次数内重试或换可用方案;参数长期无效、无权限或依赖不可用时,应返回具体原因。还可以识别没有进展的重复行动:例如连续得到相同错误,模型却始终用同一参数重试。判断时要结合任务是否本来就需要轮询或分页,不能只因调用参数相同就停止。

内层工具重试和外层模型探索各有计数,同时还要受总预算约束。否则每轮都重新获得一份重试额度,局部上限也阻止不了整体无限运行。

不同框架的计数含义也不同。例如 LangGraph 的 recursion_limit 限制图执行的 super-step,不能直接当成模型调用次数;达到上限后的异常处理和部分结果返回也需要设计。

4. 停下来后,要让调用方知道任务处于什么状态

运行结果可以分别保存状态、退出原因、已完成事项、产物或证据,以及继续执行所缺的信息。这样,达到预算可以明确为“已查询北京,上海仍未取得”,而不会因为返回了自然语言就显示为全部成功。

等待用户或外部事件时,可保存任务状态并释放当前执行,之后在同一任务上恢复。若要跨进程恢复,还需要相应持久化存储,不能只依赖进程内内存。

取消请求还应尽可能传给正在运行的工具。工具已经造成的外部变更不会因 Loop 停止自动撤销;结果不确定时要记录并核对,避免恢复后盲目重复执行。恢复细节可结合Agent 中断与恢复理解。

常见追问

没有 tool_calls 就能结束吗?

作为基础工具循环的路由规则可以,但还要区分最终答案、追问和异常截断。若产品要求完成一个明确任务,还应检查必要结果是否已具备。某些框架也支持工具结果直接返回或结构化最终输出,因此不应只依赖一种消息形式。

模型自己说任务完成,程序还要检查什么?

检查与任务直接相关的事实,例如必要数据是否齐全、文件是否存在且可用、工具返回是否真正成功、是否仍有未结束的必要步骤。模型的完成判断可以作为候选信号,但外部结果以执行回执和任务状态为准。

达到次数上限后,应该继续让模型总结吗?

可以预留少量输出预算,让它整理已完成部分和剩余问题;也可以由程序返回简洁状态。如果预算已耗尽,就不应再无上限地调用模型“做最后一次总结”。返回时明确是预算退出,保留必要的恢复信息。

等待人工输入属于失败吗?

通常属于暂停或需要输入,和失败、取消、完成不同。当前执行可以结束,但任务还未达成目标;恢复时继续使用相应状态和仍然有效的授权,不重新假定所有前置条件都已满足。

对应教程

  • Agent 智能体:回看工具反馈后继续或结束的运行循环,并用两城市天气比较理解多次调用怎样形成最终结果。
  • Tools 工具调用:区分模型的调用请求与程序回执,理解停止判断为什么应依据实际工具结果。

参考资料

相关面经

4 篇

中兴通讯

AI 算法工程师
校招秋招一面
查看原面经 →
追问
Agent 在什么情况下结束?

快手

AI 全栈开发工程师
一面
查看原面经 →
AI 怎样判断分析已经完成,并停下来?

京东

后端开发工程师
一面
查看原面经 →
追问
怎么可以判断结束条件

字节跳动

后端开发工程师
实习二面
查看原面经 →
Agent Loop 的循环终止条件有哪些?(无工具调用、超时、token预算耗尽、用户主动结束)

收录题集

3 个来源,共3 份题集

Agent Harness进阶追问

阿东玩 AI · AgentGuide · 1 条原题

查看题集 →

Agent开发面试题

摸鱼酱mio · 个人整理 · 1 条原题

查看题集 →

AI Agent 面试 Top50 必刷题

程序员马丁 · ai-handbook · 1 条原题

查看题集 →

相关题目

4 题