智能体开发:推理-行动(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应用开发、特别是提示工程领域感兴趣的读者细细品读的佳作。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

*VulnHub-FristiLeaks:1.3暴力解法、细节解法,主打软硬都吃,隧道搭建、寻找exp、提权、只要你想没有做不到的姿势

*VulnHub-FristiLeaks:1.3暴力解法、细节解法&#xff0c;主打软硬都吃&#xff0c;隧道搭建、寻找exp、提权、只要你想没有做不到的姿势 一、信息收集 1、扫靶机ip 经典第一步&#xff0c;扫一下靶机ip arp-scan -l 扫描同网段 nmap -sP 192.168.122.0/242、指纹扫描、端口…

Collab-Overcooked:专注于多智能体协作的语言模型基准测试平台

2025-02-27&#xff0c;由北京邮电大学和理想汽车公司联合创建。该平台基于《Overcooked-AI》游戏环境&#xff0c;设计了更具挑战性和实用性的交互任务&#xff0c;目的通过自然语言沟通促进多智能体协作。 一、研究背景 近年来&#xff0c;基于大型语言模型的智能体系统在复…

HTTP 与 HTTPS 协议:从基础到安全强化

引言 互联网的消息是如何传递的&#xff1f; 是在路由器上不断进行跳转 IP的目的是在寻址 HTTP 协议&#xff1a;互联网的基石 定义 HTTP&#xff08;英文&#xff1a;HyperText Transfer Protocol&#xff0c;缩写&#xff1a;HTTP&#xff09;&#xff0c;即超文本传输协…

vue3:初学 vue-router 路由配置

承上一篇&#xff1a;nodejs&#xff1a;express js-mdict 作为后端&#xff0c;vue 3 vite 作为前端&#xff0c;在线查询英汉词典 安装 cnpm install vue-router -S 现在讲一讲 vue3&#xff1a;vue-router 路由配置 cd \js\mydict-web\src mkdir router cd router 我还…

【ARM内核】SWCLK/SWDIO引脚复用

我以CMS32L1032&#xff08;ARMCortex-M0&#xff09;单片机举例&#xff1a; 一、直接将下载端口引脚复用是会出问题的 电平可能跟别的IO不一样&#xff0c;然后还不好用&#xff0c;仔细阅读芯片手册&#xff1a; 然后禁用代码是&#xff1a; //禁用SM调试接口 *(volatil…

一套企业级智能制造云MES系统源码, vue-element-plus-admin+springboot

MES应该是继ERP之后制造企业信息化最热门的管理软件&#xff0c;它适应产品个性化与敏捷化制造需求&#xff0c;满足生产过程精益管理而产生和发展起来的信息系统。 作为企业实现数字化与智能化的核心支撑技术与重要组成部分&#xff0c;MES在帮助制造企业走向数字化、智能化等…

π0及π0_fast的源码解析——一个模型控制7种机械臂:对开源VLA sota之π0源码的全面分析,含我司微调π0的部分实践

前言 ChatGPT出来后的两年多&#xff0c;也是我疯狂写博的两年多(年初deepseek更引爆了下)&#xff0c;比如从创业起步时的15年到后来22年之间 每年2-6篇的&#xff0c;干到了23年30篇、24年65篇、25年前两月18篇&#xff0c;成了我在大模型和具身的原始技术积累 如今一转眼已…

MAVEN的环境配置

在下载好maven后或解压maven安装包后进行环境配置 1.在用户环境变量中 新建一个MAVEN_HOME 地址为MAVEN目录 注&#xff1a;地址为解压后maven文件的根目录&#xff01;&#xff01;&#xff01; 2.在系统环境变量的path中添加该变量 %MAVEN_HOME%\bin 3. 测试maven安装是否成…

03 HarmonyOS Next仪表盘案例详解(二):进阶篇

温馨提示&#xff1a;本篇博客的详细代码已发布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下载运行哦&#xff01; 文章目录 前言1. 响应式设计1.1 屏幕适配1.2 弹性布局 2. 数据展示与交互2.1 数据卡片渲染2.2 图表区域 3. 事件处理机制3.1 点击事件处理3.2 手势…

taosd 写入与查询场景下压缩解压及加密解密的 CPU 占用分析

在当今大数据时代&#xff0c;时序数据库的应用越来越广泛&#xff0c;尤其是在物联网、工业监控、金融分析等领域。TDengine 作为一款高性能的时序数据库&#xff0c;凭借独特的存储架构和高效的压缩算法&#xff0c;在存储和查询效率上表现出色。然而&#xff0c;随着数据规模…

olmOCR:高效精准的 PDF 文本提取工具

在日常的工作和学习中&#xff0c;是否经常被 PDF 文本提取问题困扰&#xff1f;例如&#xff1a; 想从学术论文 PDF 中提取关键信息&#xff0c;却发现传统 OCR 工具识别不准确或文本格式混乱&#xff1f;需要快速提取商务合同 PDF 中的条款内容&#xff0c;却因工具不给力而…

加速科技Flex10K-L测试机:以硬核创新重塑显示驱动芯片测试新标杆!

在2024年召开的世界显示产业创新发展大会上&#xff0c;加速科技自主研发的高密度显示驱动芯片测试设备Flex10K-L凭借其突破性技术创新&#xff0c;成功入选"十大创新技术&#xff08;产品&#xff09;"。作为国内显示驱动芯片测试领域的标杆性设备&#xff0c;Flex1…

Go语言集成DeepSeek API和GoFly框架文本编辑器实现流式输出和对话(GoFly快速开发框架)

说明 本文是GoFly快速开发框架集成Go语言调用 DeepSeek API 插件&#xff0c;实现流式输出和对话功能。为了方便实现更多业务功能我们在Go服务端调用AI即DeepSeek接口&#xff0c;处理好业务后再用Gin框架实现流失流式输出到前端&#xff0c;前端使用fetch请求接收到流式的mar…

mac上最好的Python开发环境之Anaconda+Pycharm

为了运行修改 label-studio项目源码&#xff0c;又不想在windows上运行&#xff0c;便在mac上开始安装&#xff0c;开始使用poetry安装&#xff0c;各种报错&#xff0c;不是zip包解压不了&#xff0c;就是numpy编译报错&#xff0c;pipy.org访问出错。最后使用anaconda成功启动…

增删改查 数据下载 一键编辑 删除

index 首页 <template><div class"box"><el-card :style"{ width: treeButton ? 19.5% : 35px, position: relative, transition: 1s }"><el-tree v-if"treeButton" :data"treeData" :props"defaultPro…

复合机器人为 CNC 毛坯件上下料注入 “智能强心针”

在竞争日益激烈的 CNC 加工行业&#xff0c;如何提升生产效率、保证产品质量、实现智能化生产成为众多企业亟待解决的问题。富唯智能凭借其先进的复合机器人技术&#xff0c;成功为多家 CNC 加工企业提供了毛坯件上下料的优质解决方案&#xff0c;有效提升了生产效能&#xff0…

C++ list(双向链表)

概念 std::list 是标准模板库&#xff08;STL&#xff09;提供的一个容器类&#xff0c;它实现了双向链表的数据结构。 实现原理 内部结构 双向链表由多个节点连接而成。其中每个节点包含三个部分&#xff1a; 内容/数据域&#xff1a;用于存储实际的数据元素。前驱&#x…

dify在腾讯云服务器上部署

Dify 是一个开源的 LLM 应用开发平台。提供从 Agent 构建到 AI workflow 编排、RAG 检索、模型管理等能力&#xff0c;轻松构建和运营生成式 AI 原生应用&#xff0c;比 LangChain 更易用。 首先到dify官方网站上有详细介绍 https://docs.dify.ai/zh-hans/getting-started/ins…

7V 至 30V 的超宽 VIN 输入范围,转换效率高达 96%的WD5030

WD5030 具备 7V 至 30V 的超宽 VIN 输入范围&#xff0c;这一特性使其能够适应多种不同电压等级的供电环境&#xff0c;无论是在工业设备中常见的较高电压输入&#xff0c;还是在一些便携式设备经过初步升压后的电压&#xff0c;WD5030 都能轻松应对&#xff0c;极大地拓展了应…

计算机毕业设计Python+DeepSeek-R1大模型医疗问答系统 知识图谱健康膳食推荐系统 食谱推荐系统 医疗大数据(源码+LW文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…