PromptEngineering:ReAct 框架(LangChain 使用的 Agents 框架)

今天介绍 ReAct 框架,前面介绍的提示工程技术除了 CoT 大家可能很少接触到,那么今天的主角会稍有名气。ReAct 是著名工具 LangChain 最主要的代理类型。

ReAct 的全称是《语言模型中的协同推理和同步》[1], 论文名字是《ReAct: Synergizing Reasoning and Acting in Language Models 》[2]。

ReAct 由 Shunyu Yao 等人 2022年10月提出,用以解决语言模型语言理解和交互式决策制定等任务中推理(例如思维链提示)和行动(例如行动计划生成)能力结合的问题。

背景

虽然大型语言模型(LLM)在语言理解和交互式决策制定等任务中表现出了令人印象深刻的能力, 但它们的推理(例如思维链提示)和行动(例如行动计划生成)能力主要作为单独的主题进行研究。

使用 LLM 以交错的方式生成推理轨迹和特定于任务的动作,从而实现两者之间更大的协同作用推理轨迹帮助模型归纳、跟踪和更新行动计划以及处理异常,而操作允许它与外部源(例如知识库或环境)交互,以收集附加信息。

简而言之就是先利用 LLM 的推理能力,如果某个步骤 LLM 不能很好的解决,那么就和外部资源(文档、物联网、数据库、代码执行等)交互,以获取额外的信息,得到更好的答案。

在这里插入图片描述

下面是 ReAct 学术上的战绩:

问答和事实验证

在问答(HotpotQA[3])和事实验证(Fever[4])方面, ReAct 通过与简单的维基百科 API 交互,克服了思维链推理中普遍存在的幻觉和错误传播问题,并生成类似人类的任务解决轨迹,比没有推理痕迹的基线更容易解释。

决策

在两个交互式决策基准(ALFWorld[5] 和 WebShop[6])上, ReAct 的表现优于模仿和强化学习方法,绝对成功率分别为 34% 和 10%,同时仅用一两个上下文示例进行提示。

代码

ReAct 网站[7] 也开放了代码,Github 地址为:https://github.com/ysymyth/ReAct[8] ,大家可以运行代码来重新任务测试结果或者来定制自己的项目。

在这里插入图片描述

ReAct 和 CoT/ACT 对比

在这里插入图片描述

ReAct 测试结果

当然,几乎不会有人真的去运行 ReAct 的代码(虽然很方便),但是不妨看一眼,他的主要部分,拿 HotpotQA 问答数据集的代码为例:

在这里插入图片描述

谁是小李子的女朋友?她现在的年龄加到0.43次方是多少?

注意:ReAct 和 前面文章介绍的 ART 一样,不同的任务会有不同的提示模板(相当于任务库)。

ReAct 和 LangChain

最简单或者最流行的实践 ReAct 的方法肯定是用 LangChain 的示例[9]了。

LangChain 默认使用 ReAct 实现代理逻辑,所以也不需要关注怎么实现,直接看效果就好了。

首先引入包,使用 OpenAI 作为语言模型,同时加载一些工具。

from langchain.agents import load_tools
from langchain.agents import initialize_agent
from langchain.agents import AgentType
from langchain.llms import OpenAI

llm = OpenAI(temperature=0)
tools = load_tools(["serpapi", "llm-math"], llm=llm)

接下来创建代理执行器,代理执行器内部会根据 ReAct 的原理去帮我们拆解任务,并调用工具。

agent_executor = initialize_agent(
  tools, 
  llm, 
  agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, 
  verbose=True
)

接下来我们问他一个奇怪的问题:

agent_executor.invoke({"input": "谁是小李子的女朋友?她现在的年龄加到0.43次方是多少?"})

以为我们刚刚开启了 verbose=True,所以可以看到详细的输出:

> Entering new AgentExecutor chain...
 我得查出里奥·迪卡普里奥的女朋友是谁然后算出她的年龄的0.43次方.
Action: Search
Action Input: "小李子女朋友"
Observation: 模特 维多利亚·塞雷蒂
Thought: 我要找出 维多利亚·塞雷蒂 的年龄
Action: Search
Action Input: "维多利亚·塞雷蒂的年龄"
Observation: 25 years
Thought: 我需要计算25的0.43次方
Action: Calculator
Action Input: 25^0.43
Observation: Answer: 3.991298452658078
Thought: 我知道了最终的方案
Final Answer: 小李子的女朋友是维多利亚·塞雷蒂,她现在的年龄是3.991298452658078的0.43次方.

> Finished chain.

{'input': "谁是小李子的女朋友?她现在的年龄加到0.43次方是多少?",
 'output': "小李子的女朋友是维多利亚·塞雷蒂,她现在的年龄是3.991298452658078的0.43次方."}

可以看到过程如下,不断重复 Action+ Input -> 结果 -> 下一个想法,一直到找到最终答案。

在这里插入图片描述

谁是小李子的女朋友?她现在的年龄加到0.43次方是多少?

结语

虽然 Prompt Engineering 这个系列主要介绍提示工程的理论和技术,但是这些看起来不那么贴地气的技术,正在真真切切改变这个世界。

如何系统的去学习大模型LLM ?

大模型时代,火爆出圈的LLM大模型让程序员们开始重新评估自己的本领。 “AI会取代那些行业?”“谁的饭碗又将不保了?”等问题热议不断。

事实上,抢你饭碗的不是AI,而是会利用AI的人。

科大讯飞、阿里、华为等巨头公司发布AI产品后,很多中小企业也陆续进场!超高年薪,挖掘AI大模型人才! 如今大厂老板们,也更倾向于会AI的人,普通程序员,还有应对的机会吗?

与其焦虑……

不如成为「掌握AI工具的技术人」,毕竟AI时代,谁先尝试,谁就能占得先机!

但是LLM相关的内容很多,现在网上的老课程老教材关于LLM又太少。所以现在小白入门就只能靠自学,学习成本和门槛很高。

针对所有自学遇到困难的同学们,我帮大家系统梳理大模型学习脉络,将这份 LLM大模型资料 分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

👉CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)👈

一、LLM大模型经典书籍

AI大模型已经成为了当今科技领域的一大热点,那以下这些大模型书籍就是非常不错的学习资源。

在这里插入图片描述

二、640套LLM大模型报告合集

这套包含640份报告的合集,涵盖了大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。(几乎涵盖所有行业)

在这里插入图片描述

三、LLM大模型系列视频教程

在这里插入图片描述

四、LLM大模型开源教程(LLaLA/Meta/chatglm/chatgpt)

在这里插入图片描述

LLM大模型学习路线

阶段1:AI大模型时代的基础理解

  • 目标:了解AI大模型的基本概念、发展历程和核心原理。

  • 内容

    • L1.1 人工智能简述与大模型起源
    • L1.2 大模型与通用人工智能
    • L1.3 GPT模型的发展历程
    • L1.4 模型工程
    • L1.4.1 知识大模型
    • L1.4.2 生产大模型
    • L1.4.3 模型工程方法论
    • L1.4.4 模型工程实践
    • L1.5 GPT应用案例

阶段2:AI大模型API应用开发工程

  • 目标:掌握AI大模型API的使用和开发,以及相关的编程技能。

  • 内容

    • L2.1 API接口
    • L2.1.1 OpenAI API接口
    • L2.1.2 Python接口接入
    • L2.1.3 BOT工具类框架
    • L2.1.4 代码示例
    • L2.2 Prompt框架
    • L2.3 流水线工程
    • L2.4 总结与展望

阶段3:AI大模型应用架构实践

  • 目标:深入理解AI大模型的应用架构,并能够进行私有化部署。

  • 内容

    • L3.1 Agent模型框架
    • L3.2 MetaGPT
    • L3.3 ChatGLM
    • L3.4 LLAMA
    • L3.5 其他大模型介绍

阶段4:AI大模型私有化部署

  • 目标:掌握多种AI大模型的私有化部署,包括多模态和特定领域模型。

  • 内容

    • L4.1 模型私有化部署概述
    • L4.2 模型私有化部署的关键技术
    • L4.3 模型私有化部署的实施步骤
    • L4.4 模型私有化部署的应用场景

这份 LLM大模型资料 包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

👉CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)👈

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/870920.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

源码构建LAMP

目录 一、安装Apache 二、安装Mysql 三、安装PHP 四、安装论坛 一、安装Apache 1.cd 到opt目录下面,将压缩包拉进Xhell 2.解压缩apr和httpd压缩包 tar xf apr-1.6.2.tar.gz tar xf apr-util-1.6.0.tar.gz tar xf httpd-2.4.29.tar.bz2 3.将apr-1.6.2 移动到ht…

数学建模预测类—【多元线性回归】

每日名言:成名每在穷苦日,败事多因得意时 目录 文章目录 前言 二、参数估计 三、多元线性回归模型和回归系数的检验 四、预测 总结 前言 本文将根据回归建模过程来讲解多元线性回归模型,有关回归分析的知识以及一元线性回归的内容可以戳…

stm32的UART重定向printf()

1配置好uart 2打开usart.c文件 3在此文件前面添加头文件 4在末尾添加重定向代码 添加的代码 /* USER CODE BEGIN 1 *///加入以下代码,支持printf函数,而不需要选择use MicroLIB //#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f) #if 1 //#pragma import(__use_n…

暑假算法刷题日记 Day 10

目录 重点整理 054、 拼数 题目描述 输入格式 输出格式 输入输出样例 核心思路 代码 055、 求第k小的数 题目描述 输入格式 输出格式 输入输出样例 核心思路 代码 总结 这几天我们主要刷了洛谷上排序算法对应的一些题目,相对来说比较简单 一共是13道…

什么是逃逸分析

如何快速判断是否逃逸就看方法内new的对象实体是否能够被外部方法进行调用 什么是逃逸分析 在java虚拟机中,对象是在java堆中分配内存的,这是一个普遍的常识。但是,有一种特殊情况,那就是如果经过逃逸分析(escape an…

【鸿蒙学习】HarmonyOS应用开发者基础 - 构建更加丰富的页面(一)

学完时间:2024年8月14日 一、前言叨叨 学习HarmonyOS的第六课,人数又成功的降了500名左右,到了3575人了。 二、ArkWeb 1、概念介绍 ArkWeb是用于应用程序中显示Web页面内容的Web组件,为开发者提供页面加载、页面交互、页面调…

『功能项目』移动后的光标显示【04】

我们打开上一篇03的射线双击项目, 本章要做的事情是在PlayerRayNavgation脚本中添加一个移动光标,实现人物在场景中鼠标点击移动后在移动过程中出现移动目标光标的效果。 在unity编辑器中创建一个Plane 重命名为MovementSign 删掉碰撞器 创建一个材质 选…

Linux安装MQTT 服务器(图文教程)

MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息传输协议,专为低带宽和不稳定的网络环境设计,非常适合物联网(IoT)应用。 官网地址:https://www.emqx.com/ 一、版本选择 根据自己…

C++学习笔记----4、用C++进行程序设计(一)---- 什么是面向对象的程序设计

也许你看到这个题目的时候,就觉得这篇博文不用看了,难道这就是题目劝退了观众。我看到过一些程序,是由面向过程的传统程序修改过来了,只是将原来的函数变成了类的成员函数,其他几乎没有什么变化,可以说是换…

【leetcode详解】T3137(思路详解 代码优化感悟)

思路详解 要解决这个问题,我们的大致思路是这样:找到长度为k的字符串 (记为stringA) ,统计重复次数最多的那一个,则最终对应的k周期字符串就是 [stringA * n] 的形式( n word.length() / k) 要实现多对象的计数&…

easyexcel--导入导出实现自定义格式转换

自定义格式 我们在数据库设计的时候经常会有枚举类型,如0表示普通用户,1表示VIP用户等,这在excel导入的时候,我们会填普通用户而不是0,这样就需要用到自定义格式把普通用户转换成0,我写了一个通用的抽象类…

LabVIEW多协议智能流水线控制与监控系统

在自动化流水线系统,实现对流水线传送带、机械臂、报警系统、扫码机、喷码机等设备的高效控制和实时监控。该系统需要支持多种通信协议,包括UDP、串口、ModbusTCP、HTTP、以及MQTT协议,以确保各个设备间的无缝连接和数据交换。 系统架构与模…

软考:软件设计师 — 14.算法基础

十四. 算法基础 1. 算法的特性 算法是对特定问题求解步骤的描述,它是指令的有限序列,其中每一条指令表示一个或多个操作。 有穷性:执行有穷步之后结束,且每一步都可在有穷时间内完成。确定性:算法中每一条指令必须有…

使用对比!SLS 数据加工 SPL 与旧版 DSL 场景对照

作者:灵圣 概述 如前一篇《SLS 数据加工全面升级,集成 SPL 语法》所述,SLS 数据加工集成了 SLS 数据处理语法 SPL。与旧版本数据加工 DSL 相比,SPL 在处理非结构化数据的场景中,其语法简洁度上有很多提升&#xff0c…

Linux ubuntu 24.04 运行《文明5》游戏,解决游戏中文设置的问题!

Linux ubuntu 24.04 运行《文明5》游戏,解决游戏中文设置的问题! 《文明5》是一款回合制经营策略游戏,拼的就是科技发展速度,点的是科技树,抢的就是科技制高点,但是真的是时间漫长,可能需要好几…

游戏开发之性能优化

游戏开发中的性能优化是一个复杂且多方面的过程,涉及到多个层面的改进和调整。以下是一些主要的优化技巧和方法: 代码优化: 缓存计算结果:对于那些耗费大量CPU计算而计算结果无需每帧变化的逻辑,使用缓存可以显著提高性…

UniformSampling 均匀采样滤波(附PCL库的C++代码)

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录前言一、原理二、算法步骤三、算法实现参考链接前言 认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长! 本文先对UniformSam…

XSS游戏

目录 XSS游戏-WarmupsMa Spaghet!JefffUgandan KnucklesRicardo MilosAh Thats HawtLigmaMafiaOk, BoomerWW3 XSS游戏-Warmups Ma Spaghet! 1. 尝试注入&#xff0c;输入aaaaaaaa 2. 显示在<h2>标签内3. 输入标签&#xff0c;添加onmouseover属性值为alert(1337)&…

物流抓取机器人整体设计方案

一、功能简介 1、运行环境&#xff1a;巡线行驶&#xff08;7路数字循迹&#xff0c;麦克纳姆轮车底盘&#xff09; 2、目标识别&#xff1a;颜色识别&#xff08;Maix-II Dock 视觉模块&#xff09; 3、目标定位&#xff1a;视觉测距&#xff08;Maix-II Dock 视觉模块&#x…

mov和mp4有什么区别?如何实现mov格式转mp4格式?

每种视频格式都有自己的特点&#xff0c;尤其是mov和mp4这两种格式&#xff0c;它们如同两种各具特色的语言&#xff0c;各自拥有独特的表达方式和优势&#xff0c;使得视频内容能够根据不同的需求和场景&#xff0c;以最佳的方式呈现给观众。 mov作为苹果公司开发的音频、视频…