LLMs LangChain结合推理和行动ReAct: Combining reasoning and action

LLMs LangChain结合推理和行动ReAct: Combining reasoning and action

在上一个视频中,您看到了如何使用结构化提示来帮助LLM编写解决复杂数学问题的Python脚本。使用PAL的应用程序可以将LLM连接到Python解释器以运行代码并将答案返回给LLM。大多数应用程序将要求LLM管理更复杂的工作流程,包括与多个外部数据源和应用程序的交互。在本视频中,您将探讨一种名为ReAct的框架,该框架可以帮助LLM规划和执行这些工作流程。

ReAct是一种结合了思维链与行动规划的提示策略。该框架由2022年普林斯顿大学和谷歌的研究人员提出。该论文开发了一系列基于Hot Pot QA问题和Fever问题的复杂提示示例。

www.zeeklog.com - LLMs LangChain结合推理和行动ReAct: Combining reasoning and action

Hot Pot QA是一个多步问题回答基准,需要对两个或更多维基百科段落进行推理,而Fever是一个使用维基百科段落来验证事实的基准。右侧的图中显示了来自论文的一些示例提示,我们将很快探讨其中一个,所以现在不必担心阅读本幻灯片上的提示。您可以在视频后的阅读练习中更详细地查看图表。

ReAct使用结构化示例来向大型语言模型展示如何推理问题并决定采取的行动,以使其更接近解决方案。示例提示以一个需要多个步骤来回答的问题开始。在此示例中,目标是确定两本杂志中哪一本首次出版。

www.zeeklog.com - LLMs LangChain结合推理和行动ReAct: Combining reasoning and action

示例然后包括相关的思考-行动-观察(T-A-O)三元字符串。思考是解决问题和确定要采取的行动的推理步骤。

www.zeeklog.com - LLMs LangChain结合推理和行动ReAct: Combining reasoning and action

在报纸出版的示例中,提示指定模型将搜索两本杂志并确定哪本首次出版。

为了使模型能够与外部应用程序或数据源进行交互,它必须从预定的列表中确定要采取的操作。在ReAct框架的情况下,作者创建了一个小型Python API,用于与维基百科进行交互。三个允许的操作是搜索(search,查找特定主题的维基百科条目)、查找(lookup,搜索包含指定关键字的维基百科页面)和完成(finish,模型确定已经得出答案时执行的操作)。

www.zeeklog.com - LLMs LangChain结合推理和行动ReAct: Combining reasoning and action

正如您在上一幻灯片上所看到的,提示中的思考标识了要进行的两次搜索,每次搜索一本杂志。在此示例中,第一次搜索将是关于“Arthur’s magazine”的搜索。操作使用特定的方括号表示法格式化,如您在这里看到的,以便模型可以以相同的方式格式化其完成。Python解释器搜索此代码以触发特定的API操作。

www.zeeklog.com - LLMs LangChain结合推理和行动ReAct: Combining reasoning and action

提示模板的最后部分是观察,这是外部搜索提供的新信息带入提示的上下文的地方。

www.zeeklog.com - LLMs LangChain结合推理和行动ReAct: Combining reasoning and action

然后,模型为了解释提示重复这个循环,直到获得最终答案。在第二个思考中,提示说明了“Arthur’s magazine”的创刊年份并确定解决问题所需的下一步。第二个操作是搜索“first for women”,第二个观察包含了发布的起始日期,这种情况下是1989年的文本。此时,已知回答问题所需的所有信息。

www.zeeklog.com - LLMs LangChain结合推理和行动ReAct: Combining reasoning and action

第三个思考中说明了“first for women”的创刊年份,然后提供了用于确定哪本杂志首次出版的明确逻辑。最后一个操作是完成循环并将答案传递回用户。

www.zeeklog.com - LLMs LangChain结合推理和行动ReAct: Combining reasoning and action

需要注意的是,在ReAct框架中,LLM只能从一组由示例提示文本前置的一组说明中选择操作。以下是说明的全文。首先,任务被定义,告诉模型使用您刚刚详细探讨的提示结构来回答问题。

www.zeeklog.com - LLMs LangChain结合推理和行动ReAct: Combining reasoning and action

接下来,说明提供了关于“思考”是什么意思的更多细节,然后指定了操作步骤只能是三种类型中的一种。

www.zeeklog.com - LLMs LangChain结合推理和行动ReAct: Combining reasoning and action

第一种是搜索操作,用于查找与指定实体相关的维基百科条目。

www.zeeklog.com - LLMs LangChain结合推理和行动ReAct: Combining reasoning and action

第二种是查找操作,用于检索包含指定关键字的下一句。

www.zeeklog.com - LLMs LangChain结合推理和行动ReAct: Combining reasoning and action

最后一个操作是完成,用于返回答案并结束任务。在使用LLM规划将驱动应用程序的任务时,定义一组允许的操作是至关重要的。

www.zeeklog.com - LLMs LangChain结合推理和行动ReAct: Combining reasoning and action

LLM非常有创造力,可能会提出与应用程序实际无法执行的步骤相对应的步骤。说明的最后一句让LLM知道接下来将出现一些示例在提示文本中。

好的,让我们把所有这些要素放在一起进行推理。您将从ReAct示例提示开始。请注意,根据您使用的LLM,您可能需要包括多个示例并进行未来的推理。

www.zeeklog.com - LLMs LangChain结合推理和行动ReAct: Combining reasoning and action

接下来,您将在示例的开头预置说明,

www.zeeklog.com - LLMs LangChain结合推理和行动ReAct: Combining reasoning and action

然后在末尾插入要回答的问题。

www.zeeklog.com - LLMs LangChain结合推理和行动ReAct: Combining reasoning and action

完整的提示现在包含所有这些个别要素,并可以传递给LLM进行推理。

www.zeeklog.com - LLMs LangChain结合推理和行动ReAct: Combining reasoning and action

ReAct框架展示了一种通过推理和行动规划来使用LLM驱动应用程序的方式。通过创建示例,您可以扩展此策略,以适应您的特定用例,以解决应用程序中即将发生的决策和操作。值得庆幸的是,目前正积极开发使用语言模型驱动的应用程序的框架。其中一种被广泛采用的解决方案称为LangChain,LangChain框架为您提供了包含与LLM合作所需的组件的模块化部分。

这些组件包括用于各种不同用例的提示模板,您可以使用它们来格式化输入示例和模型完成。

www.zeeklog.com - LLMs LangChain结合推理和行动ReAct: Combining reasoning and action

还包括与LLM的交互的存储器。

www.zeeklog.com - LLMs LangChain结合推理和行动ReAct: Combining reasoning and action

该框架还包括预构建的工具,使您能够执行各种任务,包括调用外部数据集和各种API。将这些个别组件的选择连接在一起会形成一个链。

www.zeeklog.com - LLMs LangChain结合推理和行动ReAct: Combining reasoning and action

LangChain的创建者已经为不同的用例优化了一组预定义的链,您可以直接使用它们,快速启动应用程序。

有时,您的应用程序工作流程可能根据用户提供的信息采用多个路径。在这种情况下,您无法使用预定义的链,而是需要具有灵活性,以决定用户在工作流程中移动时采取哪些操作。LangChain定义了另一个构造,称为“代理”,您可以使用它来解释用户的输入并确定要完成任务所需的工具。

www.zeeklog.com - LLMs LangChain结合推理和行动ReAct: Combining reasoning and action

LangChain目前包括用于PAL和ReAct等多种代理。代理可以合并到链中,以采取行动或计划并执行一系列操作。

www.zeeklog.com - LLMs LangChain结合推理和行动ReAct: Combining reasoning and action

LangChain正在积极开发中,不断添加新功能,例如能够检查和评估LLM在整个工作流程中的完成。这是一个令人兴奋的框架,可以帮助您进行快速原型设计和部署,很可能会成为您未来生成式人工智能工具箱中的重要工具。

在开发使用LLM的应用程序时,请牢记模型的推理和规划行动能力取决于其规模。通常情况下,更大的模型是使用高级提示技术(如PAL或ReAct)的最佳选择。

www.zeeklog.com - LLMs LangChain结合推理和行动ReAct: Combining reasoning and action

较小的模型可能会在高度结构化的提示中理解任务,可能需要进行额外的微调以提高其推理和规划能力。这可能会拖慢开发过程。

相反,如果您从部署中开始使用大型、功能强大的模型并收集大量用户数据,那么您可能可以使用它来训练和微调一个较小的模型,以便稍后切换使用。

Reference

https://www.coursera.org/learn/generative-ai-with-llms/lecture/yCzw0/react-combining-reasoning-and-action

Read more

【OpenClaw从入门到精通】第10篇:OpenClaw生产环境部署全攻略:性能优化+安全加固+监控运维(2026实测版)

【OpenClaw从入门到精通】第10篇:OpenClaw生产环境部署全攻略:性能优化+安全加固+监控运维(2026实测版)

摘要:本文聚焦OpenClaw从测试环境走向生产环境的核心痛点,围绕“性能优化、安全加固、监控运维”三大维度展开实操讲解。先明确生产环境硬件/系统选型标准,再通过硬件层资源管控、模型调度策略、缓存优化等手段提升响应速度(实测响应效率提升50%+);接着从网络、权限、数据三层构建安全防护体系,集成火山引擎安全方案拦截高危操作;最后落地TenacitOS可视化监控与Prometheus告警体系,配套完整故障排查清单和虚拟实战案例。全文所有配置、代码均经实测验证,兼顾新手入门实操性和进阶读者的生产级部署需求,帮助开发者真正实现OpenClaw从“能用”到“放心用”的跨越。 优质专栏欢迎订阅! 【DeepSeek深度应用】【Python高阶开发:AI自动化与数据工程实战】【YOLOv11工业级实战】 【机器视觉:C# + HALCON】【大模型微调实战:平民级微调技术全解】 【人工智能之深度学习】【AI 赋能:Python 人工智能应用实战】【数字孪生与仿真技术实战指南】 【AI工程化落地与YOLOv8/v9实战】【C#工业上位机高级应用:高并发通信+性能优化】 【Java生产级避坑指南:

By Ne0inhk
ARM Linux 驱动开发篇--- Linux 并发与竞争实验(互斥体实现 LED 设备互斥访问)--- Ubuntu20.04互斥体实验

ARM Linux 驱动开发篇--- Linux 并发与竞争实验(互斥体实现 LED 设备互斥访问)--- Ubuntu20.04互斥体实验

🎬 渡水无言:个人主页渡水无言 ❄专栏传送门: 《linux专栏》《嵌入式linux驱动开发》《linux系统移植专栏》 ❄专栏传送门: 《freertos专栏》《STM32 HAL库专栏》 ⭐️流水不争先,争的是滔滔不绝  📚博主简介:第二十届中国研究生电子设计竞赛全国二等奖 |国家奖学金 | 省级三好学生 | 省级优秀毕业生获得者 | ZEEKLOG新星杯TOP18 | 半导纵横专栏博主 | 211在读研究生 在这里主要分享自己学习的linux嵌入式领域知识;有分享错误或者不足的地方欢迎大佬指导,也欢迎各位大佬互相三连 目录 前言  一、实验基础说明 1.1、互斥体简介 1.2 本次实验设计思路 二、硬件原理分析(看过之前博客的可以忽略) 三、实验程序编写 3.1 互斥体 LED 驱动代码(mutex.c) 3.2.1、设备结构体定义(28-39

By Ne0inhk
Flutter for OpenHarmony:swagger_dart_code_generator 接口代码自动化生成的救星(OpenAPI/Swagger) 深度解析与鸿蒙适配指南

Flutter for OpenHarmony:swagger_dart_code_generator 接口代码自动化生成的救星(OpenAPI/Swagger) 深度解析与鸿蒙适配指南

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net 前言 后端工程师扔给你一个 Swagger (OpenAPI) 文档地址,你会怎么做? 1. 对着文档,手写 Dart Model 类(容易写错字段类型)。 2. 手写 Retrofit/Dio 的 API 接口定义(容易拼错 URL)。 3. 当后端修改了字段名,你对着报错修半天。 这是重复劳动的地狱。 swagger_dart_code_generator 可以将 Swagger (JSON/YAML) 文件直接转换为高质量的 Dart 代码,包括: * Model 类:支持 json_serializable,带 fromJson/

By Ne0inhk
Linux 开发别再卡壳!makefile/git/gdb 全流程实操 + 作业解析,新手看完直接用----《Hello Linux!》(5)

Linux 开发别再卡壳!makefile/git/gdb 全流程实操 + 作业解析,新手看完直接用----《Hello Linux!》(5)

文章目录 * 前言 * make/makefile * 文件的三个时间 * Linux第一个小程序-进度条 * 回车和换行 * 缓冲区 * 程序的代码展示 * git指令 * 关于gitee * Linux调试器-gdb使用 * 作业部分 前言 做 Linux 开发时,你是不是也遇到过这些 “卡脖子” 时刻?写 makefile 时,明明语法没错却报错,最后发现是依赖方法行没加 Tab;想提交代码到 gitee,记不清 git add/commit/push 的 “三板斧”,还得反复搜教程;用 gdb 调试程序,输了命令没反应,才想起编译时没加-g生成 debug 版本;甚至连写个进度条,都搞不懂\r和\n的区别,导致进度条乱跳…… 其实这些问题,

By Ne0inhk