AI认知篇1:什么是React agent

前言

这是我的agent系列文章的第一篇,该系列分为三部分:

  • AI认知篇:详细讲解相关基础概念
  • AI实践篇:分享诸如skills怎么写、怎么ai coding、怎么写好prompt等的最佳实践
  • AI八股篇:分享我自己整理的应付大模型应用开发岗位必备的八股笔记

如果觉得有帮助,欢迎关注我并期待后续文章!预期是日更哦!当天没更可能是因为太累了,周末会弥补的。

一、ReAct 核心:Reasoning + Acting,边想边做

ReAct 拆开就是 推理(Reasoning)+ 行动(Acting),核心逻辑:

AI 不先定死全流程,而是走一步、看一步、想一步,循环完成任务

通俗对比

  • 传统方式:出门前查好全程路线,严格按路线走
  • ReAct:到路口看路牌、看环境,再决定左转 / 右转,灵活调整

二、工作流程:观察 → 思考 → 行动(循环)

以「查北京天气 + 穿衣建议」为例,极简链路:

  1. 观察:接收用户问题
  2. 思考:判断需要查天气
  3. 行动:调用天气工具
  4. 观察:拿到温度、天气数据
  5. 思考:需要查穿衣建议
  6. 行动:调用穿搭知识库
  7. 观察:拿到穿搭方案
  8. 思考:需要保存结果
  9. 行动:写入文件
  10. 观察:任务完成

全程无固定步骤,每一步都依赖上一步结果动态决策。

三、为什么要用 ReAct?

传统固定流程的痛点

遇到 API 报错、数据异常、需求变更,直接卡死。

ReAct 优势

ReAct 的优势就在于它能根据实际情况灵活应对,而不是遇到意外就卡住。

小代价

行为可预测性略低,偶尔会出现无效操作,但复杂场景下收益远大于成本。

四、ReAct 5 个核心要素

  1. 历史上下文:记录所有思考、行动、结果,避免重复 / 走错
  2. 当前环境信息:用户输入、系统状态、实时数据等
  3. LLM 大脑:负责推理、做决策
  4. 工具 / 动作(toolcall):搜索、查询、读写文件等实际操作
  5. 观察结果:工具返回内容,驱动下一轮推理

五、执行逻辑举例

下面用一个完整的例子,看看 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#
全部评论

相关推荐

02-24 20:14
门头沟学院 Java
嘻嘻谨慎:加v不会被嘎腰子吧😃😃😃
点赞 评论 收藏
分享
评论
2
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务