当前位置: 首页 > 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;引入…...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

vscode里如何用git

打开vs终端执行如下&#xff1a; 1 初始化 Git 仓库&#xff08;如果尚未初始化&#xff09; git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

大话软工笔记—需求分析概述

需求分析&#xff0c;就是要对需求调研收集到的资料信息逐个地进行拆分、研究&#xff0c;从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要&#xff0c;后续设计的依据主要来自于需求分析的成果&#xff0c;包括: 项目的目的…...

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库&#xff0c;获取股票数据&#xff0c;并生成TabPFN这个模型 可以识别、处理的格式&#xff0c;写一个完整的预处理示例&#xff0c;并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务&#xff0c;进行预测并输…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

uniapp微信小程序视频实时流+pc端预览方案

方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度​WebSocket图片帧​定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐​RTMP推流​TRTC/即构SDK推流❌ 付费方案 &#xff08;部分有免费额度&#x…...

12.找到字符串中所有字母异位词

&#x1f9e0; 题目解析 题目描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义&#xff1a; 若两个字符串包含的字符种类和出现次数完全相同&#xff0c;顺序无所谓&#xff0c;则互为…...

Angular微前端架构:Module Federation + ngx-build-plus (Webpack)

以下是一个完整的 Angular 微前端示例&#xff0c;其中使用的是 Module Federation 和 npx-build-plus 实现了主应用&#xff08;Shell&#xff09;与子应用&#xff08;Remote&#xff09;的集成。 &#x1f6e0;️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...

解读《网络安全法》最新修订,把握网络安全新趋势

《网络安全法》自2017年施行以来&#xff0c;在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂&#xff0c;网络攻击、数据泄露等事件频发&#xff0c;现行法律已难以完全适应新的风险挑战。 2025年3月28日&#xff0c;国家网信办会同相关部门起草了《网络安全…...

打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用

一、方案背景​ 在现代生产与生活场景中&#xff0c;如工厂高危作业区、医院手术室、公共场景等&#xff0c;人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式&#xff0c;存在效率低、覆盖面不足、判断主观性强等问题&#xff0c;难以满足对人员打手机行为精…...