代理课程文档
通过思考-行动-观察循环理解 AI 代理
并获得增强的文档体验
开始使用
通过思考-行动-观察循环理解 AI 代理

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

在许多代理框架中,规则和指南直接嵌入到系统提示中,确保每个循环都遵循定义的逻辑。
在一个简化的版本中,我们的系统提示可能看起来像这样

我们在这里看到,在系统消息中,我们定义了
- 代理的行为。
- 我们的代理可以访问的工具,正如我们在上一节中描述的那样。
- 思考-行动-观察循环,我们将其融入到 LLM 指令中。
让我们看一个小例子来理解这个过程,然后再深入了解该过程的每个步骤。
Alfred,天气代理
我们创建了 Alfred,天气代理。
用户向 Alfred 提问:“纽约当前的天气怎么样?”

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

行动
工具使用
根据其推理以及 Alfred 了解 get_weather
工具的事实,Alfred 准备了一个 JSON 格式的命令来调用天气 API 工具。例如,它的第一个动作可能是
思考:我需要查看纽约当前的天气。
{
"action": "get_weather",
"action_input": {
"location": "New York"
}
}
在这里,行动清楚地指定了要调用的工具(例如,get_weather)以及要传递的参数(“location”:“New York”)。

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

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

最终行动
然后,Alfred 生成最终响应,格式化为我们告诉它的那样
思考:我现在有了天气数据。纽约当前的天气为多云,温度为 15°C,湿度为 60%。”
最终答案:纽约当前的天气为多云,温度为 15°C,湿度为 60%。
这个最终行动将答案发送回用户,结束循环。

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