AI认知篇1:什么是React agent
前言
这是我的agent系列文章的第一篇,该系列分为三部分:
- AI认知篇:详细讲解相关基础概念
- AI实践篇:分享诸如skills怎么写、怎么ai coding、怎么写好prompt等的最佳实践
- AI八股篇:分享我自己整理的应付大模型应用开发岗位必备的八股笔记
如果觉得有帮助,欢迎关注我并期待后续文章!预期是日更哦!当天没更可能是因为太累了,周末会弥补的。
一、ReAct 核心:Reasoning + Acting,边想边做
ReAct 拆开就是 推理(Reasoning)+ 行动(Acting),核心逻辑:
AI 不先定死全流程,而是走一步、看一步、想一步,循环完成任务。
通俗对比
- 传统方式:出门前查好全程路线,严格按路线走
- ReAct:到路口看路牌、看环境,再决定左转 / 右转,灵活调整
二、工作流程:观察 → 思考 → 行动(循环)
以「查北京天气 + 穿衣建议」为例,极简链路:
- 观察:接收用户问题
- 思考:判断需要查天气
- 行动:调用天气工具
- 观察:拿到温度、天气数据
- 思考:需要查穿衣建议
- 行动:调用穿搭知识库
- 观察:拿到穿搭方案
- 思考:需要保存结果
- 行动:写入文件
- 观察:任务完成
全程无固定步骤,每一步都依赖上一步结果动态决策。
三、为什么要用 ReAct?
传统固定流程的痛点
遇到 API 报错、数据异常、需求变更,直接卡死。
ReAct 优势
ReAct 的优势就在于它能根据实际情况灵活应对,而不是遇到意外就卡住。
小代价
行为可预测性略低,偶尔会出现无效操作,但复杂场景下收益远大于成本。
四、ReAct 5 个核心要素
- 历史上下文:记录所有思考、行动、结果,避免重复 / 走错
- 当前环境信息:用户输入、系统状态、实时数据等
- LLM 大脑:负责推理、做决策
- 工具 / 动作(toolcall):搜索、查询、读写文件等实际操作
- 观察结果:工具返回内容,驱动下一轮推理
五、执行逻辑举例
下面用一个完整的例子,看看 ReAct 是怎么一步步解决问题的。假设任务是:"帮我查一下北京今天天气怎么样,适合穿什么衣服。"
Round 1 | 无 | 空 | 已知 **: 当前历史上下文 : &{历史上下文} 当前环境信息 **: &{当前环境信息} 用户目标 **:**"帮我查一下北京今天天气怎么样,适合穿什么衣服。"做出下一步的决策 .你必须最少使用一个工具来实现该决策 | 天气查询工具调用:查询 "北京今天天气" | 天气查询工具返回:获取到天气数据:温度 25°C,晴天,湿度 60%,风速 3m/s |
Round 2 | 已获取北京天气数据(25°C,晴天,湿度 60%,风速 3m/s) | 天气工具:无额外环境信息 | 同上,提示词不会变化 | 穿衣建议知识库查询工具调用:查询 "25度晴天适合穿什么衣服" | 穿衣建议知识库查询工具返回:25度晴天建议穿短袖 T 恤或薄长袖,可以带一件薄外套以防早晚温差,建议戴帽子和涂防晒霜 |
Round 3 | 天气数据(25°C,晴天,湿度 60%,风速 3m/s);已获取穿衣建议:25度晴天建议穿短袖 T 恤或薄长袖,可以带一件薄外套以防早晚温差,建议戴帽子和涂防晒霜 | 天气工具:无额外环境信息、穿衣知识库工具:无额外环境信息 | 同上,提示词不会变化 | writeToFile工具调用:内容为"北京今天天气:25°C,晴天,湿度 60%。建议穿短袖 T 恤或薄长袖,可以带一件薄外套以防早晚温差,建议戴帽子和涂防晒霜" | writeToFile工具返回:建议已写入到文件 weather_suggestion.md |
从这里我们也可能看到,核心其实就是
已知:
当前历史上下文:&{历史上下文}
当前环境信息:&{当前环境信息}
用户目标:"帮我查一下北京今天天气怎么样,适合穿什么衣服。"
做出下一步的决策:
你必须最少使用一个工具来实现该决策。
最终输出:建议已经写入到文件 weather_suggestion.md,你可以通过打开这个文件来看到具体建议。
从这个例子可以看出,ReAct 不是一开始就知道所有步骤,而是根据每轮的观察结果,动态决定下一步该做什么。如果 Round 1 搜索失败了,它可能会尝试其他搜索关键词,或者换一个策略。这种灵活性正是 ReAct 的核心优势。
精简伪代码
每一轮:拿历史 + 环境→LLM 推理→调用工具→拿到结果→更新上下文
主循环:重复上述步骤,直到任务完成或达到最大轮次
// 执行一个轮次:核心单轮推理-行动逻辑
函数 执行一个轮次(用户目标, 历史上下文):
// 1. 获取当前环境信息
当前环境信息 = 获取当前环境信息()
// 2. 构建提示词(替换占位符)
提示词模板 = "已知:\n当前历史上下文:${历史上下文}\n当前环境信息:${当前环境信息}\n用户目标:\"${用户目标}\"\n\n做出下一步的决策\n\n你必须最少使用一个工具来实现该决策"
完整提示词 = 替换占位符(提示词模板, {
历史上下文: 历史上下文,
当前环境信息: 当前环境信息,
用户目标: 用户目标
})
// 3. 调用 LLM 进行推理(思考过程隐藏,直接输出 toolcall)
工具调用结果 = 调用语言模型(完整提示词, 历史上下文)
// 4. 解析工具调用
工具名称 = 解析工具名称(工具调用结果)
工具参数 = 解析工具参数(工具调用结果)
// 5. 执行工具调用
观察结果 = 执行工具(工具名称, 工具参数)
// 6. 更新历史上下文
新历史上下文 = 追加到历史上下文(历史上下文, {
行动: 工具调用结果,
观察结果: 观察结果
})
// 7. 返回结果
返回 {
观察结果: 观察结果,
新历史上下文: 新历史上下文
}
结束函数
// 主循环:控制 ReAct 流程的轮次与终止条件
函数 执行ReAct流程(用户目标):
历史上下文 = 空
当前轮次 = 1
最大轮次 = 10
当 当前轮次 <= 最大轮次 且 未完成任务:
结果 = 执行一个轮次(用户目标, 历史上下文)
历史上下文 = 结果.新历史上下文
如果 判断任务已完成(结果.观察结果):
中断循环
当前轮次 = 当前轮次 + 1
结束循环
返回 历史上下文
结束函数
其他
考研失利想速成冲春招的考研看看我发过的这篇帖子:论考研失利如何冲春招
想要学习Java冲实习或冲春招的,我能助你一臂之力,我之前整理了高质量可速成的魔改外卖项目话术和7000字轮子项目话术,还有超全超精品八股大全专栏,怎么写简历,怎么包装实习经历,怎么0基础速成冲春招和实习等等精品帖子,大家可以去看看我的精品文章汇总帖子:往期精品秋招帖子汇总
我的java和大模型应用开发全专栏(20w人学习,超千人订阅,牛客最受欢迎最高质量java八股专栏,内容包含: 1.八股大全:多一句没有少一句不行的最精简八股整理,完全可以应付校招社招的八股拷打! 2.速成项目话术:目前有魔改苍穹外卖项目话术(额外扩展了很多技术亮点),能速成拿去面试,后面会更新魔改黑马点评、商城项目等等热门高质量项目话术 3.智力题超详细题解汇总; 4.面试时非技术问题话术整理,绝对震惊面试官一年; 5.算法lc hot100全题系列题解:绝对通俗易懂;6、场景题汇总:快速冲刺秋招专栏
#春招##java##大模型应用开发##agent##ai#