当前位置: 首页 > news >正文

智能体开发:推理-行动(ReAct)思维链提示

人类在处理一个需要多个步骤才能完成任务时,显著特点是能够将言语推理(内心独白)和实际行动融合在一起,在面对陌生或不确定的情况时通过这种方法学习新知识,做出决策,并执行,从而应对复杂的任务挑战,比如下面这个图书馆借书的场景。

目标:我想借一本关于中国历史的书内心独白(推理):我应该怎么找到这样的书呢?我知道图书馆有分类系统,每种书都有编号,我可以按照编号找到对应的书架
行动: 我走到书架,拿起一本书看看内心独白(推理):这本书合不合我的要求呢?嗯,看起来不太对,它讲的是“历史”里的故事,而不是我想了解的“历史”事实,我得换个方法找,或许可以用图书馆的电脑系统搜索一下
行动:我在电脑上输入关键词“中国历史”,选择“图书馆藏”,点击搜索内心独白(推理):搜索结果出来了,可是没有一本书是我想要的
结论:这个图书馆没有关于我想借的中国历史的书

推理-行动提示(Reasoning and Acting,ReAct)就是一种利用大语言模型模拟上述人类智能的推理和行动过程的思维链提示。它的基本思想是让大语言模型交替地生成推理追踪(Verbal Reasoning Traces)和行动(Actions),并允许大语言模型与外部工具进行交互,从而获取额外的信息反馈。这样就可以动态地维护和更新自己的行动计划。这个过程需要多次调用大语言模型,是一个多阶段的提示方法,具体过程如下图所示。

在这里插入图片描述

图8-8 推理-行动提示的两个阶段

第一阶段:推理。

第一阶段:推理。根据给定的输入和目标,生成一个推理追踪,即一系列的自然语言语句,用于解释大语言模型的推理过程和行动计划。推理追踪可以包含对外部知识的引用,也可以包含对大语言模型自身的反思和评估。这个阶段的输出由 3 个关键部分组成:

• 思考(Thought):该部分的主要功能是分析问题、生成假设和验证结果,让大语言模型做出合理和可靠的决策。

• 行动计划(Act-plan):该部分的主要功能是制定大语言模型接下来需要采取的具体行为的计划,一般由行为和对象两部分组成,也就是编码时调用的工具名称和对应的入参。

• 观察(Obs):该部分的主要功能是获取外部输入的部分。它就像大语言模型的感知系统,将环境的反馈信息同步大语言模型,帮助它进一步进行分析或者决策。

第二阶段:行动。

根据推理阶段的行动计划,完成具体的任务执行,即执行一些具体的操作或指令,用于与外部环境进行交互,如查询知识库、调用外部工具等。大语言模型根据交互的结果,获取额外的信息和反馈,从而更新自己的推理追踪和行动计划。通过重复上述两个阶段,直到达到预定的目标或满足某些终止条件。

推理-行动提示格式如下:

# 任务描述
请按照"回答格式"尽可能地去回答问题,你可以使用以下的工具:# 工具描述
工具名1:描述,调用参数
工具名2:描述,调用参数# 回答格式
思考:你应该一直保持思考,给出要怎么解决这个问题的方案
动作:<工具名>。每次动作只选择一个工具。
输入:<调用工具时需要传入的参数>
观察:<第三方工具返回的结果>
...(这个“思考/动作/输入/观察”的循环可以重复N次)思考:最后,已经得到最终结果了
最终结果:针对原始问题,输出最终结果# 用户问题
问题:{input}# 回答过程
思考:

接下来是演示一个具体的案例。我们首先准备一些可供使用的工具,每个工具以字符串格式返回其执行后的结果,如下表所示。

表:工具名称和描述
工具描述
定位获取用户当前的定位城市
天气查看天气预报
导航规划地点A到地点B的驾驶路线
计算器进行简单的四则运算
时钟获取当前的日期和时间
搜索当以上工具都无法使用时,尝试使用这个搜索引擎工具
补充当你回答问题的依赖信息不足时,调用这个工具可以让人工给你补充一些信息
自答当以上工具无法使用时,依靠自己的知识直接给出答案,请注意输出事实不要杜撰

对应的提示如下:

# 任务描述
请按照"回答格式",根据用户输入从工具列表中选择合适的工具解决问题,工具的参数格式如下:@工具名称(参数1,参数2,...):工具功能描述# 工具描述
@定位():获取用户当前的定位城市
@天气(城市名称):查看天气预报
@导航(起点,终点):规划地点A到地点B的驾驶路线
@计算器(数字1,运算符,数字2):进行简单的四则运算
@时钟():获取当前的日期和时间
@搜索(搜索关键词):当以上工具都无法使用时,尝试使用这个搜索引擎工具
@补充(需要补充的问题):当你回答问题的依赖信息不足时,调用这个工具可以让人工给你补充一些信息
@自答(需要回答的问题):当以上工具无法使用时,可以依靠你自己的知识直接给出答案,请注意输出事实不要杜撰# 回答格式
思考:请保持思考,结合上下文背景,请首先判断解决该问题的素材是否满足,然后给出要解决这个问题的方案和分析过程,
动作:@工具名称(参数 1, 参数 2, ...)。每次动作只选择一个工具。工具列表"工具描述"
输入:<调用工具时需要传入的参数>
观察:<工具返回的结果>...(这个“思考/动作/输入/观察”的循环可以重复N次)思考:最后,已经得到最终结果了
最终结果:针对原始问题,输出最终结果# 用户问题
问题:{question}# 回答过程
<第1轮>

接下来,我们来看两个具体的例子,请将上述提示中的{question}变量替换为具体的问题。

**例子1:**北京到襄阳怎么走?襄阳本地有哪些好玩的地方?

# 回答过程
<第1轮>
思考:根据用户的问题,首先需要通过定位工具确定用户当前所在的城市,然后使用导航工具规划从北京到襄阳的驾驶路线。接下来,可以使用搜索工具来获取襄阳本地的旅游景点信息。
动作:@定位()
观察:根据定位结果,得知用户当前所在城市为北京。<第2轮>
思考:现在已经知道用户当前所在城市是北京,下一步可以使用导航工具来规划从北京到襄阳的驾驶路线。
动作:@导航(北京,襄阳)
观察:导航工具返回了从北京到襄阳的驾驶路线。<第3轮>
思考:现在已经得到了从北京到襄阳的驾驶路线,接下来可以使用搜索工具来获取襄阳本地的旅游景点信息。
动作:@搜索(襄阳旅游景点)
观察:襄阳市的旅游景点有:1. 襄阳古城墙... · 2. 古隆中景区... · 3. 钟鼓楼...<第4轮>
思考:已经得到了襄阳本地的旅游景点信息,可以将这些信息整理后输出给用户。
最终结果:从北京到襄阳的驾驶路线如下:起点为北京,终点为襄阳,走京开高速→G45大广高速→S83兰南高速,距离1059.36千米,耗时10小时37分钟。
襄阳本地的好玩的地方有:1. 襄阳古城墙... · 2. 古隆中景区... · 3. 钟鼓楼...

**例子2:**王军老师的身高乘以2是多少,并以王老师身高为题做一首诗。

为了演示大语言模型和人工的交互,我特别补充这个示例,当大语言模型依靠的工具不足以解决其问题时可以通过“补充”和“自答”工具唤醒人工或者大语言模型自我回答来补充相关信息,这在一些人工问答的场景非常有用。

这两个工具的定义如下:

@补充:当你回答问题的依赖信息不足时,调用这个工具可以让人工给你补充一些信息。
@自答:当以上工具无法使用时,可以依靠你自己知识直接给出答案,请注意输出事实不要杜撰

执行过程:

<1> 
思考: 需要获取王老师的身高,可以使用@补充工具
动作: @补充(王老师身高) //该工具执行时需要人工从软件界面输入,这里输入180cm 
观察: 王老师身高为 180cm <2> 
思考: 需要计算 180cm 乘以 2 的结果,可以使用@计算器工具
动作: @计算器(180cm,*,2) 
观察: 180cm 乘以 2 的结果为 360cm <3> 
思考: 需要根据 360cm 写一首诗,可以使用@自答工具
动作: @自答(根据 360cm 写一首诗) //该工具执行时大模型会根据自己的知识回答 
观察: 王老师高达三百六十,他的身材犹如一棵树,他的脚步踏遍大江南北,他的知识智慧比满天星。<4> 
思考: 最后,已经得到最终结果了
最终结果: 王老师的身高是王老师身高为 180cm,给王老师写的诗是:王老师高达三百六十,他的身材犹如一棵树,他的脚步
踏遍大江南北,他的知识智慧比满天星。

总体而言,推理-行动提示的显著优势在于其能促进大语言模型与外部信息源或各类工具之间的协同合作。这种合作机制可以自动弥补大语言模型在推理时所缺乏的知识和能力。因此,它能够应对多样化且难度各异的任务挑战,广泛应用于各种智能体中。

最新问世的《AI原生应用开发:提示工程原理与实践》(京东图书:https://item.jd.com/14373635.html)一书,特别辟出一整章的精彩内容,深入阐述了运用大语言模型进行推理的多样技术。
在这里插入图片描述

这一章节详尽介绍了诸如零样本提示、少样本提示、少样本思维链提示、零样本思维链、直接推理提示、思维表提示、自我一致性提示、由少至多提示、自问自答提示、思维树提示、推理-行动提示、自动思维链提示等。这些技术不仅全面挖掘并激发了大语言模型在推理领域的巨大潜能,更为读者提供了宝贵的实践指南与洞见。此书无疑是值得每一位对AI应用开发、特别是提示工程领域感兴趣的读者细细品读的佳作。

在这里插入图片描述

相关文章:

智能体开发:推理-行动(ReAct)思维链提示

人类在处理一个需要多个步骤才能完成任务时&#xff0c;显著特点是能够将言语推理&#xff08;内心独白&#xff09;和实际行动融合在一起&#xff0c;在面对陌生或不确定的情况时通过这种方法学习新知识&#xff0c;做出决策&#xff0c;并执行&#xff0c;从而应对复杂的任务…...

机试准备第11天

第一题是浮点数加法&#xff0c;目前写过最长的代码。 #include <stdio.h> #include <string> #include <iostream> #include <vector> using namespace std; int main() {string str1;string str2;while (getline(cin, str1) && getline(cin…...

【Proteus仿真】【STM32单片机】智能阳台控制系统

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真STM32单片机控制器&#xff0c;使用按键、LCD1604液晶、DHT11温湿度模块、PCF8591 ADC、光线传感器、PM2.5传感器、土壤湿度传感器、继电器、水泵、电灯、28BYJ48步进电机等。 主要…...

Manus AI Agent 技术解读:架构、机制与竞品对比

目录 1. Manus 是什么&#xff1f; 1.1 研发背景 1.2 技术特点 1.3 工具调用能力 1.4 主要应用场景 2. Manus 一夜爆火的原因何在&#xff1f; 2.1 技术突破带来的震撼 2.2 完整交付的产品体验 2.3 生态与开源策略 3. Manus 与其他 AI Agent 的对比分析 3.1 技术架构…...

【时间序列】因果推断:从时序数据中探寻“因”与“果”

在日常生活中&#xff0c;我们经常听到这样的问题&#xff1a;“为什么股票价格会突然下跌&#xff1f;”、“天气变化是否会影响销售额&#xff1f;”这些问题背后&#xff0c;其实都在试图寻找一种因果关系。然而&#xff0c;在时间序列数据中&#xff0c;探寻因果关系并不像…...

IDEA2023 使用枚举类型java: 非法字符: ‘\ufffd‘

一、异常&#xff1a; 二、原因 文件编码问题 IDE或文本编辑器的文件编码设置不正确&#xff0c;可能会导致在保存文件时引入了错误的字符。 三、解决 在IntelliJ IDEA中&#xff0c;你可以通过File -> Settings -> Editor -> File Encodings来设置。...

深度学习模型组件之优化器--基础优化器(GD、SGD、Mini-batch SGD)

深度学习模型组件之优化器–基础优化器&#xff08;GD、SGD、Mini-batch SGD&#xff09; 文章目录 深度学习模型组件之优化器--基础优化器&#xff08;GD、SGD、Mini-batch SGD&#xff09;1. 梯度下降&#xff08;Gradient Descent, GD&#xff09;1.1 基本原理1.2 优点与缺点…...

使用 AIStor、MLflow 和 KServe 将模型部署到 Kubernetes

在之前几篇关于 MLOps 工具的文章中&#xff0c;我展示了有多少流行的 MLOps 工具跟踪与模型训练实验相关的指标。我还展示了他们如何使用 MinIO 来存储作为模型训练管道一部分的非结构化数据。但是&#xff0c;一个好的 MLOps 工具应该做的不仅仅是管理您的实验、数据集和模型…...

宝塔 Linux 计划任务中添加运行项目网站PHP任务-定时任务

一、指定php版运行&#xff0c; cd /www/wwwroot/www.xxx.com/ && /www/server/php/56/bin/php think timedtasks start >> /tmp/timedtasks.log 2>&1 二、不指定php版 cd /www/wwwroot/www.xxx.com/ && php think timedtasks start >> …...

unity学习64,第3个小游戏:一个2D跑酷游戏

目录 学习参考 素材资源导入 1 创建项目 1.1 创建1个2D项目 1.2 导入素材 2 背景图bg 2.0 bg素材 2.1 创建背景 2.2 修改素材&#xff0c;且修改摄像机等 2.2.1 修改导入的原始prefab素材 2.2.2 对应调整摄像机 2.2.3 弄好背景 2.3 背景相关脚本实现 2.3.1 错误…...

rom定制系列------小米note3 原生安卓15 批量线刷 默认开启usb功能选项 插电自启等

小米Note 3搭载骁龙660处理器&#xff0c;1200万像素广角镜头、俗称大号版的小米6&#xff0c;官方最终版为12.0.1稳定版安卓9的固件。客户需要运行在安卓15的rom。根据原生官网的rom修改一些功能选项。以便客户操作需求。 定制资源说明 根据客户需求采用安卓15原生系统为底包…...

基于开源 AI 大模型、AI 智能名片及 S2B2C 商城小程序源码的个人 IP 用户运营策略研究

摘要&#xff1a;本文深入剖析了个人 IP 运营领域中用户运营的核心地位与关键作用&#xff0c;详细阐述了以拉新、留存和促活为主要方式的用户运营策略&#xff0c;旨在实现对用户的有效管理和用户价值的全面提升&#xff0c;进而延长用户生命周期&#xff0c;推动用户向消费者…...

什么是:马尔可夫博弈

什么是:马尔可夫博弈 马尔可夫博弈(Markov Game),也被称为随机博弈(Stochastic Game),是马尔可夫决策过程(MDP)在多智能体环境下的扩展。它描述了多个智能体在一个环境中相互作用的动态过程,每个智能体的决策不仅取决于当前环境状态,还会影响其他智能体的决策以及环…...

【探商宝】大数据企业销售线索平台:销售型公司的战略转型引擎

一、市场现状与销售型公司的核心痛点 在数字经济高速发展的2025年&#xff0c;全球企业获客成本较五年前增长超过300%&#xff0c;而B2B销售线索的平均转化率仍徘徊在15%-20%之间。这一矛盾背后&#xff0c;折射出传统销售模式的三重困境&#xff1a; ​数据孤岛导致决策滞后…...

用Ruby的Faraday库来进行网络请求抓取数据

在 Ruby 中&#xff0c;Faraday 是一个非常强大的 HTTP 客户端库&#xff0c;它可以用于发送 HTTP 请求并处理响应。你可以使用 Faraday 来抓取网页数据&#xff0c;处理 API 请求等任务。下面我将向你展示如何使用 Faraday 库进行网络请求&#xff0c;抓取数据并处理响应。 1.…...

Ubuntu的软件源

百度搜索 ubuntu清华镜像源 根据下面的网页&#xff0c;选择对应Ubuntu操作系统的源&#xff0c;一定要对应&#xff01;&#xff01;&#xff01; https://mirror.tuna.tsinghua.edu.cn/help/ubuntu/上图的系统是16.04 xenial&#xff0c;这时就一定要使用16.04 xenial的源 …...

笔记五:C语言编译链接

Faye&#xff1a;孤独让我们与我们所爱的人相处的每个瞬间都无比珍贵&#xff0c;让我们的回忆价值千金。它还驱使你去寻找那些你在我身边找不到的东西。 ---------《寻找天堂》 目录 一、编译和链接的介绍 1.1 程序的翻译环境和执行环境 1.1.1 翻译环境 1.1.2 运行环境 …...

GitCode 助力 vue3-element-admin:开启中后台管理前端开发新征程

源码仓库&#xff1a; https://gitcode.com/youlai/vue3-element-admin 后端仓库&#xff1a; https://gitcode.com/youlai/youlai-boot 开源助力&#xff0c;开启中后台快速开发之旅 vue3-element-admin 是一款精心打造的免费开源中后台管理前端模板&#xff0c;它紧密贴合…...

SyntaxError: Invalid regular expression flag “x“

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 &#x1f35a; 蓝桥云课签约作者、…...

HiveServer2与Spark ThriftServer详细介绍对比

HiveServer2与Spark ThriftServer详细介绍对比 1、概述 1.1 HiveServer2 是 Apache Hive 提供的基于 Thrift 的服务进程&#xff0c;用于让远程客户端执行 Hive SQL 查询 ([一起了解一下HiveServer2 - zourui4271 - 博客园]。它是早期 HiveServer1 的改进版本&#xff0c;引入…...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架&#xff0c;它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用&#xff0c;和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】

微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来&#xff0c;Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器

一.自适应梯度算法Adagrad概述 Adagrad&#xff08;Adaptive Gradient Algorithm&#xff09;是一种自适应学习率的优化算法&#xff0c;由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率&#xff0c;适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

Debian系统简介

目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版&#xff…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句&#xff0c;它能够让用户直接在浏览器内练习SQL的语法&#xff0c;不需要安装任何软件。 链接如下&#xff1a; sqliteviz 注意&#xff1a; 在转写SQL语法时&#xff0c;关键字之间有一个特定的顺序&#xff0c;这个顺序会影响到…...

DBAPI如何优雅的获取单条数据

API如何优雅的获取单条数据 案例一 对于查询类API&#xff0c;查询的是单条数据&#xff0c;比如根据主键ID查询用户信息&#xff0c;sql如下&#xff1a; select id, name, age from user where id #{id}API默认返回的数据格式是多条的&#xff0c;如下&#xff1a; {&qu…...

是否存在路径(FIFOBB算法)

题目描述 一个具有 n 个顶点e条边的无向图&#xff0c;该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序&#xff0c;确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数&#xff0c;分别表示n 和 e 的值&#xff08;1…...