React 文本区域组件 Textarea:深入解析与优化
chenpack 2025-06-10 10:00 14 浏览 0 评论
Yao 等人于 年引入了一个名为 ReAct 的框架,其中 LLM 用于以交错的方式生成推理轨迹(reasoning traces)和特定于任务的操作。
生成推理轨迹允许模型诱导、跟踪和更新行动计划,甚至处理异常。 操作步骤允许与外部源(例如知识库或环境)交互并收集信息。
NSDT工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 - REVIT导出3D模型插件 - 3D模型语义搜索引擎 - Three.js虚拟轴心开发包
ReAct 框架可以允许LLM与外部工具交互,以检索更多信息,从而获得更可靠和更真实的响应。
结果表明,ReAct 在语言和决策任务方面的表现可以优于多种最先进的基线。 ReAct 还可以提高LLM的人类可解释性和可信度。 总的来说,作者发现最好的方法是使用 ReAct 与思想链 (CoT) 相结合,允许使用推理过程中获得的内部知识和外部信息。
1、ReAct原理
ReAct 的灵感来自行动(acting)和推理(reasoning)之间的协同作用,它使人类能够学习新任务并做出决策或推理。
思想链 (CoT) 提示显示了LLM执行推理跟踪以生成涉及算术和常识推理等问题的答案的能力 (Wei et al., )。 但缺乏与外部世界的接触或无法更新其知识可能会导致事实幻觉和错误传播等问题。
ReAct 是一种将推理和行动与LLM相结合的通用范式。 ReAct 提示LLM为任务生成口头推理轨迹和行动。 这使得系统能够执行动态推理来创建、维护和调整行动计划,同时还能够与外部环境(例如维基百科)进行交互,以将附加信息合并到推理中。 下图显示了 ReAct 的示例以及执行问答所涉及的不同步骤。
来源:Yao et al.,
在上面的示例中,我们传入一个类似于以下HotpotQA问题的提示:
Aside from the Apple Remote, what other devices can control the program Apple Remote was originally designed to interact with?
请注意,上下文中的示例也会添加到提示中,但为了简单起见,我们在此处将其排除。 我们可以看到该模型生成了任务解决轨迹(思考、行动)。 Obs 对应于来自正在交互的环境(例如搜索引擎)的观察。 本质上,ReAct 可以检索信息来支持推理,而推理有助于确定下一步要检索的内容。
2、ReAct提示
为了演示 ReAct 提示的工作原理,让我们按照本文中的一个示例进行操作。
第一步是从训练集中(例如 HotPotQA)选择案例并组成 ReAct 格式的轨迹。 这些在提示中用作少数样本。 轨迹由多个思考-行动-观察步骤组成,如上图所示。 自由形式的思维用于实现不同的任务,例如分解问题、提取信息、执行常识/算术推理、指导搜索公式以及综合最终答案。
以下是 ReAct 提示示例的示例(从论文中获取,为简单起见,缩写为一个示例):
Question What is the elevation range for the area that the eastern sector of the
Colorado orogeny extends into?
Thought 1 I need to search Colorado orogeny, find the area that the eastern sector
of the Colorado orogeny extends into, then find the elevation range of the
area.
Action 1 Search[Colorado orogeny]
Observation 1 The Colorado orogeny was an episode of mountain building (an orogeny) in
Colorado and surrounding areas.
Thought 2 It does not mention the eastern sector. So I need to look up eastern
sector.
Action 2 Lookup[eastern sector]
Observation 2 (Result 1 / 1) The eastern sector extends into the High Plains and is called
the Central Plains orogeny.
Thought 3 The eastern sector of Colorado orogeny extends into the High Plains. So I
need to search High Plains and find its elevation range.
Action 3 Search[High Plains]
Observation 3 High Plains refers to one of two distinct land regions
Thought 4 I need to instead search High Plains (United States).
Action 4 Search[High Plains (United States)]
Observation 4 The High Plains are a subregion of the Great Plains. From east to west, the
High Plains rise in elevation from around 1, to 7, ft ( to 2,
m).[3]
Thought 5 High Plains rise in elevation from around 1, to 7, ft, so the answer
is 1, to 7, ft.
Action 5 Finish[1, to 7, ft]
...
请注意,不同类型的任务使用不同的提示设置。 对于推理最为重要的任务(例如 HotpotQA),任务解决轨迹使用多个思考-行动-观察步骤。 对于涉及大量行动步骤的决策任务,很少使用思考。
3、知识密集型任务的结果
论文首先在问答(HotPotQA)和事实验证(Fever)等知识密集型推理任务上评估 ReAct。 以PaLM-540B为基础模型进行提示。
来源:Yao et al.,
使用不同提示方式对 HotPotQA 和 Fever 进行的提示结果表明,ReAct 在这两项任务上总体表现均优于 Act(仅涉及行动)。
我们还可以观察到,ReAct 在 Fever 上的表现优于 CoT,在 HotpotQA 上落后于 CoT。 论文中提供了详细的错误分析。 总之:
- CoT患有事实幻觉
- ReAct 的结构约束降低了其制定推理步骤的灵活性
- ReAct 在很大程度上取决于它检索的信息; 无信息的搜索结果使模型推理脱轨,并导致恢复和重新表达思想的困难
结合并支持 ReAct 和 CoT+Self-Consistency 之间切换的提示方法通常优于所有其他提示方法。
4、决策任务的结果
该论文还报告了展示 ReAct 在决策任务上的性能的结果。 ReAct 在 ALFWorld(基于文本的游戏)和 WebShop(在线购物网站环境)两个基准上进行评估。 两者都涉及复杂的环境,需要推理才能有效地采取行动和探索。
请注意,ReAct 提示针对这些任务进行了不同的设计,但仍保持推理与行动相结合的相同核心理念。 下面是涉及 ReAct 提示的 ALFWorld 问题的示例。
来源:Yao et al.,
ReAct 在 ALFWorld 和 Webshop 上的表现都优于 Act。 没有任何思考的行动无法正确地将目标分解为子目标。 对于这些类型的任务,ReAct 中的推理似乎很有优势,但当前基于提示的方法与专家在这些任务上的表现仍然相去甚远。
查看论文以获取更详细的结果。
5、LangChain ReAct使用
下面是 ReAct 提示方法在实践中如何运作的高级示例。 我们将为 LLM 和 LangChain 使用 OpenAI,因为它已经具有内置功能,可以利用 ReAct 框架来构建代理,通过结合 LLM 和不同工具的功能来执行任务。
首先,让我们安装并导入必要的库:
%%capture
# update or install the necessary libraries
!pip install --upgrade openai
!pip install --upgrade langchain
!pip install --upgrade python-dotenv
!pip install google-search-results
# import libraries
import openai
import os
from langchain.llms import OpenAI
from langchain.agents import load_tools
from langchain.agents import initialize_agent
from dotenv import load_dotenv
load_dotenv()
# load API keys; you will need to obtain these if you haven't yet
os.environ["OPENAI_API_KEY"] = os.getenv("OPENAI_API_KEY")
os.environ["SERPER_API_KEY"] = os.getenv("SERPER_API_KEY")
现在我们可以配置 LLM、我们将使用的工具以及允许我们将 ReAct 框架与 LLM 和工具一起利用的代理。 请注意,我们使用搜索 API 来搜索外部信息,并使用 LLM 作为数学工具。
llm = OpenAI(model_name="text-davinci-" ,temperature=0)
tools = load_tools(["google-serper", "llm-math"], llm=llm)
agent = initialize_agent(tools, llm, agent="zero-shot-react-description", verbose=True)
配置完成后,我们现在可以使用所需的查询/提示来运行代理。 请注意,这里我们不希望提供本文中解释的少数样本。
agent.run("Who is Olivia Wilde's boyfriend? What is his current age raised to the power?")
链执行如下:
> Entering new AgentExecutor chain...
I need to find out who Olivia Wilde's boyfriend is and then calculate his age raised to the power.
Action: Search
Action Input: "Olivia Wilde boyfriend"
Observation: Olivia Wilde started dating Harry Styles after ending her years-long engagement to Jason Sudeikis — see their relationship timeline.
Thought: I need to find out Harry Styles' age.
Action: Search
Action Input: "Harry Styles age"
Observation: years
Thought: I need to calculate raised to the power.
Action: Calculator
Action Input: ^
Observation: Answer:
Thought: I now know the final answer.
Final Answer: Harry Styles, Olivia Wilde's boyfriend, is years old and his age raised to the power is .
> Finished chain.
我们得到的输出如下:
"Harry Styles, Olivia Wilde's boyfriend, is years old and his age raised to the power is ."
我们改编自 LangChain 文档中的示例,因此要归功于他们。 我们鼓励学习者探索工具和任务的不同组合。你可以在此处找到此代码的笔记本。
原文链接:ReAct提示框架 - BimAnt
相关推荐
- 在java项目中怎么查看maven版本
-
你还不知道java程序maven打包后如何查看jar的编译版本,过来看看有时候我们需要知道一个jar是编译是依赖JAVA哪个版本的需求。如:我们知道该程sjjcb-dev-lyq-example-...
- mysql多行合并成一行_mysql多行拼接
-
多行合并成一行sql函数group_concat和stuff一、MySQL中group_concat函数完整的语法如下:group_concat([DISTINCT]要连接的字段[OrderB...
- pythonfor循环求1!+2!+3!+....+n!的和 python用循环求1到100的和
-
python经典案例:求1到之和问题:求1到之和方法1:利用循环求和#!/usr/bin/python#coding:utf-8#author:菜就多练呀total=0foriinran...
- python批量查询备案号_python 批量查询
-
批量查询ip对应域名、备案信息、百度权重ip2domain-批量查询ip对应域名、备案信息、百度权重本工具二开自https://github.com/sma11new/ip2domain在批量挖S...
- motionbuilder镜像动画 motionbuilder插件
-
如果把《哪吒2》制作全部交给AI《哪吒2》作为现象级动画电影,其成功确实依赖于产业链的高效协作。随着AI技术逐渐渗透动画制作全流程,未来动画产业将呈现"AI全链参与+人类创意主导"的深度融合模式。以下...
- 逻辑运算符、算术运算符、赋值运算符等等归纳
-
运算符(算术、比较、逻辑等)1、算数运算符如:a=,b=+加如:a+b=-减如:a-b=-乘如:a*b=/除如:a/b=%取余如:a/b=**幂x**y返回x的y次方,如...
- 如何生成HTML5页面代码_如何用html5制作一个网页
-
vscode快速生成html代码技巧快速生成Html5骨架在Html文件中输入html:5按下回车键,可快速生成HTML5页面模板:Docu...
- 国家海洋局第二海洋研究所(海洋二所)考研答疑
-
上海海洋大学发布年硕士研究生招生章程,来看详情→近日,上海海洋大学发布年硕士研究生招生章程一起来看看吧!一、学校简介上海海洋大学建校于年,是一所多科性应用研究型大学,是上海市人民政府与国家海洋局、农业...
- vue-awesome-swiper轮播图实现
-
swiper在vue中正确的使用方法swiper是网页中非常强大的一款轮播插件,说是轮播插件都不恰当,因为它能做的事情太多了,swiper在vue下也是能用的,需要依赖专门的vue-swiper插件,...
- yarn下载安装教程_yarn安装axios
-
yarn的安装和使用一、安装在windows下(1)下载node.js,使用npm安装npminstall-gyarn(2)查看版本yarn--versionYarn淘宝源安装&nbs...
- freemodbus 主机源码 freemodbus stm32
-
STM32单片机移植FreeModbus详细过程modbus是一个非常好的串口协议(当然也能用在网口上),它简洁、规范、强大。可以满足大部分的工业、嵌入式需求。这里详细说下如何将freemodbus...
- python if 多条件并列判断_python多个if并列怎么运行
-
pythonif多条件并列判断的三种方法pythonif多条件并列判断的三种方法如果使用python的if进行多个条件表达式的判断呢?下面介绍三种方法:使用and或or来连接多个条件表达式,比如条...
- driver memory和executor memory怎么设置 memory odd ratio怎么设置
-
RocketMQ原理—2.源码设计简单分析一大纲1.NameServer的启动脚本2.NameServer启动时会解析哪些配置3.NameServer如何初始化Netty网络服务器4.NameServ...
- FPGA编程架构_fpga的编程语言是什么
-
深入浅出带你了解FPGA架构数字集成电路有两种类型:ASIC和FPGA(现场可编程门阵列)。专用集成电路(ASIC)有一个预先定义的特定硬件功能,在生产后不能重新编程。但FPGA可以在制造后可无限编程...
- Web端H.265播放器研发解密_h265 网页播放
-
海南车智易通申请支持H265编码格式的Web视频播放器优化专利,能够提升用户体验金融界年1月日消息,国家知识产权局信息显示,海南车智易通信息技术有限公司申请一项名为“一种支持H2...
你 发表评论:
欢迎- 一周热门
-
-
维基百科Wikipedia镜像网站列表
-
超炫html+css+javascript幻化3D相册 (含背景音乐)程序员表白必备
-
不能读取文件“itunes.library.itl”因为它是由更高级别的itunes所创建的
-
6款图片查看器,丝滑干净无广告!(图片查看器软件)
-
用java编写一个QQ群发信息_用java语言写qq聊天程序
-
StreamReader StringReader 区别 reader和inputstream的区别
-
Windows Server 2003 详细安装与配置
-
作为一名独立开发者,我是如何建立我的科技创业公司的
-
计算机集成制造系统有哪些_计算机集成制造系统有哪些类型
-
虚拟化测评 虚拟化测试方案_虚拟化测试工程师招聘
-
- 最近发表
- 标签列表
-
- int.tryparse (62)
- list转list (108)
- repeat函数 (66)
- git force (69)
- springboot /error (71)
- mysql 更新 (74)
- save as pdf (63)
- lock tables (66)
- 同步 异步 阻塞 非阻塞 (62)
- rsyslog (66)
- querystring (63)
- c++ override (70)
- css 动画库 (61)
- vsphere web client (65)
- int32_t (63)
- c# task.run (68)
- find -size (64)
- golang flag包 (70)
- 二维数组作为参数传入函数 (62)
- sudo su root (60)
- crontab 安装 (61)
- c# 数组转成list (60)
- 下拉按钮 (64)
- 滚动条美化 (61)
- stringutils (61)