通過Prompt提示構建思維鏈

《DEEPSEEK原生應用與智能體開發實踐 王曉華 書籍 圖書》【摘要 書評 試讀】- 京東圖書

思維鏈技術開啟了人工智能通向人類智能的嶄新路徑。它讓模型不再僅僅是機械地執行指令,而是開始具備類似人類的思考方式,能夠理解問題的本質,進行深層次的推理和分析。這一突破,讓人工智能的發展進入了一個全新的階段,也為未來智能系統的進化奠定了堅實的基礎。

前面我們講解了思維鏈,對比了通過Prompt提示完成的思維鏈對問題的拆解。基于這種思維鏈的推理過程,DeepSeek提出了一種新的推理模型——DeepSeek-Reasoner,其作用猶如一把精準的手術刀,在人工智能的復雜領域中發揮著關鍵作用。

首先,DeepSeek-Reasoner充當著“思維解碼器”的角色。在面對復雜問題時,它能夠深入剖析問題的內在結構,將隱藏在問題背后的思維邏輯清晰地呈現出來。就像一位密碼破譯專家,能夠解讀出問題中的關鍵信息,為后續的推理過程提供清晰的指引。例如,在處理一道復雜的數學證明題時,它能夠識別出題目中的已知條件、未知結論以及它們之間的邏輯關系,將證明過程拆解為一系列合理的推理步驟。

其次,DeepSeek-Reasoner是一個“智能推理引擎”。它依據思維鏈的原理,自動生成一系列有序的子問題,并引導模型逐步求解。在這個過程中,它能夠根據模型的推理進展,動態調整推理策略,確保推理過程的高效和準確。就像一位經驗豐富的賽車手,能夠根據賽道情況靈活調整駕駛策略,以最快的速度到達終點。

然后,DeepSeek-Reasoner還具備“知識融合與創新”的能力。它能夠將模型內部存儲的海量知識與當前的推理任務相結合,在解決問題的過程中創造出新的知識和推理模式。例如,在處理跨領域的復雜問題時,它能夠融合不同領域的知識,提出新穎的解決方案,為模型的推理能力注入新的活力。

最后,DeepSeek-Reasoner還是一個“可解釋性增強器”。在傳統的深度學習模型中,推理過程往往是一個黑箱,難以理解和解釋。而DeepSeek-Reasoner通過思維鏈的推理方式,將模型的推理過程以清晰、直觀的方式呈現出來,讓人們能夠理解模型是如何得出最終答案的。這不僅提高了模型的可信度,也為模型的進一步優化和改進提供了有力的支持。

4.2.1? 通過Prompt提示構建思維鏈

對于普通的文本問答,大模型傾向于直接對結果進行回復。下面我們先舉一個經典的計算字母的例子對大模型進行問答,代碼如下:

from openai import OpenAIclient = OpenAI(api_key="sk-dfd742ec38dc4ede96977974085485b0", base_url="https://api.deepseek.com")prompt = """
strawberry里面有幾個r字母。用中文回答。
"""response = client.chat.completions.create(model="deepseek-chat",messages=[{"role": "user", "content": prompt},],max_tokens=1024,temperature=0.95,stream=False
)print(response.choices[0].message.content)

代碼運行結果如下所示:

C:\Users\xiayu\miniconda3\python.exe C:\Users\xiayu\PycharmProjects\DeepSeek應用開發實踐-源碼\第四章\demo_0.py 
### 第一步:理解題目首先,我們需要清楚地理解題目在問什么。題目問的是“strawberry”這個英文單詞中有幾個字母“r”。也就是說,我們需要數一數這個單詞中出現了多少次“r”這個字母。### 第二步:寫出單詞為了更清楚地數出“r”的數量,我們可以先把“strawberry”這個單詞寫出來:s t r a w b e r r y### 第三步:逐個字母檢查現在,我們逐個字母來看,看看哪些是“r”:1. 第一個字母:s — 不是r
2. 第二個字母:t — 不是r
3. 第三個字母:r — 是r,計數1
4. 第四個字母:a — 不是r
5. 第五個字母:w — 不是r
6. 第六個字母:b — 不是r
7. 第七個字母:e — 不是r
8. 第八個字母:r — 是r,計數2
9. 第九個字母:r — 是r,計數3
10. 第十個字母:y — 不是r### 第四步:核對計數根據上面的逐個檢查:- 第三個字母:r — 1
- 第八個字母:r — 2
- 第九個字母:r — 3所以,總共有3個“r”。### 第五步:驗證為了確保我們的答案正確,讓我們再快速看一遍單詞:s t r a w b e r r y標出所有的“r”:- 第三個字母:r
- 第八個字母:r
- 第九個字母:r確實有3個“r”。### 可能的誤區有時候,人們可能會忽略連續相同的字母。例如,在“strawberry”中,“rr”是連續的兩個“r”,可能會被誤認為是一個“r”或者發音上的一個音。但是題目問的是字母的數量,不是發音,所以“rr”是兩個獨立的“r”字母。### 結論經過以上步驟和驗證,“strawberry”這個單詞中共有**3個字母“r”**。### 最終答案“strawberry”里面有**3個字母“r”**。Process finished with exit code 0

可以看到,對于普通的大模型而言,其回復過程往往是一種基于自身對問題理解的籠統考量,而非對問題進行細致入微的分解剖析。這種缺乏系統性分解的處理方式,就如同在迷霧中摸索前行,使得模型難以精準把握問題的核心要點與關鍵細節,進而不可避免地造成了結果的不準確性。

在面對復雜問題時,普通大模型的這種局限性尤為明顯。復雜問題通常包含著多個相互關聯又各自獨立的子問題,它們如同一張錯綜復雜的網,需要有條理地梳理和分析。然而,普通大模型卻難以做到這一點,它可能會將不同子問題的信息混淆在一起,或者在處理過程中遺漏某些重要環節,從而導致最終回復與實際情況相去甚遠。

我們通過提示(Prompt)分解問題,構建一個完整思維鏈對問題解答的示例,代碼如下所示:

from openai import OpenAI# for backward compatibility, you can still use 'https://api.deepseek.com/v1' as 'base_url'.
client = OpenAI(api_key="sk-dfd742ec38dc4ede96977974085485b0", base_url="https://api.deepseek.com")prompt = """
回答下面問題并注意回答的時候嚴格按照以下步驟,
逐步進行:
1.將單詞拆開
2.從左到右一個一個對比字母是不是r,是的話你要記錄它的位置,并記住數量加-3.
第2步數出來多少個r直接輸出,不要有任何分析和判斷 問題:"strawberry"里面有幾個r
"""response = client.chat.completions.create(model="deepseek-chat",messages=[{"role": "user", "content": prompt},],max_tokens=1024,temperature=0.95,stream=False
)print(response.choices[0].message.content)

在這里我們通過提示prompt對問題的求解過程進行拆分,并指示模型在回答時依據步驟進行,回答如下:

C:\Users\xiayu\miniconda3\python.exe C:\Users\xiayu\PycharmProjects\DeepSeek應用開發實踐-源碼\第四章\demo_1.py 
1. 將單詞拆開:s, t, r, a, w, b, e, r, r, y  
2. 從左到右一個一個對比字母是不是r:  
- s: 不是  
- t: 不是  
- r: 是(位置3,數量1)  
- a: 不是  
- w: 不是  
- b: 不是  
- e: 不是  
- r: 是(位置8,數量2)  
- r: 是(位置9,數量3)  
- y: 不是  輸出:3Process finished with exit code 0

可以看到,這里我們將問答步驟進行拆分,并且以清晰、有條理的方式引導模型完成任務。這種基于思維鏈的提示方法,讓模型的回答過程不再是一個黑箱操作,而是變得透明、可解釋。

通過這種方式,模型不再是盲目地給出答案,而是按照我們設定的步驟,一步一步地進行推理和計算。這不僅提高了答案的準確性,還使得模型的推理過程具有可復現性。如果出現問題,我們可以很容易地回溯到具體的步驟,檢查是哪一步出現了偏差。

而且,這種拆分步驟的方法具有很強的通用性。對于不同類型的問題,我們只需要根據問題的特點,設計相應的步驟提示,就可以引導模型進行有效的求解。例如,在處理數學問題時,我們可以將解題過程拆分為分析問題、列出已知條件、確定解題方法、進行計算等步驟;在處理文本分析問題時,我們可以將解題過程拆分為文本預處理、特征提取、模型推理等步驟。

此外,將問答步驟拆分還有助于提升模型的學習能力。模型在按照步驟進行多次任務后,會逐漸理解每個步驟的意義和作用,從而在面對類似問題時,能夠更加自主地運用這些步驟進行求解。這就像是人類在學習新技能時,通過反復練習分解動作,最終能夠熟練掌握整個技能一樣。

總之,通過提示(Prompt)對問題求解過程進行拆分,并指示模型依據步驟進行回答,這是一種非常有效的提升模型性能和可解釋性的方法。它為人工智能的發展提供了一種新的思路,有望推動人工智能在更多領域取得更好的應用效果。

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

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

相關文章

OpenCV邊緣填充方式詳解

一、邊緣填充概述 在圖像處理中,邊緣填充(Border Padding)是一項基礎而重要的技術,特別是在進行卷積操作(如濾波、邊緣檢測等)時,處理圖像邊緣像素需要用到周圍的像素值。由于圖像邊緣的像素沒…

如何評估RAG系統?全面指標體系

構建一個可靠的 檢索增強生成(Retrieval-Augmented Generation, RAG)系統,不僅要關注模型的構建,更重要的是對系統性能進行科學、系統的評估。評估不僅衡量系統的效果,也為迭代優化提供依據。 本文將圍繞 RAG 系統的評…

力扣-合并區間

題目 56. 合并區間 - 力扣&#xff08;LeetCode&#xff09; 解析: 先按開始維度排序&#xff0c;之后依次合并&#xff0c;如果開頭 < 當前區間的最后就合并&#xff0c;> 就開辟新區間 代碼: class Solution {public int[][] merge(int[][] intervals) {int n in…

【軟考高級系統架構論文】論基于構件的軟件開發方法及其應用

論文真題 基于構作的 軟件開發 (Component-Based Software Development,CBSD) 是一種基于分布對象技術、強調通過可復用構件設計與構造軟件系統的軟件復用途徑。基于構件的軟件系統中的構件可以是COTS (Commercial-Off-the-Shelf) 構件,也可以是通過其它途徑獲得的構件(如自…

recipes的版本比較老如何更新到新版本?

在 Yocto 項目中,當你發現 “meta-openembedded” 層中的某些 recipe 版本太舊,而你想使用更新版本時,最佳實踐是在你自己項目的自定義層 (custom layer) 中使用 “bbappend” 文件進行覆蓋或升級。 核心思路: 不要直接修改 “meta-openembedded” 層的 recipe ( “*.bb”…

【軟件系統架構】系列四:嵌入式軟件-NPU(神經網絡處理器)系統及模板

目錄 一、什么是 NPU? 二、NPU 與 CPU/GPU/DSP 對比 三、NPU 的工作原理 核心結構: 數據流架構: 四、NPU 芯片架構(簡化圖) 五、NPU 的優勢 六、NPU 應用場景 視覺識別 語音識別 自動駕駛 智能監控 AIoT 設備 七、主流 NPU 芯片/架構實例 八、開發者工具生…

【NLP】使用 LangGraph 構建 RAG 的Research Multi-Agent

本文中&#xff0c;我們介紹了一個使用LangGraph開發的RAG的Research Multi-Agent工具的實際項目。該工具旨在解決需要多個來源和迭代步驟才能得出最終答案的復雜問題。它使用混合搜索和rerank步驟來檢索文檔&#xff0c;還結合了自我糾正機制&#xff0c;包括幻覺檢查過程&…

【Docker基礎】Docker容器管理:docker restart詳解

目錄 1 docker restart命令概述 1.1 命令作用 1.2 與相關命令對比 2 命令語法詳解 2.1 基礎語法 2.2 核心參數說明 3 核心原理深度解析 3.1 信號傳遞機制 3.2 狀態轉換 4 典型應用場景 4.1 服務配置更新 4.2 故障恢復流程 5 進階使用技巧 5.1 組合命令應用 5.2 …

mongoDB服務本地化部署

mongoDB服務本地化部署 前言mongoDB下載選擇版本安裝 前言 mongoDB數據庫解釋 MongoDB 是由C語言編寫的&#xff0c;是一個基于分布式文件存儲的開源數據庫系統&#xff1b;在高負載的情況下&#xff0c;添加更多的節點&#xff0c;可以保證服務器性能&#xff1b;MongoDB 旨在…

YOLOv10tensorRT推理代碼C++

最近實現了YOLOv10的tensorRT推理代碼除了后處理部分只適合YOLOv10之外&#xff0c;其余部分基本可以在yolo系列通用~學習記錄~。 #include <fstream> #include <iostream> #include <vector> #include <opencv2/opencv.hpp> #include "NvInfer.…

軟件定時器詳解:RTOS 中的“軟時鐘”機制與源碼解析

在嵌入式實時系統開發中&#xff0c;定時器是不可或缺的工具。軟件定時器&#xff08;Software Timer&#xff09; 提供了一種無需創建獨立任務、便可在特定延時后執行回調函數的機制。它適用于那些不要求高精度、但需要周期性或一次性延時執行操作的場景。 一、什么是軟件定時…

從Yocto中獲取源碼用傳統的方式單獨編譯

要獲取 Yocto 構建后的 Linux 內核和 U-Boot 源碼,并進行獨立編譯,需獲取完整的源碼樹(包含所有應用補丁和配置)及原始配置信息。以下是具體步驟: 獲取最終源碼路徑確定構建目錄位置: 內核工作目錄 KERNEL_WORKDIR=$(bitbake -e virtual/kernel | grep ^WORKDIR= | cut…

【記錄】服務器|常見的八種硬盤接口的簡介和清晰的接口圖片(2025年6月)

硬盤接口很多&#xff0c;在管服務器的時候總是要買&#xff0c;但是偶爾會忘記自己的服務器支持什么接口&#xff0c;此時就需要看引腳。 如果沒插滿&#xff0c;就可以直接拍接口的圖片&#xff0c;與下面這些圖片對照一下【文字介紹是AI直接生成的&#xff0c;圖片是我到處…

在一個成熟產品中,如何設計數據庫架構以應對客戶字段多樣化,確保系統的可維護性、可擴展性和高性能。

在SaaS系統、平臺型應用或高度可配置的企業級軟件中&#xff0c;我們常常會遇到一個現實問題&#xff1a;不同客戶對同一個業務表存在差異化字段需求。例如&#xff0c;A客戶需要一個“業務員等級”字段&#xff0c;B客戶不需要&#xff1b;C客戶希望訂單表中增加“海外倉編碼”…

社群營銷應該怎么玩

現在做營銷&#xff0c;光靠打廣告可不行了。大家都喜歡扎堆兒&#xff0c;找志同道合的人一起玩&#xff0c;這就是社群的力量。那怎么用好這股力量呢&#xff1f;咱們慢慢聊。 首先得明白&#xff0c;社群不是拉個群就完事了。關鍵是要讓大家覺得這里有意思&#xff0c;有收…

【論文閱讀筆記】TransparentGS:當高斯濺射學會“看穿”玻璃,如何攻克透明物體重建難題?

文章目錄 TransparentGS: Fast Inverse Rendering of Transparent Objects with GaussiansInfoAbstractIntroductionMethod預備知識3D GS的概念不再贅述渲染方程透明高斯Gaussian Light Field Probes多階段重建實驗結果和評估消融實驗應用討論和限制結論TransparentGS: Fast In…

某視頻網站運維工程師面試題

某視頻網站運維工程師面試題 1、 簡單寫下Xeon和Itanium這兩個產品的本質區別&#xff1f; 2、 ECC內存每Bank的顆粒數是單數還是雙數的&#xff1f; 3、 假如有5塊1T的硬盤&#xff0c;要求組合成盡量多的實際使用空間并至少容忍壞2盤而不影響raid組工作。請問有幾種模式來組…

Java底層原理:深入理解JVM性能調優與監控

一、JVM性能調優概述 JVM性能調優是Java應用優化的重要環節&#xff0c;通過合理配置JVM參數&#xff0c;可以提高Java應用的性能和穩定性。JVM性能調優的主要目標是減少垃圾回收的頻率和時間&#xff0c;提高線程的運行效率&#xff0c;優化內存的使用。 &#xff08;一&…

Joblib庫多進程/線程使用(一):使用generator參數實現邊響應邊使用

進程與線程的基本概念 特性進程 (Process)線程 (Thread)定義 操作系統分配資源的基本單位&#xff08;獨立的內存空間&#xff09; 多進程可真正并行&#xff08;利用多核 CPU&#xff09; 進程內的執行單元&#xff08;共享進程資源&#xff09;獨立性完全獨立&#xff0c;崩…

css上下滾動文字

效果圖 取得是數組里的數據 上下滾動切換 css .notice-new {background: #222222;border-radius: 19rpx;margin-top: 28rpx;font-size: 24rpx;color: white;font-weight: 500;padding: 0 20rpx;height: 55rpx;line-height: 55rpx;overflow: hidden;.notice-scroll-wrapper {pos…