AI Agent 循环:Think-Act-Observe 的核心机制

AI AgentAI Agent循环openstarry.com

AI Agent 循环:Think-Act-Observe 的核心机制

AI Agent 的核心运行模式是一个不断重复的循环:思考(Think)、行动(Act)、观察(Observe)。理解这个循环,是理解一切 Agent 系统的基础。

什么是 Agent Loop?

一个 AI Agent 本质上是一个由 LLM 驱动的决策系统。它不是一次性输出答案,而是通过迭代循环逐步完成任务。每一轮循环中,Agent 会经历三个阶段:

Think → Act → Observe 循环:

┌─────────────┐
│   Think     │ ← Agent 分析当前状态,决定下一步该做什么
│  (思考)    │
└──────┬──────┘
       ↓
┌─────────────┐
│   Act       │ ← Agent 执行一个动作(调用工具、生成文本等)
│  (行动)    │
└──────┬──────┘
       ↓
┌─────────────┐
│   Observe   │ ← Agent 获取动作的结果,更新对任务的理解
│  (观察)    │
└──────┬──────┘
       ↓
   判断是否完成?→ 是 → 输出最终结果
       ↑ 否
       └── 回到 Think

这个循环的精妙之处在于:Agent 不需要一开始就制定完整的计划,而是通过每一步的观察来动态调整策略。


Think 阶段:推理与规划

在思考阶段,Agent 会分析当前的任务状态,决定下一步应该采取什么行动。这是 Agent 与普通 LLM 调用最核心的区别。

思考阶段的典型内容:

"我需要回答用户的问题:2024年诺贝尔物理学奖得主是谁?"
"我目前没有这个信息,需要搜索。"
"我应该先搜索 '2024 Nobel Prize Physics'。"
"搜索结果提到了 John Hopfield 和 Geoffrey Hinton。"
"我需要确认这是否完整,可能还需要搜索更多细节。"

思考过程可以是显式的(通过 CoT 链式思考),也可以是隐式的(模型内部决策)。显式思考有助于调试和理解 Agent 的行为。


Act 阶段:执行动作

根据思考的结果,Agent 会选择并执行一个具体动作。常见的动作类型包括:

动作类型 示例 适用场景
工具调用搜索网页、执行代码、查询数据库需要外部信息或计算
文本生成撰写回答、生成代码直接输出结果
子任务分解将复杂问题拆分为子问题复杂推理任务
交互询问向用户请求更多信息信息不完整时
# 动作选择的简化实现
def select_action(thought, available_tools):
    """
    根据思考结果选择要执行的动作
    """
    # LLM 根据当前状态决定动作
    action = llm.predict(f"""
    当前状态:{thought}
    可用工具:{available_tools}
    请决定下一步行动,输出 JSON 格式的动作。
    """)
    return parse_action(action)

Observe 阶段:获取反馈

执行动作后,Agent 会收到一个观察结果(Observation)。这个结果会被加入到 Agent 的上下文中,供下一轮思考使用。

观察的几种形式:

工具返回结果:
  搜索 "2024 Nobel Prize Physics" → 
  "John J. Hopfield 和 Geoffrey E. Hinton 获得 2024 年诺贝尔物理学奖"

代码执行结果:
  执行 "print(2**10)" → 输出 "1024"

错误信息:
  执行 "fetch(url)" → "Error: Connection timeout"

用户反馈:
  询问用户 → 用户回复 "我想要更详细的解释"

观察结果的质量直接决定了 Agent 的表现。如果工具返回的信息不准确或不完整,Agent 的后续决策也会受到影响。


ReAct 模式

ReAct(Reasoning + Acting)是将 Think-Act-Observe 循环形式化的经典框架。它要求 Agent 在每一步都生成显式的思考过程:

ReAct 格式示例:

问题:苹果公司的现任 CEO 是谁?他是什么时候上任的?

Thought 1: 我需要查找苹果公司的现任 CEO 信息。
Action 1: Search["苹果公司 现任 CEO"]
Observation 1: 苹果公司现任 CEO 是蒂姆·库克(Tim Cook),自 2011 年 8 月起担任该职务。

Thought 2: 我已经找到了答案。蒂姆·库克自 2011 年 8 月起担任苹果 CEO。
Action 2: Finish["苹果公司现任 CEO 是蒂姆·库克,于 2011 年 8 月上任。"]
Observation 2: 任务完成。

ReAct 的优势在于:思考过程是可审计的,你可以清楚地看到 Agent 为什么做出某个决策。


停止条件

Agent Loop 必须有明确的停止条件,否则会无限循环。常见的停止条件包括:

# 带停止条件的 Agent Loop
def agent_loop(task, max_steps=10):
    for step in range(max_steps):
        thought = think(task, history)
        
        if thought.action == "finish":
            return thought.final_answer
        
        if thought.action == "need_more_info":
            info = ask_user()
            history.append(observation(info))
            continue
        
        result = execute(thought.action)
        
        if result.error and consecutive_failures > 3:
            return "无法完成任务:工具连续失败"
        
        history.append(observation(result))
    
    return "达到最大步数限制,任务未完成"

常见失败模式

1. 无限循环

Agent 反复执行相同的操作而没有进展。通常发生在 Agent 无法从观察中获取新信息时。

失败示例:
Thought: 我需要搜索 X
Action: Search["X"]
Observation: 未找到结果
Thought: 我需要搜索 X
Action: Search["X"]  ← 重复!
Observation: 未找到结果
...(无限循环)

2. 偏离目标

Agent 在多步推理后偏离了原始任务,开始处理不相关的事情。

3. 过早终止

Agent 在还没有收集足够信息时就过早地给出了最终答案。

4. 工具误用

Agent 选择了错误的工具,或者以错误的参数调用工具。


总结

AI Agent 的 Think-Act-Observe 循环是所有 Agent 系统的核心机制。通过不断迭代,Agent 能够逐步完成复杂任务,而不需要预先规划完整的执行路径。理解这个循环的工作原理和常见失败模式,是构建可靠 Agent 系统的第一步。

下一步阅读AI Agent 可观测性:如何监控和调试智能体系统

以 AI 之力,筑未来之境

现在注册,立即免费获赠 200 次大模型调用权益

免费注册 →