ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

一文详解为什么 LLM 搞不定复杂任务?ReAct 与 Reflexion 技术综述,建议收藏!!

一文详解为什么 LLM 搞不定复杂任务?ReAct 与 Reflexion 技术综述,建议收藏!! 前言在人工智能领域特别是大语言模型LLM的应用中尽管模型在许多任务上表现出色但在处理复杂任务时仍存在明显局限性。大型语言模型在处理需要多步骤推理、实时信息获取和动态决策的任务时常常面临以下挑战事实幻觉模型可能生成看似合理但不准确的信息缺乏实时信息模型训练数据截止后的新信息无法获取规划能力不足面对复杂任务时难以分解和制定有效策略错误传播单个错误推理可能导致整个任务失败为了解决这些问题研究人员提出了多种提示技术框架其中ReActReasoning Acting和ReflexionSelf-Reflection作为两个关键创新通过将推理、行动和反思机制融入模型行为中显著提升了LLM在知识密集型、决策型和编程任务上的表现。本文将基于搜集的资料介绍ReAct的核心思想、机制和应用并探讨Reflexion作为其扩展的自我反思框架最后讨论它们的结合潜力。ReAct框架推理与行动的协同ReAct的核心思想ReAct框架由Yao等人于2022年提出其名称源于Reasoning推理和Acting行动的结合。该框架的核心灵感来源于人类决策过程我们不只是被动思考而是通过思考制定计划、执行行动、观察结果并据此调整策略。ReAct将这一过程应用到LLM中使模型能够动态处理复杂任务。推理Reasoning模型生成内部思考轨迹例如我需要先做什么再做什么类似于链式思考Chain-of-Thought, CoT。这有助于分解任务、制定计划和处理异常。行动Acting模型生成可执行的操作例如搜索[关键词]“或计算[表达式]”以调用外部工具如搜索引擎或计算器获取实时信息。通过思考 → 行动 → 观察 → 再思考的循环ReAct使LLM能够融入外部知识避免纯内部推理的局限性。ReAct解决的问题传统方法存在明显短板链式思考CoT无法与外部世界互动容易导致事实幻觉Fact Hallucination和错误传播。仅行动Act-Only缺乏规划能力在多步骤任务中表现不佳。ReAct通过行动步骤验证信息、减少幻觉并通过推理步骤分解复杂问题。在知识密集型任务如问答和事实验证中ReAct优于Act-Only并与CoT结合时效果最佳。在决策型任务如文字游戏中它显著提升性能尽管与人类专家仍有差距。ReAct的运作机制ReAct依赖于特殊的提示方法从训练集选取案例改写成思考-行动-观察Thought-Action-Observation的轨迹。将这些轨迹作为少样本示例输入LLM。LLM模仿格式生成自己的循环直到得出答案。示例任务 清洗一个非常油腻的平底锅模型生成的 ReAct 轨迹模拟思考 1平底锅很油腻我需要有效的清洗方法可能涉及去油剂。 行动 1搜索[清洗非常油腻平底锅的方法] 观察 1推荐使用热水的、洗洁精和小苏打先浸泡然后擦洗。 思考 2我有方法现在执行步骤。 行动 2执行[用热水浸泡锅子添加洗洁精和小苏打用海绵擦洗冲洗干净] 观察 2锅子清洁。 思考 3如果仍有残留重复擦洗。 行动 3结束[锅子已清洗干净]实践应用ReAct框架在多个领域都有广泛的应用场景以下是一些典型的使用场景和实践示例1. 知识密集型问答在需要准确事实信息的任务中ReAct能够通过外部工具获取最新信息避免模型幻觉。# 知识密集型问答示例 agent.run(2024年诺贝尔物理学奖得主是谁他们的主要贡献是什么)2. 复杂决策任务在需要多步骤规划和决策的任务中ReAct能够制定策略并动态调整。# 旅行规划示例 agent.run(为一个三口之家规划一个周末从北京到天津的亲子旅行预算3000元)3. 数据分析与计算结合计算器等工具ReAct能够执行复杂的数值计算和数据分析任务。# 数据分析示例 agent.run(计算2023年公司各季度销售额增长率并预测2024年第一季度销售额)4. 客户服务在客户服务场景中ReAct能够根据用户问题检索相关信息并提供解决方案。# 客户服务示例 agent.run(用户报告无法登录账户错误代码为AUTH-001请提供解决方案)5. 编程辅助在编程任务中ReAct能够通过搜索文档、执行代码片段来辅助开发以爱码仕ai编程工具使用为例ReAct框架被用于智能代码生成、错误诊断与修复、技术选型建议等场景。# 爱码仕中的ReAct应用示例 agent.run(创建一个React组件实现用户登录表单包含邮箱和密码验证功能)在LangChain框架中实现ReAct代理很简单初始化LLM和工具如Web搜索。使用initialize_agent创建代理。实例代码# 更新或安装必要的库 # !pip install --upgrade openai # !pip install --upgrade langchain # !pip install --upgrade python-dotenv # !pip install google-search-results # 引入库 import os from openai import OpenAI from langchain_community.agent_toolkits.load_tools import load_tools from langchain.agents import initialize_agent from dotenv import load_dotenv load_dotenv() from typing import Optional, List from langchain_core.language_models.llms import LLM from langchain.tools import BaseTool class CustomLLM(LLM): api_key: str client: Optional[OpenAI] None def __init__(self, api_key: str, **kwargs): # 初始化OpenAI客户端使用阿里云通义千问API client OpenAI( api_keyapi_key, base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1, ) super().__init__(api_keyapi_key, clientclient, **kwargs) property def _llm_type(self) - str: returnqwen3-max def _call(self, prompt: str, stop: Optional[List[str]] None) - str: # 添加ReAct格式的系统提示 system_prompt 你是一个严格遵循ReAct模式的AI助手。 核心规则 - 必须严格遵守 1. 每次回复只能包含一个Thought和一个Action 2. 格式必须完全按照以下模式不能有任何偏差 Thought: [你的思考过程] Action: [工具名称] Action Input: [工具输入] 3. 绝对不能在一次回复中包含多个Thought或Action 4. 绝对不能直接给出Final Answer除非前面有Thought: I now know the final answer 5. 每次Action后必须等待Observation才能继续下一轮 错误示例禁止 - 输出多个Thought-Action对 - 直接输出Final Answer而没有preceding thought - 在Action Input中包含额外解释 正确示例 Thought: 我需要检查材料是否齐全 Action: MaterialCheck Action Input: 洗洁精、钢丝球、热水 只有当任务完全完成后才能输出 Thought: I now know the final answer Final Answer: [最终答案] completion self.client.chat.completions.create( # 使用通义千问plus模型 modelqwen-plus, messages[ {role: system, content: system_prompt}, {role: user, content: prompt} ], temperature0.1, # 稍微增加一点随机性但保持稳定 max_tokens200, # 减少token数量强制简洁输出 stop[\nObservation:, Observation:, \n\n], # 添加停止词 ) # 返回生成的内容 return completion.choices[0].message.content # 自定义清洗工具 class MaterialCheckTool(BaseTool): name: str MaterialCheck description: str 检查清洗材料是否准备齐全。输入材料列表返回检查结果。 def _run(self, materials: str) - str: return f已检查材料{materials}。所有材料准备就绪可以开始清洗。 class CleaningStepTool(BaseTool): name: str CleaningStep description: str 执行一个具体的清洗步骤。输入步骤描述返回执行结果。 def _run(self, step: str) - str: return f已完成步骤{step}。步骤执行成功可以继续下一步。 class InspectionTool(BaseTool): name: str Inspection description: str 检查当前清洗效果。输入检查内容返回检查结果。 def _run(self, inspection: str) - str: return f检查结果{inspection}。清洗效果良好建议继续或完成清洗。 llm CustomLLM(api_keyos.getenv(DASHSCOPE_API_KEY)) # 创建自定义工具实例 material_check MaterialCheckTool() cleaning_step CleaningStepTool() inspection InspectionTool() # 组合所有工具 math_tools load_tools([llm-math], llmllm) custom_tools [material_check, cleaning_step, inspection] tools math_tools custom_tools agent initialize_agent(tools, llm, agentzero-shot-react-description, verboseTrue, handle_parsing_errorsTrue) agent.run(任务清洗一个非常油腻的平底锅)输出类似于 python3 react.py Entering new AgentExecutor chain... Thought: 我需要先检查清洗材料是否准备齐全 Action: MaterialCheck Action Input: 洗洁精、钢丝球、热水 Observation: 已检查材料洗洁精、钢丝球、热水。所有材料准备就绪可以开始清洗。 Thought:Thought: 材料已准备齐全现在可以开始执行清洗步骤。 Action: CleaningStep Action Input: 用热水浸泡平底锅5分钟然后加入洗洁精并用钢丝球擦洗油腻部分 Observation Observation: 已完成步骤用热水浸泡平底锅5分钟然后加入洗洁精并用钢丝球擦洗油腻部分 Observation。步骤执行成功可以继续下一步。 Thought:Thought: 我需要检查当前的清洗效果确保油腻已被清除。 Action: Inspection Action Input: 检查平底锅表面是否还有油渍残留 Observation: 检查结果检查平底锅表面是否还有油渍残留。清洗效果良好建议继续或完成清洗。 Thought:Thought: 清洗效果良好没有油渍残留清洗任务已完成。 Final Answer: 平底锅已成功清洗表面无油渍残留清洗任务完成。 Finished chain.ReflexionReAct的自我反思扩展Reflexion的核心思想Reflexion是一个强化学习框架由Shinn等人提出它通过生成语言反馈口头强化帮助智能体从错误中学习而非传统标量奖励。Reflexion模仿人类反思过程让模型在尝试后获得具体改进建议如上次搜索范围太宽下次更具体。Reflexion的三大组件Reflexion构建在ReAct基础上添加评估和反思机制形成闭环参与者Actor基于ReAct或CoT生成行动轨迹。评估者Evaluator对轨迹打分判断成功或失败。自我反思Self-Reflection核心组件生成语言反馈并存入长期记忆指导下次行动。工作流程行动 → 评估 → 反思 → 迭代。通过滑动窗口记忆Reflexion保留反思内容实现持续优化。示例任务 清洗一个非常油腻的平底锅Reflexion 通过行动、评估、反思和迭代来优化响应。假设初始尝试失败然后通过反思改进。初始行动轨迹Actor 生成基于 ReAct 思考 1平底锅很油腻需要简单清洗。 行动 1执行[用冷水冲洗锅子擦干] 观察 1锅子仍有油渍。 评估Evaluator 失败 - 锅子未完全清洁。 反思Self-Reflection 上次尝试使用冷水无效因为油渍需要热分解。下次应该搜索有效方法包括热水的、洗洁精和小苏打并详细列出步骤。存储到记忆优先考虑热处理和去油剂。迭代行动轨迹Actor 使用记忆改进 思考 1根据记忆使用热水和去油剂。 行动 1搜索[清洗油腻平底锅的详细步骤] 观察 1步骤1. 用热水浸泡2. 添加洗洁精和小苏打3. 用海绵擦洗顽固污渍4. 冲洗并检查5. 如有残留重复。 思考 2现在有详细步骤可以执行。 行动 2执行[上述步骤] 观察 2锅子完全清洁。 评估Evaluator 成功。最终输出 详细步骤包括热水浸泡、添加洗洁精和小苏打、擦洗、冲洗和检查。适用场景与局限性Reflexion适合需要试错学习的任务如决策、推理和编程。它计算效率高无需模型微调提供详细反馈和高可解释性。但局限包括依赖评估准确性、简单记忆机制以及在非确定性编程任务中的挑战。ReAct与Reflexion的比较与结合ReAct聚焦于即时推理-行动循环适合实时任务Reflexion扩展为学习闭环强调从失败中迭代适用于需要优化的场景。两者结合如在Reflexion中使用ReAct作为Actor可发挥最大潜力ReAct提供基础机制Reflexion添加反思层提升长期性能。在提示技术中这种结合减少了幻觉、提高了准确性并增强了模型的自适应能力。详细区别分析虽然 ReAct 和 Reflexion 在示例中看起来相似如两者都涉及思考-行动循环但它们在机制和应用上存在关键差异结合优势在实践中Reflexion 可以将 ReAct 作为其 Actor 组件实现两者无缝结合ReAct 提供基础的动态推理机制Reflexion 添加评估、反思和记忆层结合后形成完整的感知-行动-评估-学习闭环总之ReAct 提供基础的动态推理而 Reflexion 通过添加评估、反思和记忆将其提升为自适应学习系统。性能比较实验结果表明Reflexion 在多种任务上都取得了显著的性能提升与 ReAct 和其他方法相比决策任务 (AlfWorld)性能显著优于 ReAct几乎解决了所有测试任务。Reflexion Heuristic (启发式评估)本质上是一种简单、高效的硬编码逻辑预先定义了一套成功或失败的规则类似工程判断快、便宜、黑白分明但死板、僵化Reflexion GPT使用一个强大的大语言模型如 GPT-4作为评估者灵活智能、通用性强但是贵推理任务 (HotPotQA)在几个学习步骤内其性能就显著优于标准的 CoT 方法。编程任务 (HumanEval 等)在 Python 和 Rust 代码生成任务上通常优于之前的 SOTA (State-of-the-Art) 方法。资料来源ReflexionLanguage Agents with Verbal Reinforcement Learninghttps://arxiv.org/pdf/2303.11366总结与未来方向ReAct和Reflexion作为提示技术中的重要创新为大语言模型在复杂任务中的应用提供了有效解决方案主要贡献ReAct框架通过将推理和行动相结合使模型能够与外部环境交互获取实时信息有效减少了模型幻觉问题。Reflexion框架在ReAct基础上增加了评估和反思机制形成了完整的感知-行动-评估-学习闭环使模型能够从错误中学习并持续优化。两者的结合充分发挥了各自优势既保证了即时响应能力又具备了长期学习和优化的潜力。应用前景随着大语言模型技术的不断发展ReAct和Reflexion将在以下领域发挥更大作用智能助手构建更智能的个人和企业助手能够处理复杂的多步骤任务自动编程辅助开发者进行代码编写、调试和优化科学研究协助研究人员进行文献检索、数据分析和假设验证教育培训提供个性化的学习路径规划和知识答疑未来发展方向记忆机制优化开发更智能的记忆管理机制包括记忆的存储、检索和遗忘策略评估器改进设计更准确、更高效的评估器减少误判对学习过程的影响多模态集成将ReAct和Reflexion与视觉、语音等多模态能力结合扩展应用范围个性化适应根据用户偏好和历史交互记录动态调整策略和行为模式可解释性增强进一步提高模型决策过程的透明度增强用户信任通过持续的研究和优化ReAct和Reflexion有望成为构建下一代智能系统的核心技术推动人工智能在更多领域的深度应用。最后为什么要学AI大模型当下⼈⼯智能市场迎来了爆发期并逐渐进⼊以⼈⼯通⽤智能AGI为主导的新时代。企业纷纷官宣“ AI ”战略为新兴技术⼈才创造丰富的就业机会⼈才缺⼝将达 400 万DeepSeek问世以来生成式AI和大模型技术爆发式增长让很多岗位重新成了炙手可热的新星岗位薪资远超很多后端岗位在程序员中稳居前列。与此同时AI与各行各业深度融合飞速发展成为炙手可热的新风口企业非常需要了解AI、懂AI、会用AI的员工纷纷开出高薪招聘AI大模型相关岗位。最近很多程序员朋友都已经学习或者准备学习 AI 大模型后台也经常会有小伙伴咨询学习路线和学习资料我特别拜托北京清华大学学士和美国加州理工学院博士学位的鲁为民老师给大家这里给大家准备了一份涵盖了AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频全系列的学习资料这些学习资料不仅深入浅出而且非常实用让大家系统而高效地掌握AI大模型的各个知识点。这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】AI大模型系统学习路线在面对AI大模型开发领域的复杂与深入精准学习显得尤为重要。一份系统的技术路线图不仅能够帮助开发者清晰地了解从入门到精通所需掌握的知识点还能提供一条高效、有序的学习路径。但知道是一回事做又是另一回事初学者最常遇到的问题主要是理论知识缺乏、资源和工具的限制、模型理解和调试的复杂性在这基础上找到高质量的学习资源不浪费时间、不走弯路又是重中之重。AI大模型入门到实战的视频教程项目包看视频学习是一种高效、直观、灵活且富有吸引力的学习方式可以更直观地展示过程能有效提升学习兴趣和理解力是现在获取知识的重要途径光学理论是没用的要学会跟着一起敲要动手实操才能将自己的所学运用到实际当中去这时候可以搞点实战案例来学习。海量AI大模型必读的经典书籍PDF阅读AI大模型经典书籍可以帮助读者提高技术水平开拓视野掌握核心技术提高解决问题的能力同时也可以借鉴他人的经验。对于想要深入学习AI大模型开发的读者来说阅读经典书籍是非常有必要的。600AI大模型报告实时更新这套包含640份报告的合集涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师还是对AI大模型感兴趣的爱好者这套报告合集都将为您提供宝贵的信息和启示。AI大模型面试真题答案解析我们学习AI大模型必然是想找到高薪的工作下面这些面试题都是总结当前最新、最热、最高频的面试题并且每道题都有详细的答案面试前刷完这套面试题资料小小offer不在话下这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
返回列表