agent实习都干什么?什么是ReAct和Planning & Extractor?

在构建AI Agent(智能体)时,如何引导大模型有效完成复杂任务是一个核心问题。当前主流范式主要有两种:ReAct(推理+行动)Planning & Extractor(规划+提取器)。它们都旨在增强模型的自主性和任务执行能力,但在工作流程和适用场景上存在显著差异。本文将通过实例对比两者的异同,帮助企业根据实际需求选择合适范式。

一、ReAct范式

ReAct由Shunyu Yao等人提出,其核心思想是让模型在生成过程中交替进行“推理”和“行动”。模型会先思考当前状态(Reasoning),然后决定采取什么行动(Acting),如调用工具、查询知识库,之后根据行动结果再次推理,直至完成任务。这种动态循环使模型能够根据环境反馈实时调整策略,特别适合需要多步交互、结果不确定的任务。

实例:旅游出行建议助手

用户提问:“明天北京天气如何?适合去长城吗?”

假设模型具备天气查询工具get_weather(city, date)和地图工具get_distance(location1, location2)

ReAct执行过程模拟

思考1:用户想知道北京明天的天气,以及是否适合去长城。我需要先查询天气。
行动1:调用 get_weather(city="北京", date="明天")
观察1:天气晴朗,气温15-25℃,微风。

思考2:天气很好,适合户外活动。但还需要考虑长城的具体位置和交通情况。查询从市区到长城的距离。
行动2:调用 get_distance("北京市中心", "八达岭长城")
观察2:距离约70公里,车程约1.5小时。

思考3:天气晴朗,距离适中,适合前往。但需提醒用户注意交通和防晒。
最终回答:明天北京天气晴朗,气温15-25℃,非常适合游览长城。从市区到八达岭约70公里,建议早点出发并做好防晒。

特点:每一步思考都基于前一步的观察,推理和行动紧密耦合,模型自主决定下一步动作。

二、Planning & Extractor范式

Planning & Extractor范式采用分阶段处理的方式。首先由模型(或规则)对任务进行规划,分解为一系列有序步骤;然后依次执行这些步骤(可能调用工具);最后通过一个提取器(可以是模型或代码)从执行结果中抽取出关键信息,生成最终答案。该范式强调任务的分解和结果的精炼,适用于流程相对固定、输出格式要求明确的场景。

实例:同样的旅游出行建议助手

Planning & Extractor执行过程模拟

  1. 规划阶段:步骤1:查询北京明天的天气。步骤2:查询北京到长城的距离。步骤3:根据天气和距离,综合判断是否适合去长城。
  2. 执行阶段(按顺序执行):执行1:调用 get_weather(city="北京", date="明天") → 结果:晴朗,15-25℃执行2:调用 get_distance("北京市中心", "八达岭长城") → 结果:70公里,1.5小时
  3. 提取与生成阶段:提取器接收执行结果,分析:天气晴朗,温度适宜;距离70公里,属于可接受范围。生成最终回答:“明天北京天气晴朗,适合户外活动。长城距离市区约70公里,车程1.5小时,建议前往,注意防晒和补水。”

特点:规划与执行分离,执行结果被统一交给提取器处理,提取器可专门针对输出格式进行优化(如结构化数据、摘要等)。

三、异同对比

工作流程

推理-行动循环,动态迭代

规划 → 执行 → 提取,线性阶段

决策灵活性

高,可根据中间结果调整后续动作

低,计划一旦制定,执行相对固定

工具调用次数

不确定,由模型动态决定

确定,由计划步骤决定

输出生成方式

在循环中逐步构建,最终整合

由提取器统一处理执行结果后生成

适用场景

开放式探索、需多步推理的任务(如科研助手、复杂问答)

流程清晰、输出结构化的任务(如报表生成、信息抽取)

实现复杂度

需要设计循环机制和停止条件

相对简单,各阶段可独立优化

典型应用

AutoGPT、BabyAGI等自主智能体

数据ETL流程、标准化报告生成

相同点

  • 都支持调用外部工具和知识库。
  • 都旨在提升模型完成复杂任务的能力。
  • 都需要对模型输出进行约束,避免偏离任务。

不同点的核心在于:ReAct将决策过程融入执行中,而Planning & Extractor将决策(规划)与执行分离。ReAct更像一个“思考者+行动者”,边想边做;Planning & Extractor更像一个“项目经理+执行者+秘书”,先定计划,再执行,最后整理汇报。

四、选择建议

  • 如果任务需要根据实时反馈调整策略(如动态搜索信息、多轮对话中的决策),ReAct更具优势。
  • 如果任务流程固定,且对输出格式有严格要求(如周报生成、数据汇总),Planning & Extractor更高效、更可控。

在实际企业应用中,两种范式可以结合:例如先用Planning制定高层计划,然后在每个步骤内部采用ReAct式的动态推理,实现灵活性与结构化的平衡。

通过理解这两种范式的异同,开发人员可以针对具体场景设计更合理的AI Agent架构,提升任务完成的质量与效率。

五、 一图流

#AI求职实录#
全部评论

相关推荐

02-16 01:39
南昌大学 Java
坚持无悔意无休:xhs上集美最爱说谎博人眼球
点赞 评论 收藏
分享
02-14 07:38
已编辑
门头沟学院 Java
2.4 一面2.6 二面2.9 三面(hr面)2.13 oc1.15号收到面试电话那会就开始准备,因为一开始没底所以选择推迟一段时间面试,之后开始准备八股,准备实习可能会问的东西,这期间hot100过了有六七遍,真的是做吐了快,八股也是背了忘,忘了背,面经也看了很多,虽然最后用上的只有几道题,可是谁知道会问什么呢自从大二上开始学java以来,一路走来真的太痛了,一开始做外卖,点评,学微服务,大二下五六月时,开始投简历,哎,投了一千份了无音讯,开始怀疑自己(虽然能力确实很一般),后来去到一家小小厂,但是并不能学到什么东西,而且很多东西都很不规范,没待多久便离开,大二暑假基本上摆烂很怀疑自己,大三上因为某些原因开始继续学,期间也受到一俩个中小厂的offer,不过学校不知道为啥又不允许中小厂实习只允许大厂加上待遇不太好所以也没去,感觉自己后端能力很一般,于是便打算转战测开,学习了一些比较简单的测试理论(没有很深入的学),然后十二月又开始继续投,java和测开都投,不过好像并没有几个面试,有点打击不过并没有放弃心里还是想争一口气,一月初因为学校事比较多加上考试便有几天没有继续投,10号放假后便继续,想着放假应该很多人辞职可能机会大一点,直到接到字节的面试,心里挺激动的,总算有大厂面试了,虽然很开心,但同时压力也很大,心里真的很想很想很想进,一面前几天晚上都睡不好觉,基本上都是二三点睡六七点醒了,好在幸运终于眷顾我一次了(可能是之前太痛了),一面三十几分钟结束,问的都不太难,而且面试官人挺好但是有些问题问的很刁钻问到了测试的一些思想并不是理论,我不太了解这方面,但是也会给我讲一讲他的理解,但是面完很伤心觉得自己要挂了。但是幸运的是一面过了(感谢面试官),两天后二面,问的同样不算难,手撕也比较简单,但也有一两个没答出来,面试官人很好并没有追问,因为是周五进行的二面,没有立即出结果,等到周一才通知到过了,很煎熬的两天,根本睡不好,好在下周一终于通知二面过了(感谢面试官),然后约第二天三面,听别的字节同学说hr面基本上是谈薪资了,但是我的并不是,hr还问了业务相关的问题,不过问的比较浅,hr还问我好像比较紧张,而且hr明确说了还要比较一下,我说我有几家的面试都拒了就在等字节的面试(当然紧张,紧张到爆了要),三面完后就开始等结果,这几天干啥都没什么劲,等的好煎熬,终于13号下午接到了电话通知oc了,正式邮件也同时发了,接到以后真的不敢信,很激动但更重要的是可以松一口气了,可以安心的休息一下了终于可以带着个好消息过年了,找实习也可以稍微告一段落了,虽然本人很菜,但是感谢字节收留,成为忠诚的节孝子了因为问的比较简单,面经就挑几个记得的写一下一面:1.实习项目的难点说一下2.针对抖音评论设计一下测试用例3.手撕:合并两个有序数组二面:1.为什么转测开2.线程进程区别,什么场景适合用哪个3.发送一个朋友圈,从发出到别人看到,从数据流转的角度说一下会经历哪些过程4.针对抖音刷到广告视频设计测试用例5.手撕:无重复字符的最长字串
查看8道真题和解析
点赞 评论 收藏
分享
KKorz:是这样的,还会定期默写抽查
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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