智能体课程文档
通过“思想-行动-观察”循环理解AI Agent
并获得增强的文档体验
开始使用
通过“思想-行动-观察”循环理解AI Agent

在之前的章节中,我们学习了
- 如何通过系统提示将工具提供给Agent.
- AI Agent是如何能够“推理”、规划并与环境互动的系统.
在本节中,**我们将探讨完整的AI Agent工作流**,这是一个我们定义为“思想-行动-观察”的循环。
然后,我们将深入探讨这些步骤中的每一步。
核心组成部分
Agent的工作是一个持续的循环:**思考(Thought)→行动(Act)→观察(Observe)**。
让我们一起分解这些行动
- **思想**:Agent的LLM部分决定下一步应该是什么。
- **行动**:Agent通过调用工具并附带相关参数来执行行动。
- **观察**:模型反思工具的响应。
“思想-行动-观察”循环
这三个组件在一个连续的循环中协同工作。用编程的类比来说,Agent使用了一个**while循环**:循环持续进行,直到Agent的目标实现为止。
视觉上,它看起来是这样的

在许多Agent框架中,**规则和准则直接嵌入到系统提示中**,确保每个循环都遵循定义的逻辑。
在一个简化版本中,我们的系统提示可能如下所示

我们在此处看到在系统消息中定义了
- *Agent的行为*。
- *我们的Agent可以访问的工具*,正如我们在上一节中所述。
- *“思想-行动-观察”循环*,我们将其融入LLM指令中。
让我们举一个小例子来理解这个过程,然后再深入探讨过程中的每个步骤。
天气Agent阿尔弗雷德
我们创建了天气Agent阿尔弗雷德。
用户问阿尔弗雷德:“纽约现在天气怎么样?”

阿尔弗雷德的工作是使用天气API工具回答这个查询。
循环展开如下
思考
内部推理
收到查询后,阿尔弗雷德的内部对话可能是
“用户需要纽约的当前天气信息。我有一个可以获取天气数据的工具。首先,我需要调用天气API来获取最新详细信息。”
这一步显示Agent将问题分解为多个步骤:首先,收集必要的数据。

行动
工具使用
根据其推理以及阿尔弗雷德对`get_weather`工具的了解,阿尔弗雷德准备了一个JSON格式的命令,用于调用天气API工具。例如,它的第一个行动可能是
思考:我需要查看纽约的当前天气。
{
"action": "get_weather",
"action_input": {
"location": "New York"
}
}
此处,行动明确指定了要调用的工具(例如,get_weather)以及要传递的参数(“location”:“New York”)。

观察
环境反馈
工具调用后,阿尔弗雷德收到一个观察结果。这可能是来自API的原始天气数据,例如
“纽约当前天气:局部多云,15°C,湿度60%。”

然后将此观察结果作为附加上下文添加到提示中。它起着现实世界反馈的作用,确认行动是否成功并提供所需的详细信息。
更新的思考
反思
得到观察结果后,阿尔弗雷德更新其内部推理
“既然我已经有了纽约的天气数据,我就可以为用户编写答案了。”

最终行动
阿尔弗雷德然后生成一个按照我们指示格式化的最终响应
思考:我现在有了天气数据。纽约目前天气局部多云,气温15°C,湿度60%。
最终答案:纽约目前天气局部多云,气温15°C,湿度60%。
这个最终行动将答案发送回用户,从而闭合了循环。

我们在此示例中看到的内容
- Agent通过循环迭代,直到目标实现。
**阿尔弗雷德的过程是周期性的**。它从一个思想开始,然后通过调用工具进行行动,最后观察结果。如果观察结果表明有错误或数据不完整,阿尔弗雷德可以重新进入循环以修正其方法。
- 工具集成
调用工具(如天气API)的能力使阿尔弗雷德能够**超越静态知识并检索实时数据**,这是许多AI Agent的一个重要方面。
- 动态适应
每个循环都允许Agent将新信息(观察结果)融入其推理(思想)中,确保最终答案信息充分且准确。
这个例子展示了**ReAct循环**(我们将在下一节中阐述的概念)背后的核心概念:**思想、行动和观察的相互作用使AI Agent能够迭代地解决复杂任务**。
通过理解和应用这些原则,您可以设计出不仅能对其任务进行推理,还能**有效利用外部工具完成任务**的Agent,同时根据环境反馈不断优化其输出。
现在让我们更深入地探讨思想、行动、观察作为过程的各个步骤。
< > 在 GitHub 上更新