核心内容摘要
1.10 面试经典150题-多数元素
它是什么reActReasoning Acting是一个让计算机程序像人一样“边想边做”的框架。
可以把它想象成一个经验丰富的厨师做一道新菜他不会盲目地把所有调料扔进锅里而是先看菜谱思考然后尝一下味道观察再决定加盐还是加糖行动如此循环。
在技术上它通过让语言模型在“思考-行动-观察”的循环中解决问题将大脑的推理能力和手脚的执行能力结合了起来。
它能做什么这个框架擅长处理需要多步骤探索和信息收集的复杂任务。
比如你要安排一次旅行任务不只是“订机票”而是“为我规划一个预算有限的海南五日游”。
reAct驱动的程序会像一个有经验的旅行顾问那样工作先思考“用户要省钱”然后行动“搜索低价航班”观察“发现周一航班便宜”再思考“那酒店周二入住会不会有优惠”接着行动“查询酒店价格”……直到给出完整方案。
它能自动使用各种工具如搜索引擎、计算器、数据库来补全信息缺口。
怎么使用使用reAct通常需要三个组件一个语言模型负责“思考”、一套可调用的工具负责“行动”、一个执行环境负责运行并返回“观察”结果。
具体操作流程如下首先你会用自然语言描述任务比如“找出过去三年诺贝尔文学奖得主及其代表作品”。
程序启动后进入循环思考阶段模型分析当前情况例如“我需要先查获奖年份和名单”。
行动阶段模型调用合适工具如执行网络搜索“
年诺贝尔文学奖得主”。
观察阶段程序获取搜索结果例如“2023年约恩·福瑟挪威剧作家”。
接着循环继续再思考“现在需要找到每位得主的代表作先查约恩·福瑟”。
再行动搜索“约恩·福瑟 代表作品”。
再观察获取“《有人将至》《秋之梦》等”……直到任务完成模型最终汇总所有信息。
一个简化的代码结构通常包含一个循环在每次迭代中解析模型的思考内容执行指定的工具调用将结果反馈给模型并判断是否该结束。
最佳实践要有效运用reAct有几个关键点值得注意提供具体清晰的指令给模型的指令越明确它的思考方向就越准确。
不要说“处理这个数据”而要说“读取这个CSV文件计算第三列的平均值然后用柱状图展示”。
设计好工具工具是模型的“手和脚”。
每个工具的功能应该单
明确、可靠。
比如单独的工具“查询天气”、工具“计算两地距离”这比一个庞杂的“地理信息工具”更有效。
让思考结构化在提示中引导模型按固定格式如“Thought:”、“Action:”、“Observation:”输出便于程序可靠地解析其意图。
限制循环次数为避免程序陷入无限循环或长时间运行需要设置最大迭代次数比如最多思考行动20个回合就必须给出答案或终止。
从简单任务开始先让模型学习正确使用一两个工具解决简单问题再逐步增加任务复杂度这有助于提高整个系统的稳定性。
和同类技术对比与reAct类似的其他框架主要有两种思路纯推理链Chain-of-Thought这种方法只让模型“思考”一步步推导但不行动。
就像一个人坐在房间里仅凭已有知识规划旅行路线无法查询实时航班价格。
它适合纯逻辑或数学问题但无法获取外部新信息。
纯行动Agent without Reasoning一些早期程序会让模型直接调用工具缺少中间的显式思考步骤。
这就像一个厨师不看菜谱也不尝味道直接按习惯放调料容易在复杂任务中出错或跑偏。
reAct的核心优势在于将两者结合。
思考步骤让行动有了依据和调整的机会行动步骤又能用实时信息修正思考。
这使它比纯推理更“接地气”比纯行动更“有计划性”。
当然这种循环也带来了更多的计算和交互开销对于有标准流程的简单任务直接编写固定步骤的程序可能效率更高。