为什么会有Agent?
Agent 是来解决LLM模型存在的劣势:
- LLM模型 的幻觉 ,也能简单的说,有时候LLM模型 生成的内容,是胡说八道的内容,Agent 的出现是为了降低LLM模型 的幻觉 、控制幻觉 ,甚至消除幻觉;
- LLM模型 是只会说(输出文字内容),不会做(不会做实际的事务),Agent 就很好的填充了,LLM模型 "不会做"的情况,最有代表性的Agent 是OpenClaw(龙虾) ,OpenClaw 可以为你做任何事情;
其实LLM模型 也能做规划、做任务,它可以把一个复杂的任务分成几个小任务,并且知道先执行哪个任务,再执行哪个任务,但是LLM模型 的这些能力跟它的幻觉 一样,不靠谱,并且它的这些功能经验也不足,所以才衍生出Agent(智能体)。
Agent的难点:
- 降低、甚至消除LLM模型 的幻觉;
- 对复杂任务进行精准的分解、安排以及实施;
- 有极强的准确度、可控性的要求。
简而言之,LLM模型提供智能,Agent保证结果!
本次只是对Agent 的初步了解,先带大家了解下Workflow Agent(工作流智能体) 与 ReAct Agent(推理型智能体) ,之后的文章内也会对Agent做深入的探索。
Workflow Agent(工作流智能体)
Workflow Agent(工作流智能体) ,是在Agent内搭建了一个或多个工作流,这些工作流是AI大模型应用开发工程师根据相应的业务场景,提前预设好的工作流。
Workflow Agent,也叫专用Agent。
专用Agent的局限性与优势:
| 局限性 | 优势 |
|---|---|
| 自主性较弱 | 可控 |
| 智能性较弱 | 可靠 |
现在市面上主流的Agent都是这种类型。
在Workflow Agent 内也会预设好LLM模型 的自由空间,通过系统Prompt 对LLM模型 进行限制自由空间,让LLM模型只生成用户想要的内容。
Workflow Agent内部情况以及LLM模型的实施:
- 用 RAG 技术构建私有知识库,提升对话能力
- 用设计者定义好的 Workflow 完成特定任务
- 过程中使用工具完成 LLM模型 无法完成的任务
- 让 LLM模型 写代码,完成数据处理、数学计算
Workflow Agent 非常适合准确性要求较高的场景,以骑手招聘助手案例为例:

骑手招聘助手的Workflow,是当用户问到某个地点附近的站点信息时,调用该工作流:

Workflow Agent业务架构图

ReAct Agent(推理型智能体)
ReAct 是Reasoning + Acting,简单来说就是推理、行动、获得反馈。
ReAct Agent ,是用户的Query 通过LLM模型 的推理,根据推理信息,让Agent 处理事务,事务处理完成后,得到LLM模型 或当前Agent 的处理反馈,再给到Agent Memory ,再推理、行动、获得返回,进行多轮推理 -> 行动 -> 反馈,最后结果,输出结果信息。
为什么有ReAct Agent?
上面我们说到了Workflow Agent ,是根据提前设定好的业务场景进行Workflow ,有较高的准确性。但是生活/工作 中,有很多不确定性,没办法对某些任务进行提前设定步骤,这个时候人们就想到,这点特质像极了神经网络,那我能把设计神经网络的思路用到这里吗?由此诞生了ReAct Agent ,它是利用LLM模型 与各种工具,进行多轮 "推理 -> 行动 -> 反馈",最后得到我们想要的结果。
其中最具有代表的Agent ,就是目前很火的OpenClaw(小龙虾) ,它能够通过用户Query 信息,去调用第三方工具、LLM模型 以及AI大模型应用工程师提前写好的代码,通过多轮 "推理 -> 行动 -> 反馈",从了解用户实际需求,到完成用户需求。
ReAct Agent的核心思维:
有些任务,人类就需要给它试错的空间 ,以及时间上的包容 ,因为人类没能力提前定义当前任务要完成什么事务,也没办法去提前定义,所以必须让它去试错,每次试错都是让LLM模型 去决策到底要怎么办,它会在试错中成长,类似LLM模型 内的预训练阶段 ,最后人类才能得到好用、靠谱、稳定性强的Agent。
举几个简单的用户Query例子:
- 我有份文件里记录了上个月最终的业务数据,找找是哪份文件
- 检查一下直播系统,我的直播间学员们说很卡,但是网络测速是正常的
- 听说明天台风,我明天从深圳飞北京,能正常起飞么?
以上用户Query ,ReAct Agent都可以完成用户下达的任务指令。
我一直秉承着案例是最好的老师,也是最好的教材,以下我以一个简单的案例,来演示ReAct Agent 的"推理 -> 行动 -> 反馈"流程:
输入:3个知识文件 + 1个问题
问题:9 月份销售额不达标的供应商有哪些?
3个知识文件:
- 各类电子产品销售数据.xlsx
- 各地供应商信息.xlsx
- 2023 年供应商月销售额任务管理方案.pdf
推理流程:
| 第1轮 推理 | 第1轮 行动 | 第1轮 反馈 |
|---|---|---|
| 要获取 9 月份供应商销售额数据和达标标准,首先需知道有哪些文件可用,因此需执行ListFileNames 获取所有支持任务的文件名称。 | action:"ListFileNames" | ListFileNames 各类电子产品销售数据.xlsx 各地供应商信息.xlsx 2023 年供应商月销售额任务管理方案.pdf |
| 第2轮 推理 | 第2轮 行动 | 第2轮 反馈 |
|---|---|---|
| 销售额达标标准可能在 "2023 年供应商月销售额任务管理方案.pdf" 中,需通过AskDocument 查询该文件获取 9 月份的达标标准。 | action:"AskDocument" file_name : "2023年供应商月销售额任务管理方案.pdf" file_type : "pdf" query : "2023年供应商9月份的销售额达标标准是多少?" | AskDocument 2023 年供应商月销售额任务管理方案.pdf 2023 年供应商 9 月份的销售额达标标准是多少? 2023 年供应商 9 月份的销售额达标标准是3 万元。 根据文件2023 年各季度销售额任务分配的第三季度(7月 - 9 月) 规定: 9 月销售额任务明确为 3 万元 |
| 第3轮 推理 | 第3轮 行动 | 第3轮 反馈 |
|---|---|---|
| 供应商名单可能在 "各地供应商信息.xlsx"中,需通过InspectExcel 查看该文件结构,确认是否包含供应商 ID、名称等信息。 | action:"InspectExcel" file_name : "各地供应商信息.xlsx" file_type : "xlsx" code : import pandas as pd df = pd.read_excel ("/mnt/data/ 各地供应商信息.xlsx") print (df.columns.tolist ()) print (df.head (3))" | InspectExcel 各地供应商信息.xlsx [' 供应商 ', ' 联系人 ', ' 联系人邮箱 ', ' 内部对接人 '] (1) 0, 北京科技有限公司-张伟, xiaoming123@example.com, 李华; (2)1,上海音响有限公司,李芳, lihua456@example.org,张伟; (3)2,深圳创新科技有限公司,陈瑶, wangli789@example.net,王芳; |
| 第4轮 推理 | 第4轮 行动 | 第4轮 反馈 |
|---|---|---|
| 从"各类电子产品销售数据.xlsx"中筛选 9 月份数据。执行 InspectExcel 动作,探查 "各类电子产品销售数据.xlsx" 的列名和前 3 行数据,以确定销售额和月份所在列。 | action:"InspectExcel" file_name : "各类电子产品销售数据.xlsx" file_type : "xlsx" code : ... | InspectExcel 各类电子产品销售数据.xlsx ['品类', '产品名', '单价(元)', '销售量', '销售日期', '供应商'] (1)手机,Xiaomi Mi 11,4999,20,08-02,北京科技有限公司 (2)耳机,Sony XM4,2999,15,08-03,上海音响有限公司 (3)笔记本,Lenovo X1,8999,10,08-05,深圳创新有限公司; |
| 第5轮 推理 | 第5轮 行动 | 第5轮 反馈 |
|---|---|---|
| 从 "各类电子产品销售数据.xlsx" 中筛选销售日期为 9 月份的记录,按供应商分组汇总销售量和单价,计算销售额。使用AnalyseExcel 工具,对 "各类电子产品销售数据.xlsx" 按销售日期筛选 9 月份数据,按供应商分组,计算每个供应商的销售额总和。 | action : "AnalyseExcel" file_name : "各类电子产品销售数据.xlsx" file_type : "xlsx" code : import pandas as pd df = pd.read_excel ('/mnt/data/ 各类电子产品销售数据.xlsx') df [' 销售日期 '] = pd.to_datetime (df [' 销售日期 ']) september_data = df [df [' 销售日期 '].dt.month == 9] sales_summary = september_data.groupby (' 供应商 ').apply (lambda x: (x [' 单价 (元)'] * x [' 销售量 ']).sum ()).reset_index (name='9 月销售额 (元)') print (sales_summary) | AnalyseExcel 各类电子产品销售数据.xlsx 计算 2023 年 9 月份各供应商的销售额总和 供应商 9 月销售额 (元): (1)0,云林音乐科技有限公司,55738; (2)1,兰州数码有限公司,233974; (3)2,台东计算机科技有限公司,175984; |
| 第6轮 推理 | 第6轮 行动 | 第6轮 反馈 |
|---|---|---|
| 现有 AnalyseExcel 结果包含各供应商 9 月份销售额,达标标准为 3 万元,可通过比较筛选出不达标供应商。 | action:"AnalyseExcel" file_name : "各类电子产品销售数据.xlsx" file_type : "xlsx" code :... | AnalyseExcel 各类电子产品销售数据.xlsx 筛选出 2023 年 9 月份销售额不达标的供应商(销售额 < 3 万元) 供应商 9 月销售额 (元): 16 珠海健康科技有限公司 18320 |
| 第7轮 推理 | 第7轮 行动 | 第7轮 反馈 |
|---|---|---|
| 所有必要数据已齐全,无需额外获取。任务已 完成,输出最终结果。 | action : "FINISH" file_name : "" file_type : "" code : "" | 结束: 输出结果 |
使用了 ReAct 技术的 AI 产品:
- OpenClaw
- AutoGPT
- Perplexity
- Manus
- Cursor
- GenSpark
思维链(Chain of Thought)
链式思考是什么?
你可以把链式思维想象一位老练的侦探站在案发现场。新手会直接喊出"凶手是X",而侦探则会一步步拆解:
"脚印的方向不对,时间线有十分钟空白,这把刀的刀柄指纹位置很反常......所以------"
这就是链式思考 的核心:LLM模型执行任务时,通过输出一系列中间推理过程文字,模拟人类推理过程。
这里面涉及4个角色:
1. 探路者(Action)
他不在意终点在哪,只关心"下一步怎么走"。每一步都是一个小推理,每推理一次,就离答案近一寸。他不跳跃,不抄近道,稳扎稳打。
2. 记录员(Memory)
他把每一步思维都写下来,不藏私。为什么选A不选B?证据在哪里?他把黑箱变成了白箱,让整个推理过程透明可追溯。
3. 调度者(Tools)
他通过不同的工具,在前提之后,推论之中使用。没有跳跃式的直觉,只有工具的结果反馈。
4. 解释者(Planning)
他不仅自己明白,还要让别人明白。通过输出中间步骤,他完成了自我校验------如果中间某步说不通,他立刻就能发现漏洞并修正。
Agent技术架构图:
