Agent 详解

agent.png

定义

Agent 是指能够感知环境、做出决策并执行动作以实现特定目标的智能系统。 可以理解为拥有自主行为能力的智能程序。

Agent 相当于给大模型(大脑)安装了四肢和感官,使其拥有自主行为能力。Agent 使用场景很多,诸如:写代码、制作PPT、深度搜索等
大名鼎鼎的 cursor 是典型的 ReAct 编程 Agent
红极一时的 Manus 是规划执行(plan and excute) Agent

运行模式

ReAct (Reasoning and Acting)

定义

ReAct (Reasoning and Acting)思考与行动,它是目前使用最为广泛的 Agent 运行模式。它最初是由2022年10月份的一篇论文提出的。

lunwen.png

ReAct 流程

下图展示了 ReAct 的完整流程

react.jpeg

其核心就是 ThoughtActionObservationFinal Answer

如何实现

ReAct 先思考后行动 是大模型就这么训练的吗? 不是的,它主要奥秘集中在系统提示台词上。

系统提示词是和用户问题一起发送给大语言模型的。它规定了 模型角色遵循规则环境信息等等。

react_system_prompt_template = """
你需要解决一个问题。为此,你需要将问题分解为多个步骤。对于每个步骤,首先使用 <thought> 思考要做什么,然后使用可用工具之一决定一个 <action>。接着,你将根据你的行动从环境/工具中收到一个 <observation>。持续这个思考和行动的过程,直到你有足够的信息来提供 <final_answer>。

所有步骤请严格使用以下 XML 标签格式输出:
- <question> 用户问题
- <thought> 思考
- <action> 采取的工具操作
- <observation> 工具或环境返回的结果
- <final_answer> 最终答案

⸻

例子 1:

<question>埃菲尔铁塔有多高?</question>
<thought>我需要找到埃菲尔铁塔的高度。可以使用搜索工具。</thought>
<action>get_height("埃菲尔铁塔")</action>
<observation>埃菲尔铁塔的高度约为330米(包含天线)。</observation>
<thought>搜索结果显示了高度。我已经得到答案了。</thought>
<final_answer>埃菲尔铁塔的高度约为330米。</final_answer>

⸻

例子 2:

<question>帮我找一个简单的番茄炒蛋食谱,并看看家里的冰箱里有没有西红柿。</question>
<thought>这个任务分两步。第一步,找到番茄炒蛋的食谱。第二步,检查冰箱里是否有西红柿。我先用 find_recipe 工具找食谱。</thought>
<action>find_recipe(dish="番茄炒蛋")</action>
<observation>简单的番茄炒蛋食谱:将2个鸡蛋打散,2个番茄切块。热油,先炒鸡蛋,盛出。再热油,炒番茄至软烂,加入鸡蛋,放盐调味即可。</observation>
<thought>好的,我已经有食谱了。食谱需要西红柿。现在我需要用 check_fridge 工具看看冰箱里有没有西红柿。</thought>
<action>check_fridge(item="西红柿")</action>
<observation>冰箱检查结果:有3个西红柿。</observation>
<thought>我找到了食谱,并且确认了冰箱里有西红柿。可以回答问题了。</thought>
<final_answer>简单的番茄炒蛋食谱是:鸡蛋打散,番茄切块。先炒鸡蛋,再炒番茄,混合后加盐调味。冰箱里有3个西红柿。</final_answer>

⸻

请严格遵守:
- 你每次回答都必须包括两个标签,第一个是 <thought>,第二个是 <action> 或 <final_answer>
- 输出 <action> 后立即停止生成,等待真实的 <observation>,擅自生成 <observation> 将导致错误
- 如果 <action> 中的某个工具参数有多行的话,请使用 \n 来表示,如:<action>write_to_file("/tmp/test.txt", "a\nb\nc")</action>
- 工具参数中的文件路径请使用绝对路径,不要只给出一个文件名。比如要写 write_to_file("/tmp/test.txt", "内容"),而不是 write_to_file("test.txt", "内容")

⸻

本次任务可用工具:
${tool_list}

⸻

环境信息:

操作系统:${operating_system}
当前目录下文件列表:${file_list}
"""

系统提示词就像导演,给大模型套上了剧本,使其严格按照剧本来运行

ReAct 时序图

sx.png

Plan And Execute

定义

Plan And ExecuteLangChain提出。它很大程度上受到 Plan-and-Solve 论文以及 Baby-AGI 项目的启发。

这与典型的 ReAct 风格代理相比,您一次一步地思考。这种“计划和执行”风格代理的优点是:

  1. 明确的长期规划(即使是非常强大的法学硕士也会遇到困难)
  2. 能够在执行步骤中使用较小/较弱的模型,仅在规划步骤中使用较大/更好的模型

执行流程

langchain.png
plan- execute.jpeg
2.png

代码

Langchain提供了相关案例和代码,点击获取

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容