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

TQA相关

ReAct Prompting: 原理、实现与应用

ReAct Prompting(推理与行动提示)是一种引导大型语言模型(LLM)进行推理和行动的策略,广泛应用于复杂问题求解、对话生成和自动化任务等领域。ReAct Prompting 通过将模型的思考过程结构化为一系列步骤,使模型能够像人类一样进行推理、执行行动,并根据反馈不断调整,达到更高的任务完成效果。本文将详细讲解 ReAct Prompting 的核心原理、具体步骤、实现方式,以及如何利用其变体 TQA(Think-Question-Answer)来辅助用户故事编写。

ReAct Prompting 的基本原理

ReAct Prompting 的核心思想是将模型的输出过程分为三个部分:思考(Thought)行动(Action)观察(Observation)。在每个步骤中,模型会进行推理思考、选择合适的行动,然后基于观察到的反馈继续调整推理。这种循环可以帮助模型在复杂任务中不断优化自己的输出。

ReAct Prompting 的典型步骤

一个典型的 ReAct Prompting 通常包含以下四个部分:

  1. 上下文提示(Context Prompting):为模型提供解决问题的背景信息。上下文可以帮助模型理解任务的具体场景和需求。

  2. ReAct 步骤(ReAct Steps):包括推理和行动的标准步骤。通常是“思考 - 行动 - 观察(Thought-Action-Observation)”的顺序。

  3. 推理(Reasoning):提示模型根据当前上下文进行思考和推理,例如“让我们一步步思考”或“根据现状进行推理”等。

  4. 行动指令集(Action Instruction Set):为模型提供一组可能的行动选择,使模型能够从中挑选适合当前推理的行动。

ReAct Prompting 模板的细节说明

在 ReAct Prompting 中,模板包含几个关键部分,每个部分都对应特定的业务场景和模型的交互方式:

  1. {context}:表示业务整体的解决方案,涵盖主要的业务背景信息。如果 LLM 提出的问题包含了对基础概念或流程的误解,那么需要重新修改业务背景说明,这就意味着要调整模板中用于表示业务上下文的部分。

  2. {story}:表示当前的用户故事。这个部分定义了当前需要讨论的用户操作场景。如果 LLM 提出的问题包含了对操作的误解,那么需要修改用户故事,即调整模板中表示用户故事的部分。

  3. {history}:表示之前回答过的历史记录,用于跟踪多轮对话中的上下文。如果 LLM 提出的问题仅仅是关于交互细节的,那么我们只需要在会话中回答这些细节,这些信息会被记录在 {history} 部分,供后续参考。

典型 ReAct Prompting 示例

以下是一个标准的 ReAct Prompting 示例,展示了如何在英文和中文环境下分别应用:

英文示例:
Context: You are a software troubleshooting expert assisting a user with installation issues.
ReAct Steps:
1. Thought: Analyze the user's description of the problem.
2. Action: Choose an action based on the analysis.
3. Observation: Adjust your reasoning based on user feedback.Example:
- Thought: User encountered a permission error during installation.
- Action: Suggest running the software as an administrator.
- Observation: User reported the issue persists.
中文示例:
上下文提示:你是软件排障专家,正在帮助用户解决安装问题。
ReAct 步骤:
1. 思考:分析用户描述的问题。
2. 行动:根据分析选择适当的行动。
3. 观察:根据用户反馈调整推理。示例:
- 思考:用户在安装时遇到权限错误。
- 行动:建议用户以管理员身份运行软件。
- 观察:用户反馈问题未解决。

TQA(Think-Question-Answer)在 ReAct Prompting 中的应用

在理解 ReAct Prompting 的推理行动模式后,TQA(想 - 问 - 答)只是其中一种变体,提供了不同的响应步骤。在 TQA 中,模型不仅进行思考(Thought),还会主动提问(Question)来获取更多细节,并利用收到的答案(Answer)来丰富推理过程。TQA 特别适合用于编写用户故事的验收条件。

TQA 示例 Prompt 用于编写用户故事验收条件

以下是 TQA 模板的典型提示词,并附有注释说明每个部分的设计意图:

You are a business analyst who is familiar with specification by example. I’m the domain expert.
// 你是一个熟悉“示例驱动规格说明”的业务分析师,而我是领域专家。===CONTEXT{context}===END OF CONTEXT
// 提供上下文背景信息,帮助模型了解任务的具体场景和需求。
// {context} 表示业务整体的解决方案。如果 LLM 提出的问题包含对基础概念或流程的误解,需要调整这里的业务背景信息。===USER STORY{story}===END OF USER STORY
// 提供当前需要分析的用户故事,作为 ReAct 推理的输入。
// {story} 表示当前的用户故事。如果 LLM 提出的问题包含对操作的误解,需要调整这个部分。Explain the user story as scenarios. Use the following format:
// 使用场景解释用户故事,并遵循下面的格式进行描述。Thought: you should always think about what is still uncertain about the user story. Ignore technical concerns.
// 思考:模型需要思考用户故事中的不清晰部分,不涉及技术细节。Question: the question to ask to clarify the user story
// 问题:提出问题帮助澄清用户故事中的不确定性。Answer: the answer I responded to the question
// 回答:领域专家根据问题给出解答。… (this Thought/Question/Answer repeat at least 3 times, at most 10 times)
// …(思考-问题-回答的循环至少执行 3 次,最多不超过 10 次)Thought: I know enough to explain the user story
// 思考:当模型认为已经了解足够信息时,停止提问。Scenarios: List all possible scenarios with concrete example in Given/When/Then style
// 场景:模型最终将用户故事转化为多个具体的情景,使用 Given/When/Then 格式列出。
{history}{input}
// {history} 表示之前回答的历史记录。如果 LLM 提出的问题仅关于交互细节,可以直接在会话中回答,这些信息会被记入历史记录。

通过 LangChain 实现 ReAct Agent

LangChain 是一个用于将 LLM 集成到复杂应用中的框架,它支持通过定义 Prompt Template、Memory 和 Agent 实现 ReAct 提示词的自动化应用。以下是 ReAct Agent 的核心组件:

  1. Prompt Template:定义 TQA 模板的格式,包括上下文提示、思考指令和行动指令。

  2. Memory:用于存储模型的思考和观察,帮助在多轮对话中积累信息。

  3. Agent:通过调用 LLM 执行 ReAct 步骤,自动完成推理、提问和响应。

LangChain 实现 TQA 的示例代码
from langchain.agents import initialize_agent, Tool
from langchain.prompts import PromptTemplate
from langchain.llms import OpenAI# 定义 TQA 模板
tqa_prompt = PromptTemplate(input_variables=["context", "story"],template="""You are a business analyst familiar with specification by example. I’m the domain expert.CONTEXT: {context}END OF CONTEXTUSER STORY: {story}END OF USER STORYExplain the user story as scenarios. Use the following format:Thought: you should always think about what is still uncertain about the user story. Ignore technical concerns.Question: the question to ask to clarify the user story.Answer: the answer I responded to the question.(Repeat the Thought/Question/Answer cycle at least 3 times, but not more than 10 times.)Thought: I know enough to explain the user story.Scenarios: List all possible scenarios with concrete examples in Given/When/Then style."""
)# 定义 LLM
llm = OpenAI(model="text-davinci-003")# 初始化 ReAct Agent
react_agent = initialize_agent(tools=[Tool(prompt=tqa_prompt, llm=llm)],agent_type="react"
)# 提供上下文和用户故事
context = "This is the business context explaining core concepts."
story = "User wants to be able to reset their password via email."# 执行 ReAct Agent
output = react_agent.run(context=context, story=story)
print(output)

TQA 实现的策略分析

  • 引导模型思考与提问:通过上下文提示引导模型识别不确定性,并进行结构化提问。每次的提问和回答循环帮助逐步

澄清用户故事中的细节。

  • 关注业务逻辑:在推理时忽略技术问题,确保输出的内容始终围绕业务逻辑展开。
  • 自动生成验收场景:最终,TQA 的输出会将用户故事转换为多个验收条件,提供清晰、具体的场景描述。

结论

ReAct Prompting 与 TQA 模板为 LLM 的推理与行动提供了一套明确的框架,使其能够在复杂任务中更好地理解上下文,自动生成高质量的用户故事验收条件。这种方法不仅提高了 LLM 的交互质量,也为业务分析、测试设计等场景提供了强有力的支持。通过 LangChain 等工具的集成,ReAct Prompting 可以方便地应用于各类自动化任务中,为用户带来显著的效率提升。

相关文章:

TQA相关

ReAct Prompting: 原理、实现与应用 ReAct Prompting(推理与行动提示)是一种引导大型语言模型(LLM)进行推理和行动的策略,广泛应用于复杂问题求解、对话生成和自动化任务等领域。ReAct Prompting 通过将模型的思考过程…...

Spring Cloud之二 微服务注册

1&#xff1a;Intellij 新建服务 user-service 2&#xff1a;pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"…...

[Web安全 网络安全]-文件上传漏洞

文章目录&#xff1a; 一&#xff1a;前言 1.什么是文件上传漏洞 2.环境 2.1 靶场 2.2 其他工具 3.木马分类 二&#xff1a;文件上传分类 1.客户端 JS绕过 2.服务端-黑名单 大小写绕过 点和空格绕过 .htaccess文件绕过 php345文件绕过 windows ::$DATA绕过 3.…...

【白话Redis】缓存雪崩、穿透、击穿、失效和热点缓存重建

快速导航 Redis不可不知的故障现象一、缓存雪崩定义&#xff1a;解决方案&#xff1a; 二、缓存穿透定义&#xff1a;解决方案一&#xff1a;解决方案二&#xff08;更普遍的做法&#xff09;&#xff1a; 三、缓存击穿定义&#xff1a;解决方案&#xff1a; 四、缓存失效Redis…...

flink增量检查点降低状态依赖实现的详细步骤

增量检查点启动恢复的时间是很久的&#xff0c;业务上不能接受&#xff0c;所以可以通过降低状态依赖来减少恢复的时间。 降低状态依赖 尽可能减少状态的复杂性和依赖关系&#xff0c;通过拆分状态或将状态外部化到其他服务中&#xff0c;从而降低恢复的开销。 实施措施&…...

Redis总结,是什么,干什么,怎么利用?

Redis&#xff08;Remote Dictionary Server&#xff09;是一个开源的内存数据库&#xff0c;遵守 BSD 协议&#xff0c;它提供了一个高性能的键值&#xff08;key-value&#xff09;存储系统&#xff0c;常用于缓存、消息队列、会话存储等应用场景 Redis主要特性 &#xff08…...

Vue3状态管理Pinia

Vue3 的 Pinia 使用指南 Pinia 是 Vue3 中官方推荐的状态管理库&#xff0c;作为 Vuex 的替代品&#xff0c;它更简洁易用&#xff0c;并且支持模块化、类型推断和 DevTools 集成。Pinia 非常适合在 Vue3 项目中管理全局状态。 1. 安装 Pinia 首先&#xff0c;我们需要在 Vu…...

box64 安装

ARM运行x86程序 docker安装 box64 安装方法 docker run --name a001 -itd --networkhost -v /www/wwwroot/docker/Box64/f:/f ubuntu:22.04 /bin/bash docker exec -it a001 bash cd /home //创建目录qq547176052 mkdir -p qq547176052 cd /home/qq547176052 apt update apt …...

OpenCV通过鼠标提前ROI(C++实现)

文章目录 鼠标绘制矩形提取ROI任意形状绘制提前ROI 废话不多说&#xff0c;直接上代码 鼠标绘制矩形提取ROI #include <iostream> #include <opencv2\opencv.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/core/core.hpp>us…...

6.1.数据结构-c/c++模拟实现堆上篇(向下,上调整算法,建堆,增删数据)

目录 一.堆(Heap)的基本介绍 二.堆的常用操作&#xff08;以小根堆为例&#xff09; 三.实现代码 3.1 堆结构定义 3.2 向下调整算法* 3.3 初始化堆* 3.4 销毁堆 3.4 向上调整算法* 3.5 插入数据 3.6 删除数据 3.7 返回堆顶数据 四.下篇内容 1.堆排序 2.TopK问题 一…...

【智能终端】HBuilder X 与微信开发者工具集成与调试实战

目录 1. 需求和理解库、框架、平台 1.1 需求 1.2 理解 2.3 库、框架、平台 2.3.1 库&#xff08;Library&#xff09; 2.3.2 框架&#xff08;Framework&#xff09; 2.3.3 平台&#xff08;Platform&#xff09; 2.3.4 总结 2. 使用 HBuilder X 创建第一个 uni-app 应…...

结构体的字节对齐方式(__attribute_pack(packed))#pragma pack())

结构体的字节对齐方式&#xff08;__attribute_pack(packed))&#pragma pack()) 1、编译器的字节对齐方式 当前编译器都有默认的字节对齐方式&#xff0c; struct PackedStruct {char a;int b;short c; };如上代码段中的结构体&#xff0c;在编译运行后发现他的大小并不…...

若依Ruoyi之智能售货机运营管理系统(新增运营运维工单管理)

idea抽取独立方法快捷键&#xff1a;ctrlaltm TaskDto.java package com.dkd.manage.service.impl;import java.time.Duration; import java.util.List; import java.util.stream.Collectors;import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUti…...

ModuleNotFoundError: No module named ‘keras.layers.core‘怎么解决

问题 ModuleNotFoundError: No module named keras.layers.core&#xff0c;如图所示&#xff1a; 如何解决 将from keras.layers.core import Dense,Activation改为from tensorflow.keras.layers import Dense,Activation&#xff0c;如图所示&#xff1a; 顺利运行&#xf…...

C++(三)----内存管理

1.C/C内存分布 看下面这个问题&#xff08;考考你们之前学的咋样&#xff09;&#xff1a; int globalVar 1; static int staticGlobalVar 1; void Test() {static int staticVar 1;int localVar 1;int num1[10] {1, 2, 3, 4};char char2[] "abcd";char* pCh…...

使用 ShuffleNet 模型在 CIFAR-100 数据集上的图像分类

简介 在深度学习领域&#xff0c;图像分类任务是衡量算法性能的重要基准。本文将介绍我们如何使用一种高效的卷积神经网络架构——ShuffleNet&#xff0c;来处理 CIFAR-100 数据集上的图像分类问题。 CIFAR-100 数据集简介 CIFAR-100 数据集是一个广泛使用的图像分类数据集&…...

怎么利用短信接口发送文字短信

在当今这个快节奏的数字时代&#xff0c;即时通讯已成为人们日常生活和工作中不可或缺的一部分。而短信接口&#xff08;SMS Interface&#xff09;&#xff0c;作为传统与现代通讯技术结合的典范&#xff0c;凭借其高效、稳定、广泛覆盖的特性&#xff0c;在众多领域发挥着不可…...

【C#生态园】提升C#开发效率:掌握这六款单元测试利器

从xUnit到SpecFlow&#xff1a;C#测试驱动开发全指南 前言 在C#开发中&#xff0c;单元测试和模拟框架是至关重要的工具&#xff0c;它们可以帮助开发人员确保代码的质量和可靠性。本文将介绍一些常用的C#单元测试框架和相关库&#xff0c;包括xUnit、NUnit、Moq、FluentAsse…...

【QT】自制一个简单的小闹钟,能够实现语音播报功能

做了一个自制的小闹钟&#xff0c;能够自己输入时间&#xff0c;以及对应的闹铃&#xff0c;时间到了自动播放设定的闹铃&#xff0c;可以随时取消重新设定&#xff0c;采用分文件编译 注意&#xff1a;需要在.pro文件中加入&#xff1a;QT core gui texttospeech 代码…...

基于深度学习的图像描述生成

基于深度学习的图像描述生成&#xff08;Image Captioning&#xff09;是一种将计算机视觉与自然语言处理结合的任务&#xff0c;其目标是通过自动生成自然语言来描述输入的图像。该技术能够理解图像中的视觉内容&#xff0c;并生成相应的文本描述&#xff0c;广泛应用于视觉问…...

数据库云服务与Serverless

数据库云服务与Serverless 1. 技术分析 1.1 云数据库概述 云数据库是数据库服务的未来方向&#xff1a; 云数据库类型IaaS: 虚拟机部署PaaS: 托管服务Serverless: 无服务器云服务优势:弹性伸缩自动备份高可用性1.2 Serverless数据库 Serverless特点按需付费: 按使用量计费自动扩…...

SystemC随机验证环境构建:从约束生成到覆盖率驱动的自动化测试

1. 项目概述&#xff1a;从确定性仿真到随机验证的跨越在芯片设计和验证领域&#xff0c;SystemC 早已不是陌生的名字。它作为 C 的类库扩展&#xff0c;为系统级建模和硬件/软件协同验证提供了强大的框架。然而&#xff0c;很多刚接触 SystemC 验证的朋友&#xff0c;往往止步…...

【从仿真到硬件】触发器电路的设计、验证与性能优化实战

1. 触发器电路基础与设计仿真 触发器是数字电路中最基础的存储单元&#xff0c;相当于电子世界里的"记忆开关"。我第一次接触触发器时&#xff0c;被它简单却精妙的工作原理深深吸引。想象一下&#xff0c;这就像是一个有记忆功能的电灯开关——不仅能根据当前输入改…...

Sourcetree新手指南:从零配置到高效版本控制

1. Sourcetree入门&#xff1a;为什么选择图形化Git工具 第一次接触版本控制时&#xff0c;我对着黑漆漆的命令行窗口敲git命令的手都在发抖。直到发现了Sourcetree这个神器&#xff0c;才真正体会到什么叫"可视化操作"。作为Atlassian公司出品的免费工具&#xff0…...

2026年4K投影仪画质横评:明基W系列“色彩科学”解析

一、开篇点题&#xff1a;画质之争&#xff0c;终归是色彩之争2026年的4K投影仪市场&#xff0c;参数竞赛已进入白热化。当分辨率、亮度、对比度等硬指标逐渐趋同&#xff0c;真正拉开产品差距的&#xff0c;是那个决定画面灵魂的核心——色彩。一台投影仪能否精准还原电影导演…...

qpOASES终极指南:5分钟快速安装配置与二次规划求解器应用教程

qpOASES终极指南&#xff1a;5分钟快速安装配置与二次规划求解器应用教程 【免费下载链接】qpOASES Open-source C implementation of the recently proposed online active set strategy 项目地址: https://gitcode.com/gh_mirrors/qp/qpOASES 你是否曾为复杂的二次规划…...

Auto.js开发环境搭建:用雷电模拟器替代真机,解决局域网IP不在同一网段的问题

Auto.js开发环境搭建&#xff1a;雷电模拟器网络架构深度解析与实战指南 当开发者手头没有备用安卓设备&#xff0c;或者真机与电脑的Wi-Fi连接频繁断开时&#xff0c;安卓模拟器成为了Auto.js脚本测试的救星。但模拟器的网络配置往往暗藏玄机——为什么雷电模拟器显示172.16.x…...

高光谱图像处理入门避坑指南:数据冗余、小样本和‘维数灾难’怎么破?

高光谱图像处理实战&#xff1a;破解数据冗余与小样本困境的技术路线 当第一次接触高光谱图像时&#xff0c;大多数研究者都会被其数据立方体的三维结构所震撼——数百个连续光谱波段构成的"超视觉"信息库&#xff0c;理论上能捕捉到人眼无法感知的物质指纹特征。但随…...

从ZEMAX到SOLIDWORKS:手把手教你搞定红外平行光管的跨软件光机设计流程

从ZEMAX到SOLIDWORKS&#xff1a;红外平行光管光机协同设计全流程解析 在光学工程领域&#xff0c;红外平行光管的设计往往需要跨越光学仿真与机械实现两大专业领域。这种"光机协同设计"过程既考验工程师对光学原理的理解&#xff0c;又要求熟练掌握专业软件间的数据…...

【MATLAB源码-第439期】基于MATLAB的APSK与QAM高阶调制在Saleh非线性功放下BER和EVM性能对比

操作环境&#xff1a;MATLAB 2024a1、算法描述摘要 高阶数字调制技术是现代无线通信和卫星通信系统提高频谱利用率的重要方法。QAM 调制通过同相分量和正交分量的幅度组合形成二维星座&#xff0c;在较高信噪比条件下能够获得较高的信息承载能力。APSK 调制则采用多环幅相结构&…...