
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
其核心就是 Thought、 Action 、Observation 和 Final 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 Execute由LangChain提出。它很大程度上受到 Plan-and-Solve 论文以及 Baby-AGI 项目的启发。
这与典型的 ReAct 风格代理相比,您一次一步地思考。这种“计划和执行”风格代理的优点是:
- 明确的长期规划(即使是非常强大的法学硕士也会遇到困难)
- 能够在执行步骤中使用较小/较弱的模型,仅在规划步骤中使用较大/更好的模型
执行流程

langchain.png

plan- execute.jpeg

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