工具与 Agent 循环 / 知识库

11 · 写一个有限步数的 Agent Loop

用状态与事件观察每一轮,而不是无限 while 循环。

工具与 Agent 循环原创导读

本站原创入门导读与合成教学示例。原始资料核实:2026-09-05。建议先读:10 · 工具的错误、重试与幂等。

理解概念

最小循环重复执行:观察当前状态,选择允许动作,执行工具,记录结果,判断是否完成。应同时限制步数、时间、费用和连续失败次数。自然语言“完成了”不是成功凭证,目标状态应由程序或可检查的产物确认。

先用确定性的假模型练调度,再接真实模型。状态包含已知事实、工具结果和待解决问题,不应只有一串越积越长的聊天。每个事件保留运行编号与序号,方便失败后恢复和回放。

一个最小例子

代码
# 确定性教学模拟:不是模型推理实现
state = {"answer": None, "events": []}
for step in range(3):
    action = "lookup" if state["answer"] is None else "finish"
    state["events"].append({"step": step, "action": action})
    if action == "finish":
        break
    state["answer"] = {"minutes": 40, "source": "homework.json"}
else:
    raise RuntimeError("步数预算耗尽")
print(state)

动手练习

故意让 lookup 永远返回空值,确认循环会结束。增加工具错误事件,区分成功、失败、取消和预算耗尽。接真实模型时保持同一状态结构。

验收与预期结果

正常模拟有 lookup 与 finish 两条事件;错误版本最多三轮,不会无限执行。最终输出含来源,而不只是模型宣称成功。

  • 我能解释输入、过程与结果。
  • 我保留了一个失败例与运行记录。

常见误区

不要把所有历史原样回传;也不要在失败时递归启动一个没有预算的新 Agent。停止按钮必须影响服务端运行。

延伸阅读

以下是相关方向的原始资料;本站练习不是官方课程作业或逐字翻译。

课程状态与先修说明 · 核心术语

理解需要时间,记录让每一步都有迹可循。

回到学习路线图