提示技術系列(13)——ReAct

什么是提示技術?

? ? ? ? 提示技術是實現提示工程目標的具體技術手段,是提示工程中的“工具庫”

什么又是提示工程?

????????提示工程是指通過設計、優化和迭代輸入到大語言模型(LLM)的提示(Prompt),系統性提升模型輸出質量(如相關性、準確性、可控性)的實踐領域。它是一個覆蓋全流程方法論,包括:

  • 明確目標任務(如生成教學內容、問答、翻譯);
  • 設計提示結構(如指令、上下文、示例);
  • 選擇模型與參數(如溫度、top_p);
  • 驗證與迭代(根據輸出調整提示)。

其核心是“通過工程化方法控制大語言模型(LLM)的行為”


概念

? ? ? ? ReAct(Reasoning + Acting)是一種結合推理與行動的提示技術框架,旨在讓大語言模型在復雜任務中,同時具備邏輯推理能力外部工具/環境交互的能力。它通過動態生成推理鏈和行動指令,模擬人類的“思考-行動”循環,從而提升模型在多步驟任務重的表現。

核心思想:

  • 推理(Reasoning):模型生成中間推理步驟,解釋當前狀態、目標及下一步行動的依據。
  • 行動(Acting):模型調用外部工具(如搜索引擎、計算器、API)或執行特定操作(如提問、驗證假設)以獲取信息。
  • 迭代循環:推理與行動交替進行,逐步逼近任務目標。

ReAct,類似于人類解決復雜問題時的“先思考再行動”模式。例如,在規劃旅游時,你會先分析預算、時間(推理),然后查詢機票、酒店價格(行動),再根據結果調整計劃(推理),如此循環,直到結果滿足需求。

概念圖解

應用場景

  1. 復雜任務規劃:如規劃為期五天的云南旅行等;
  2. 財務分析:如分析公司年度財報等;
  3. 科學研究助手:如論文研究、驗證實驗設計等;
  4. 交互式系統:如聊天機器人、智能助手等;
  5. 教育領域應用:如數學解題輔導,科學實驗設計,編程教學等;
  6. ……

案例實操

使用工具:扣子

實現方式:扣子智能體

完整智能體如下:

測試輸入:

規劃一次 5 天的云南旅行,預算 12000 元,出發地:廣州,明天 2025 年 7 月 4 日出發

運行結果:

大家若有編程基礎的話,可以參考下面的代碼案例來實現與體驗不同場景下使用 ReAct 提示。

代碼實現ReAct提示

技術棧:Python;LangChain

代碼引用包導入:

pip install langchain_community==0.3.26;
pip install langchain==0.3.26;

具體代碼:

import os
import random
from typing import Dictfrom dotenv import load_dotenv
from langchain.agents import initialize_agent, Tool
from langchain.prompts import PromptTemplate
from langchain_community.chat_models import ChatZhipuAIdef weather_api(input_str: str) -> Dict[str, str]:"""處理天氣查詢"""location = input_str.strip("'\" ")  # 去除引號和空格weathers = ["晴朗", "多云", "小雨", "陣雨"]return {"weather": random.choice(weathers),"temperature": f"{random.randint(10, 25)}℃","location": location}def flight_api(input_str: str) -> dict[str, int | str] | dict[str, str]:"""處理機票查詢"""try:from_city, to_city = [c.strip("'\" ") for c in input_str.split(",")]return {"price": random.randint(800, 3000),"from": from_city,"to": to_city}except Exception as e:return {"error": f"輸入格式錯誤: {str(e)}"}# 工具注冊
tools = [Tool(name="weather",description="查詢城市天氣(輸入格式:'城市名';輸出:天氣和溫度)",func=weather_api,),Tool(name="flight",description="查詢機票價格(輸入格式:'出發地,目的地';輸出:價格)",func=flight_api),
]# 初始化 LLM
load_dotenv()llm = ChatZhipuAI(model="glm-4",api_key=os.getenv("ZHIPUAI_API_KEY")
)react_prefix = """你是一個智能旅行規劃助手,可以調用以下工具:
{tools}任務:{input}請遵循以下格式進行推理和行動:
思考:首先需要做什么?
行動:調用工具名稱(如 weather、flight)
觀察:工具返回的結果
...(重復思考-行動-觀察步驟)
最終答案:完整的旅行規劃"""react_prompt = PromptTemplate(template=react_prefix,input_variables=["input", "tools"],
)from langchain.agents import AgentTypeagent = initialize_agent(tools=tools,llm=llm,agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,prompt=react_prompt,verbose=True,  # 打印中間步驟max_iterations=20,  # 限制最大推理步驟
)user_input = "規劃一次5天的云南旅行,預算12000元,從廣州出發"
print("正在規劃旅行,請稍候...")
response = agent.run(user_input)
print("最終規劃結果:\n", response)

代碼運行輸出的中間結果,看起來就像我們在做這個任務的思考與行動過程,挺有意思的。

總結與思考

? ? ? ? ReAct 提示與自動推理并使用工具(ART)提示,都有著讓 LLM 自動規劃任務,推理并使用工具的含義,那么不免產生對比的好奇。

維度

ReAct

自動推理并使用工具(ART)

核心思想

通過交替進行“推理(Reasoning)”和“行動(Action)”,讓LLM在任務中自主選擇動作并執行。

引導LLM自動生成多步推理鏈,并動態調用外部工具來完成復雜任務。

是否依賴工具調用

是,LLM需決定何時調用工具(如API、搜索)。

是,LLM主動選擇和調用合適的工具鏈。

是否強調推理步驟

是,LLM需先進行邏輯推理,再決定下一步操作。

是,強調生成明確的推理路徑以支持工具調用。

是否生成可執行代碼

否,僅生成自然語言推理和動作指令。

否,主要生成自然語言推理和工具調用描述。

輸出形式

推理步驟 + 動作選擇(如調用搜索引擎、數據庫查詢)

多步推理鏈 + 工具調用序列(如API調用、計算器)

是否支持動態交互

是,根據中間結果調整后續推理路徑。

是,根據當前狀態動態調整工具調用順序。

是否適合非結構化任務

是,適用于自然語言理解+工具調用結合的任務。

是,尤其適合需要實時數據或多個工具協作的任務。

資源消耗

中等(取決于調用的工具數量)。

高(可能涉及多次網絡請求、API調用)。

可解釋性

高,推理路徑清晰,動作選擇透明。

高,推理過程與工具調用邏輯分離明確。

典型指令示例

“請一步步思考如何解決這個問題,并在需要時調用計算器或搜索最新數據。”

“請生成一個包含多步推理的思維鏈,并在適當位置調用相關工具完成計算或獲取信息。”

一句話總結:

????????ReAct 更強調“推理+動作”的交替循環,適用于模擬人類行為的交互式任務;而 ART 更注重“多步推理鏈+工具調用”的自動化流程,在需要訪問外部數據和服務的復雜任務中表現更強。

好了,到此吧。


提示技術系列,截止到目前為止已經寫了12篇,它們分別是:零樣本;少樣本;鏈式思考(CoT);自我一致性;生成知識提示;鏈式提示;主動提示;思維樹(TOT);自動提示工程師;方向性刺激提示;自動推理并使用工具;程序輔助語言模型;

接下來分享:檢索增強生成 (RAG) ?

為了方便大家學習,這里給出專欄鏈接:https://blog.csdn.net/quf2zy/category_12995183.html

歡迎大家一起來學習與交流……

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/87645.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/87645.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/87645.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【SVO】klt與極限搜索塊匹配findEpipolarMatchDirect

Matcher::findEpipolarMatchDirect 函數邏輯與原理分析 核心目標: 在極線上搜索參考幀特征點 ref_ftr 在當前幀 cur_frame 中的最佳匹配點,并通過三角化計算深度。 關鍵步驟解析: 1. 極線端點計算: const BearingVector A T_…

C 語言基礎入門:基本數據類型與運算符詳解

一、基本數據類型C 語言提供了豐富的基本數據類型,用于存儲不同類型的數據,主要包括整數類型、浮點類型和布爾類型。1. 整數類型整數類型用于存儲整數,根據是否帶符號以及占用存儲空間的不同,可進一步細分:類型名占用存…

應用在核電行業的虛擬現實解決方案

核能領域正處于創新與責任的交匯點。盡管核反應堆提供了高效且可持續的能源,但由于放射性物質的危險性,其也帶來了獨特挑戰。虛擬現實(VR)技術正通過為遠程操作、應急響應和放射性物質處理提供先進解決方案,徹底革新這…

CTF Web的數組巧用

PHP數組繞過intval和preg_match的CTF技巧 原題目 <?php include("flag.php"); // 引入flag文件&#xff0c;flag變量在這里定義 show_source("index.php"); // 顯示index.php文件的源碼&#xff08;方便選手查看&#xff09;// 判斷是否通過GET方式傳入…

vue2+elementui使用compressorjs壓縮上傳的圖片

首先是npm install compressorjs 然后新建一個compressorjs.js的文件 import Compressor from "compressorjs";// 默認壓縮配置 const DEFAULT_COMPRESS_OPTIONS {quality: 0.6, // 默認壓縮質量 (0-1)maxWidth: 1920, // 最大寬度maxHeight: 1080, // 最大高度con…

GPIO詳解:不僅僅是輸入輸出那么簡單

GPIO詳解&#xff1a;不僅僅是輸入輸出那么簡單 “別小看一個小小的引腳&#xff0c;它可是 MCU 世界的社交之門。” &#x1f44b; 先打個招呼&#xff1a;什么是 GPIO&#xff1f; GPIO&#xff0c;全稱是 General Purpose Input/Output —— 通用輸入輸出口。 簡單說&…

深度學習5(深層神經網絡 + 參數和超參數)

深層神經網絡簡介 深層神經網絡是機器學習中一種重要的模型&#xff0c;它通過增加網絡的“深度”&#xff08;即隱藏層的數量&#xff09;來提升模型對復雜數據的表示和學習能力。同淺層類似&#xff0c;也分為三個部分&#xff1a; 輸入層&#xff1a;接收原始數據&#xff…

時間復雜度與空間復雜度分析

一、什么是復雜度&#xff1f; 1.1 為什么需要復雜度分析&#xff1f; 假設你寫了兩個程序來解決同一個問題&#xff0c;如何判斷哪個程序更好&#xff1f;我們不能只看運行時間&#xff0c;因為&#xff1a; 不同電腦性能不同同一電腦在不同時刻狀態也不同數據規模不同&#x…

上下文工程:從提示詞到自動化流程的AI應用新范式

上下文工程&#xff1a;從提示詞到自動化流程的 AI 應用新范式 一、背景與概述&#xff1a;從提示詞工程到上下文工程的演進 隨著大語言模型 (LLM) 技術的飛速發展&#xff0c;AI 應用開發正經歷從 “提示詞工程”(Prompt Engineering) 到 “上下文工程”(Context Engineerin…

HTML網頁應用打包Android App 完整實踐指南

技術準備與工具下載 必需工具清單 在開始之前&#xff0c;需要準備以下開發工具&#xff1a; Android Studio官網&#xff1a;https://developer.android.com/studio HBuilderX官網&#xff1a;https://www.dcloud.io/hbuilderx.html 離線SDK下載&#xff1a;https://nati…

簡單 Python 爬蟲程序設計

爬蟲是獲取網頁數據的常用工具&#xff0c;我們一起來設計一個基于 requests 和 BeautifulSoup 的簡單爬蟲&#xff0c;它可以獲取網頁內容并提取文本信息。 所需庫安裝 首先需要安裝兩個必要的庫&#xff1a; pip install requests beautifulsoup4 完整代碼 import reques…

AUTOSAR圖解==>AUTOSAR_AP_EXP_ARAComAPI

AUTOSAR ara::com API詳解 自適應平臺通信API技術詳解 目錄 1. 概述2. ara::com API架構 2.1 Proxy/Skeleton架構2.2 通信方式2.3 服務連接方式 3. 詳細API說明 3.1 Proxy類3.2 Skeleton類3.3 實例標識符3.4 通信組 4. ara::com API狀態管理 4.1 服務生命周期4.2 事件與方法狀…

Spring Boot + 本地部署大模型實現:優化與性能提升

在將大語言模型集成到 Spring Boot 應用中時&#xff0c;性能優化是一個關鍵環節。本地部署的大模型雖然提供了強大的功能&#xff0c;但也可能帶來一些性能挑戰&#xff0c;如響應時間較長、資源占用較高等問題。本文將介紹如何在 Spring Boot 應用中優化本地部署大模型的性能…

QML 鼠標只響應左鍵處理方法

【1】問題描述 默認情況下qml支持左鍵&#xff0c;如果需要支持右鍵&#xff0c;甚至是中鍵那需要設置 【2】設置方法 MouseArea{ id: mouse anchors.fill: parent property int cx: 0 pr…

北方算網亮相2025全球數字經濟大會|共繪數字友好城市建設

7月2日&#xff0c;以“建設數字友好城市”為主題的2025全球數字經濟大會隆重開幕&#xff0c;為構建技術與人、城市與生態和諧共進的全球數字經濟新生態提供交流合作平臺。自7月3日開始&#xff0c;北方算網將在大會集中亮相&#xff0c;先后在多個論壇中發表主題演講&#xf…

Android PNG/JPG圖ARGB_8888/RGB_565?解碼形成Bitmap在物理內存占用大小的簡單計算

Android PNG/JPG圖ARGB_8888/RGB_565?解碼形成Bitmap在物理內存占用大小的簡單計算 Android的Bitmap 是一個用于表示圖像數據的核心類&#xff0c;代表一張圖片在內存中的存儲&#xff0c;Bitmap存儲了圖像的像素信息數據。 Bitmap把圖像理解為像素點組成的二維矩陣&#xff…

力扣網編程55題:跳躍游戲之逆向思維

一. 簡介 前面一篇文章使用貪心算法解決 力扣網55題&#xff1a;跳躍游戲&#xff0c;文章如下&#xff1a; 力扣網編程55題&#xff1a;跳躍游戲之貪心算法-CSDN博客 二. 力扣網編程55題&#xff1a;跳躍游戲之逆向思維 給你一個非負整數數組 nums &#xff0c;你最初位于數…

蒼穹外賣--day12數據統計-Excel報表

1.工作臺1.1實現思路工作臺是系統運營的數據看板&#xff0c;并提供快捷操作入口&#xff0c;可以有效提高商家的工作效率。工作臺展示的數據&#xff1a;①今日數據②訂單管理③菜品總覽④套餐總覽⑤訂單信息名詞解釋&#xff1a;①營業額&#xff1a;已經完成訂單的總金額②有…

鴻蒙應用開發:從網絡獲取數據

一、網絡狀態概述上述任一指標的變化均可視為網絡狀態的改變 二、獲取網絡信息 創建網絡對象 //創建網絡對象 //?表示可傳可不傳 connection.createNetConnection(netSpecifier?:NetSpecifier,timeout?:number):NetConnection;獲取默認激活網絡及其能力 //獲取默認激活網絡 …

探索開源虛擬 Excel 函數模塊:Python 中的 Excel 功能利器

在數據處理和分析的領域中&#xff0c;Excel 一直是一款備受青睞的工具&#xff0c;它提供了豐富多樣的函數&#xff0c;幫助用戶高效地完成各種數據操作。而現在&#xff0c;我&#xff08;董翔&#xff09;開發一個基于 Python 的虛擬 Excel 函數模塊&#xff0c;它將 Excel …