通过思考-行动-观测循环理解 AI Agent
本节将讲述完整的 AI Agent 工作流,即思考-行动-观测(Thought-Action-Observation)循环。
1. 核心组件
Agent 工作在持续的循环中:思考(Thought)→行动(Act)和观测(Observe)。
下面分解这些操作:
- 思考:Agent 的 LLM 部分决定下一步是什么
- 行动:Agent 通过使用相关的参数调用工具的方式,执行行动
- 观测:模型对工具的响应作出反应
2. 思考-行动-观测循环
这三个组件一起工作在持续的循环中。使用编程进行类比,Agent 使用 while 循环:该循环持续到 Agent 完成其目标。
在视觉上,如下所示:

在许多 Agent 框架中,直接将规则和指导方针嵌到系统提示词中。确保每次循环都遵循既定逻辑。
简化版本的系统提示词如下:

在该系统消息中可以看到:
- Agent 的行为
- Agent 可以访问的工具
- 融入到 LLM 指令的思考-行动-观测循环
下面通过简单的示例进行说明。
3. Alfred,天气 Agent
我们创建 Alfred,天气 Agent。
用户问 Alfred:“纽约的当前天气如何?”。

Alfred 的工作是使用天气 API 工具回答该查询。
下面是展开的循环:
4. 思考
4.1. 内部推理
收到问询后,Alfred 的内部对话可能是:
用户需要纽约的当前天气信息,我可以访问获取天气数据的工具。首先,我需要调用天气 API 获取最新详情。
该步骤展示 Agent 将问题分解成步骤:首先,收集必要的数据。

5. 行动
5.1. 工具使用
基于其推理,以及 Alfred 知晓 get_weather
工具,Alfred 准备 JSON 格式的命令,调用天气 API 工具。比如其第一个动作可以是:
思考:我需要查看纽约的当前天气:
{
"action": "get_weather",
"action_input": {
"location": "New York"
}
}
该行动清晰地指定使用哪个工具,以及传递什么参数。

6. 观测
6.1. 环境的反馈
在工具调用后,Alfred 收到观察结果。这可能是来自 API 的原始天气数据,比如:
纽约的当前天气:局部多云,15 摄氏度,60% 湿度。

然后将该观察结果作为附加上下文添加到提示词中。其功能是作为真实世界的反馈,确认行动是否成功,以及提供所需的细节。
7. 更新思考
7.1. 反应
拿着观察结果,Alfred 更新其内部推理:
“现在我拥有纽约的天气数据,我可以为用户编写答案。”

8. 最后的行动
然后,Alfred 按照我们告诉它的格式生成最终响应:
思考:我现在已拥有天气数据。纽约现在的天气是局部多云,15 摄氏度,60% 湿度。
最终答案:纽约现在的天气是局部多云,15 摄氏度,60% 湿度。
最后的行动是将答案发送回用户,结束循环。

在本示例中,我们看到:
- Agent 通过循环迭代,直到实现目标:
Alfred 的过程是循环的。它从思考开始,然后通过调用工具执行行动,最后观察结果。如果观察结果表明出现错误或数据不完整,Alfred 可以重新进入循环进行纠正。
- 工具集成:
调用工具(比如天气 API)的能力使 Alfred 能够超越静态知识,检索实时数据,这是许多 AI Agent 的重要方面。
- 动态适应:
每次迭代都允许 Agent 将新信息(观察结果)纳入到其推理(思考)的过程中,确保最终答案是经过充分考量且准确的。
该示例展示 ReAct 循环(ReAct cycle)背后的核心概念:思考、行动和观测的相互作用使 AI Agent 能够迭代地解决复杂的任务。
通过理解和应用这些原则,可以设计出不仅能够对任务进行推理,还能有效利用外部工具完成任务的 Agent,同时还能基于环境反馈不断完善其输出。