从 “瞎猜” 到 “精准”:一文搞懂 LLM reAct 框架的底层逻辑与实战
核心概念打破“幻觉”的循环想象一下你正在主导设计一个复杂的业务系统比如一个需要处理海量高校数据的智能助手。如果用户问大模型“找出计算机系上个月登记的、采用率最高的三本教材并核对它们在最新系统里的定价。”传统大模型裸聊它没有内部最新的业务数据于是它会根据它几年前训练过的语料一本正经地“胡说八道”这就是幻觉。使用了 ReAct 框架的大模型它不会立刻给你答案而是会开启一个经典的“思考 (Thought) - 行动 (Action) - 观察 (Observation)”的严密推理循环。ReAct 的“三步走”工作流大模型在后台的“内心戏”和操作步骤会变成这样第一轮循环 思考 (Thought)“用户需要计算机系上个月采用率最高的教材。我不知道这些信息。我需要先去系统里查找对应的数据库表。”️ 行动 (Action)触发系统工具[查询特定数据表(目标教材登记表, 院系计算机, 时间上个月)]。 观察 (Observation)工具返回了结果“已找到 50 条记录按采用率排序前三的是《数据结构》、《计算机网络》、《操作系统》。”第二轮循环 思考 (Thought)“好的我已经拿到了前三本书的名字。现在我需要去另一个系统核对这三本书的最新定价。”️ 行动 (Action)触发工具[查询价格接口(书籍名单[数据结构, 计算机网络, 操作系统])]。 观察 (Observation)工具返回结果“《数据结构》58元《计算机网络》65元《操作系统》45元。”最终结论 思考 (Thought)“我现在收集齐了所有需要的信息可以整理成最终答案回复用户了。” 输出 (Output)结构化、准确地将答案呈现给用户。为什么 ReAct 如此重要有理有据告别瞎编它强迫大模型在给出最终答案前必须先在“思考”环节写出它的逻辑推导过程。与现实世界接轨通过“行动”环节大模型可以调用你写好的各种 API比如直接去查某个特定的数据库表而不是在庞杂的知识库里瞎找获取实时、准确的信息。极高的可控性和可解释性作为产品设计者你可以清晰地在后台日志里看到模型卡在了哪一步、是不是调用错了工具。这就好比你在看一个员工的工作汇报很容易就能找出流程上的问题并进行修正。既然你已经掌握了 ReAct 这个让大模型长出“手脚”的底层逻辑不妨顺着这个思路推演一下在设计一个实际的 Agent 时为了避免它滥用工具或者查错地方在它的Thought(思考) 环节你会如何设计底层的提示词来精准引导它优先去匹配我们指定的数据表呢ReAct 框架Reasoning and Acting的核心在于将“推理” (Thought)和“行动” (Action)结合起来。它不仅让模型给出一个答案还要求模型写下它的思考过程并决定去调用什么工具比如搜索、计算器、代码解释器等。下面我为你准备了三个不同场景的 ReAct Prompt 例子你可以直接参考或根据自己的工具集进行修改。1. 通用百科搜索场景最经典的用法这个例子展示了模型如何通过分步搜索来解决一个复杂的、需要多步查询的问题。系统提示词 (System Prompt):你是一个具备推理能力的助手。你可以通过以下格式来回答问题 Question: 用户的输入问题 Thought: 思考你应该做什么以及你还需要什么信息 Action: 选择一个工具搜索[关键词] Observation: 工具返回的结果由系统提供 ... (重复 Thought/Action/Observation) Thought: 我现在知道最终答案了 Final Answer: 最终的详细回答 可用工具 - 搜索[查询词]: 在互联网上搜索信息。用户提问 (User): 谁是 2024 年巴黎奥运会男子百米冠军他比博尔特的世界纪录慢了多少秒模型推理过程 (示例):Thought:我需要先确认 2024 年巴黎奥运会男子百米冠军是谁及其成绩然后查找博尔特的世界纪录成绩最后进行减法计算。Action:搜索[2024年巴黎奥运会男子百米冠军及成绩]Observation:冠军是美国的诺亚·莱尔斯 (Noah Lyles)成绩是 9.79 秒。Thought:现在我知道了莱尔斯的成绩是 9.79 秒。接下来我需要确认尤塞恩·博尔特保持的男子百米世界纪录。Action:搜索[博尔特男子百米世界纪录]Observation:尤塞恩·博尔特在 2009 年柏林世锦赛创下的世界纪录是 9.58 秒。Thought:莱尔斯是 9.79 秒博尔特是 9.58 秒。计算差值9.79 - 9.58 0.21 秒。Final Answer:2024 年巴黎奥运会男子百米冠军是诺亚·莱尔斯成绩为 9.79 秒。他比尤塞恩·博尔特 9.58 秒的世界纪录慢了 0.21 秒。2. 数据处理与计算场景这个例子展示了如何利用 ReAct 调用 Python 或计算器来处理逻辑性更强的任务。系统提示词 (System Prompt):你是一个数据分析专家。请按以下流程思考 Thought: 分析当前需要进行的计算步骤。 Action: 调用工具 python_interpreter[代码] 运行计算。 Observation: 代码运行结果。 Final Answer: 结论。 可用工具 - python_interpreter[代码]: 执行 Python 代码进行数学计算或数据处理。用户提问 (User):我现在有 50000 元年化利率是 3.5%复利计算5 年后我总共能拿到多少钱模型推理过程 (示例):Thought:这是一个复利计算问题。公式是 $A P(1 r)^n$。其中 P50000, r0.035, n5。我需要写一段 Python 代码来计算。Action:python_interpreter[print(50000 * (1 0.035)**5)]Observation:59384.31509375Thought:计算结果已经出来了约为 59384.32 元。Final Answer:根据复利公式计算50000 元以 3.5% 的年化利率投资 5 年后总金额约为 59,384.32 元。3. 企业内网/私有知识库场景这个例子模拟了在办公自动化中模型如何决定去查询 API 或数据库。系统提示词 (System Prompt):你是一个企业助理。你可以访问内部数据库。 格式 Thought - Action[API名称: 参数] - Observation - Final Answer 可用工具 - get_user_info[姓名]: 获取员工职位和部门。 - get_calendar[姓名, 日期]: 获取该员工当天的日程安排。用户提问 (User):张三下午 3 点有空参加产品评审会吗模型推理过程 (示例):Thought:我需要先确认“张三”的具体信息然后查询他今天的日程表。Action:get_user_info[张三]Observation:姓名张三部门产品部职位产品经理。Thought:确认了身份。现在查询张三在 2026 年 3 月 23 日今天的日程。Action:get_calendar[张三, 2026-03-23]Observation:14:00-15:30 部门周会16:00-17:00 客户沟通。Thought:张三下午 2:00 到 3:30 有部门周会所以 3:00 他正在开会没有空。Final Answer:张三今天下午 3:00 没有空他当时正参加部门周会14:00-15:30。建议安排在 15:30 之后或 14:00 之前。给你的建议在使用 ReAct 框架时Few-shot (少样本提示)非常重要。在 System Prompt 后面放 1-2 个完整的Thought/Action/Observation/Final Answer例子能极大地提高模型遵循格式的稳定性。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2441898.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!