代理课程文档

通过思考-行动-观察循环理解 AI 代理

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

通过思考-行动-观察循环理解 AI 代理

Unit 1 planning

在之前的章节中,我们学习了

  • 如何在系统提示中向代理提供工具.
  • AI 代理是如何成为可以“推理”、计划并与其环境互动的系统.

在本节中,我们将探索完整的 AI 代理工作流程,我们将其定义为思考-行动-观察循环。

然后,我们将深入探讨这些步骤中的每一个。

核心组件

代理在一个持续的循环中工作:思考(Thought)→ 行动(Act)和观察(Observe)

让我们一起分解这些行动

  1. 思考:代理的 LLM 部分决定下一步应该是什么。
  2. 行动: 代理采取行动,通过调用带有相关参数的工具。
  3. 观察: 模型反思来自工具的响应。

思考-行动-观察循环

这三个组件在一个连续的循环中协同工作。用编程中的类比来说,代理使用 while 循环:循环持续到代理的目标完成为止。

直观地看,它看起来像这样

Think, Act, Observe cycle

在许多代理框架中,规则和指南直接嵌入到系统提示中,确保每个循环都遵循定义的逻辑。

在一个简化的版本中,我们的系统提示可能看起来像这样

Think, Act, Observe cycle

我们在这里看到,在系统消息中,我们定义了

  • 代理的行为
  • 我们的代理可以访问的工具,正如我们在上一节中描述的那样。
  • 思考-行动-观察循环,我们将其融入到 LLM 指令中。

让我们看一个小例子来理解这个过程,然后再深入了解该过程的每个步骤。

Alfred,天气代理

我们创建了 Alfred,天气代理。

用户向 Alfred 提问:“纽约当前的天气怎么样?”

Alfred Agent

Alfred 的工作是使用天气 API 工具回答此查询。

以下是循环如何展开

思考

内部推理

收到查询后,Alfred 的内部对话可能是

“用户需要纽约当前的天气信息。我可以使用一个工具来获取天气数据。首先,我需要调用天气 API 以获取最新的详细信息。”

此步骤显示代理将问题分解为步骤:首先,收集必要的数据。

Alfred Agent

行动

工具使用

根据其推理以及 Alfred 了解 get_weather 工具的事实,Alfred 准备了一个 JSON 格式的命令来调用天气 API 工具。例如,它的第一个动作可能是

思考:我需要查看纽约当前的天气。

   {
     "action": "get_weather",
     "action_input": {
       "location": "New York"
     }
   }

在这里,行动清楚地指定了要调用的工具(例如,get_weather)以及要传递的参数(“location”:“New York”)。

Alfred Agent

观察

来自环境的反馈

在调用工具后,Alfred 收到一个观察结果。这可能是来自 API 的原始天气数据,例如

“纽约当前天气:多云,15°C,湿度 60%。”

Alfred Agent

然后将此观察结果作为附加上下文添加到提示中。它充当真实世界的反馈,确认行动是否成功并提供所需的详细信息。

更新的思考

反思

有了观察结果,Alfred 更新了其内部推理

“既然我已经有了纽约的天气数据,我可以为用户编写一个答案了。”

Alfred Agent

最终行动

然后,Alfred 生成最终响应,格式化为我们告诉它的那样

思考:我现在有了天气数据。纽约当前的天气为多云,温度为 15°C,湿度为 60%。”

最终答案:纽约当前的天气为多云,温度为 15°C,湿度为 60%。

这个最终行动将答案发送回用户,结束循环。

Alfred Agent

我们在这个例子中看到的

  • 代理迭代循环直到目标实现

Alfred 的过程是循环的。它从思考开始,然后通过调用工具来行动,最后观察结果。如果观察结果表明存在错误或数据不完整,Alfred 可以重新进入循环以纠正其方法。

  • 工具集成

调用工具(如天气 API)的能力使 Alfred 能够超越静态知识并检索实时数据,这是许多 AI 代理的重要方面。

  • 动态适应

每个循环都允许代理将新鲜信息(观察结果)整合到其推理(思考)中,从而确保最终答案信息充分且准确。

这个例子展示了 ReAct 循环 背后的核心概念(我们将在下一节中深入探讨这个概念):思考、行动和观察的相互作用使 AI 代理能够迭代地解决复杂的任务

通过理解和应用这些原则,您可以设计出不仅可以推理其任务,而且还可以有效利用外部工具来完成任务的代理,所有这些都在持续根据环境反馈改进其输出的同时进行。


现在让我们更深入地研究思考、行动、观察,作为该过程的各个步骤。

< > 在 GitHub 上更新