Agent 何时结束:把完成与预算耗尽分开
为任务设计成功、阻塞和预算耗尽三类出口,避免循环次数被误当成完成证据。
本文由 AI 辅助撰写。示例用于说明设计,未提供实测结论;来源见文末。
撰写与资料核对:2026-10-12。计划发布:2026-11-01T20:00:00+08:00。上方日期为实际首次公开时间;文章按计划提前撰写,不描述未来新闻。
“继续检查直到没有问题”很容易成为无限任务。问题集合可能不断扩大,模型也可能对同一材料反复给出新解释。即使没有技术故障,系统仍然需要知道什么时候可以交付、什么时候应该停下,以及停下时结果究竟算什么。
运行结束不等于目标完成
OpenAI Agents SDK 的运行文档说明,运行循环会在产生最终输出时结束,超过配置的 max_turns 则抛出 MaxTurnsExceeded。这是运行器的机制。业务目标是否已满足,仍需应用自己判断,不能从“模型已经返回一段文本”直接推导。
以虚构的文章核对任务为例,目标是检查五个事实陈述,并为每个陈述给出出处或缺证据说明。成功出口可以定义为五项都已有明确处理结果;阻塞出口可能是指定资料无法访问;预算出口则是允许的调查步骤已用完。三种出口都能交付信息,但只有第一种满足完整验收。
先把完成证据写成可观察对象
“没有遗漏”通常不是直接可观察的条件。“清单中的五项均已处理,引用能对应到具体陈述”则更容易检查。任务开始时应固定待处理集合,或明确新增项目是否计入本次范围,否则完成条件会随着探索不断移动。
对开放任务也可以定义有限完成。例如“比较三种候选方案并指出关键未知项”,不必要求找到全世界最优方案。关键是让结束条件描述本次承诺,而不是模型对结果的满意程度。满意度可以辅助审查,却不宜独自决定是否继续消耗资源。
为不同资源设不同预算
回合数只覆盖一种维度。一回合可能调用多个工具,也可能读取大量材料。设计时可以分别限制模型回合、工具调用、候选数量和总体耗时;这些是应用预算,不应假定一个框架参数已经涵盖全部资源。
预算数值需要结合任务选择。本文不提供通用阈值,也不声称某个次数足够可靠。可以先按最短有效路径估计,再为资料缺失和冲突留出有限空间。若预算太小,系统会经常交付不完整结果;若预算过大,重复探索可能被误当成勤奋。
停下时保留可用成果
预算耗尽时,结果应说明已处理哪些项目、剩下哪些项目、缺口为什么影响结论,以及下一步需要什么资源。不要把“没有继续找到反例”写成“已确认正确”。在虚构核对任务里,三项已找到依据、两项尚待核对,比笼统地说“检查完成”更容易被接手。
还可以记录停滞信号:连续几步没有增加新证据、再次访问同一材料而没有新问题、候选方案只在措辞上变化。这些信号适合触发重新审视路线,不必直接等同于失败。执行器可以要求提出一条新的调查依据,再决定是否继续。
预算增加也应有理由。如果任务因缺少指定资料停止,追加回合可能毫无帮助;如果发现一个明确的新入口,增加一次有限读取可能有价值。系统应把请求更多资源与扩大任务范围分开表达,方便人判断投入是否值得。
在虚构任务里,还可以为每条陈述保存一个处理标记,避免后续回合又去调查已确认的同一项。标记应携带依据和材料版本;若材料更新导致依据失效,再把对应项目重新打开,而不是清空全部进度。
一个可维护的出口设计,最终应能回答三件事:为何结束、达成了多少承诺、接下来谁能做什么。让预算耗尽成为正常且有信息量的状态,可以减少模型为了“完成”而编造确定答案的压力,也让未完成任务保持可交接。
参考资料:OpenAI Agents SDK:Running agents。
本文由AI辅助撰写;编写/资料核对日期2026-10-12;示例为设计说明,未提供实测结论。计划日期不代表实际首次展示时间。