使用 ChatGPT API 建立對話系統 學習筆記 - 2

更新於 發佈於 閱讀時間約 9 分鐘

這一系列文章其實就是 Andrew Ng 大大與 OpenAI 合作的一門免費課程【Building Systems with the ChatGPT API】的筆記。很建議大家直接看原本的課程影片,內容蠻淺顯易懂的。


我們第二篇學習筆記將會針對思考鏈推論來做介紹。

所謂思考鏈(Chain of Thought),簡單來說就是將問題拆解成一個一個更小的步驟來引導 LLM 解出我們需要的資訊,更明確的說明,我們直接以範例來跟大家解釋。

訊息處理提示

我們會以實做一個 3C 賣場的客服助理來做示範,以下的提示訊息會以思考鏈來引導語言模型如何推論產品的比較問題:

delimiter = "####" 
system_message = f"""
按照以下步驟回答客戶的問題。 客戶的查詢將以四個井字號作為分隔符號,\
也就是 {delimiter}。

步驟1:{delimiter} 首先判斷用戶是否在問關於特定產品或多種產品的問題。 \
不考慮產品類別。
步驟2:{delimiter} 如果用戶在問關於特定產品的問題, \
辨認該產品是否在以下列表中。

所有產品:
1. 產品:TechPro Ultrabook
類別:電腦與筆記型電腦
品牌:TechPro
型號:TP-UB100
保固:1年
評價:4.5
特性:13.3吋顯示器,8GB 記憶體,256GB SSD,Intel Core i5處理器
描述:一款適合日常使用的輕便筆記型電腦。
價格:$799.99

2. 產品:BlueWave 電競筆電
類別:電腦與筆記型電腦
品牌:BlueWave
型號:BW-GL200
保固:2年
評價:4.7
特性:15.6吋顯示器,16GB RAM,512GB SSD硬碟,NVIDIA GeForce RTX 3060顯示卡
描述:一款性能強勁的電競筆記型電腦,讓您沉浸其中。
價格:$1199.99

... 中間省略 ...

步驟3:{delimiter} 如果訊息中包含上述列表中的產品, \
列出使用者訊息中可能的假設,例如筆記本X比筆記本Y大,或者筆記本Z有2年保固。

步驟4:{delimiter} 如果用戶有任何假設, \
根據您的產品資訊判斷該假設是否正確。

步驟5:{delimiter} 首先,如果適用,請禮貌地糾正客戶的錯誤假設。 \
只提及或參考上述五種產品資訊,因為這些是商店售賣的唯一五種產品。 \
以友善的語氣回答客戶。

使用以下格式:
步驟1:{delimiter} <步驟1的理由>
步驟2:{delimiter} <步驟2的理由>
步驟3:{delimiter} <步驟3的理由>
步驟4:{delimiter} <步驟4的理由>
回覆給使用者:{delimiter} <回覆給客戶的內容>

確保每一步都包含 {delimiter} 來進行分隔。
"""

我們從上面的提示範例可以看到幾個重點:

  • 我們直接列出引導 LLM 的步驟,並且註明每個步驟的處理重點,最後也讓要求LLM 依照步驟一步一步解題。
  • 分隔符號的使用。
    不論是使用者的訊息,或者 LLM 每個步驟的輸出,我們都使用分隔號來做區隔。

    我們提供給 LLM 的使用者訊息使用分隔號是為了讓 LLM 更清楚使用者訊息的界限,而要求 LLM 輸出時使用分隔號則是方便我們稍後可以簡單切割出來我們要的回應訊息,這個部分在稍後會跟大家介紹。
  • 最後,我們也可以觀察到每個步驟後方的角括弧,這實質上提供了一個讓語言模型進行填充的空間。

使用者訊息測試一

透過以上的提示,語言模型會如何處理客戶端產品比較問題呢? 我們直接來看測試範例:

user_message = f"""
你們的 BlueWave Chromebook 比 TechPro 桌機貴多少?
"""

messages = [
{'role':'system',
'content': system_message},
{'role':'user',
'content': f"{delimiter}{user_message}{delimiter}"},
]

response = get_completion_from_messages(messages)
print(response)

--- 以下是 LLM 的回覆 ---

步驟1:#### 用戶在問關於特定產品的問題,不考慮產品類別。
步驟2:#### 該產品 BlueWave Chromebook 在產品列表中,價格為 $249.99。
TechPro 桌機也在產品列表中,價格為 $999.99。
步驟3:#### 用戶沒有提供任何假設。
步驟4:#### 無需判斷假設是否正確。
回覆給使用者:#### BlueWave Chromebook 的價格是 $249.99,
而 TechPro 桌機的價格是 $999.99。
因此,BlueWave Chromebook 比 TechPro 桌機便宜了 $750。

另外我們再來看一個反例,如果客戶詢問的產品沒有在我們的產品清單內,它會怎麼反應呢?

使用者訊息測試二

user_message = f"""
你們有賣電視嗎?
"""
messages = [
{'role':'system',
'content': system_message},
{'role':'user',
'content': f"{delimiter}{user_message}{delimiter}"},
]
response = get_completion_from_messages(messages)
print(response)

--- 以下是 LLM 的回覆 ---

步驟1:#### 客戶詢問關於特定產品或多種產品的問題。不考慮產品類別。
步驟2:#### 由於客戶沒有詢問特定產品,因此我們無法回答關於產品的問題。
請問您需要關於哪種類型的產品的資訊? 例如,電腦、手機、家電等等。
回覆給客戶:#### 請問您需要關於哪種類型的產品的資訊?
例如,電腦、手機、家電等等。

看到這裏大家應該更有感覺,什麼是思考鏈以及思考鏈的威力了吧!?

最後,讓我們探討如何從思考鏈的思考程序中,提取出最後要回傳給使用者的訊息。

回覆訊息的提取

我們前面已經提及,在列出步驟時使用的分隔號,其主要目的就是便於我們提取回覆訊息。下面就是一個簡單版本的提取函式以及提取出來的內容:

try:
# 使用分隔符號來切割訊息,並且取出真的要回覆的內容
final_response = response.split(delimiter)[-1].strip()
except Exception as e:
# 發現無法處理的訊息時的回覆訊息
final_response = """很抱歉,我無法處理你這個問題,
請您試著詢問其他問題。"""

print(final_response)

--- 提取後的回覆訊息 ---
BlueWave Chromebook 的價格是 $249.99,而 TechPro 桌機的價格是 $999.99。
因此,BlueWave Chromebook 比 TechPro 桌機便宜了 $750。

以上思考鏈在實際應用時的其中一個示範。

本文的完整程式碼請參考這裏: HelloGPT/building-system-with-chatgpt-api-02-CoT reasoning.ipynb at main · u8621011/HelloGPT · GitHub

留言
avatar-img
留言分享你的想法!
avatar-img
Ted Chen的沙龍
18會員
19內容數
Ted Chen的沙龍的其他內容
2023/08/04
本篇文章深入探討了如何評估模糊訊息在對話系統開發中的它的品質驗證方式,並且使用了類似Rubic評分準則的方法來評估回覆訊息。也介紹了專家回覆與實際回覆比較的評估方式。文章最終目的希望能讓讀者具備開發自己的對話機器人的知識。
Thumbnail
2023/08/04
本篇文章深入探討了如何評估模糊訊息在對話系統開發中的它的品質驗證方式,並且使用了類似Rubic評分準則的方法來評估回覆訊息。也介紹了專家回覆與實際回覆比較的評估方式。文章最終目的希望能讓讀者具備開發自己的對話機器人的知識。
Thumbnail
2023/07/28
此文針對對話系統的持續開發和改進過程進行詳細解說,尤其在提示訊息的設計與驗證方面。以大賣場的銷售助理為例,我們設計了提示訊息,進行多次測試與調整,確保回應結果符合預期。透過建立測試集和評估函式,我們實現了批次驗證,確保所有測試項目的有效性。
Thumbnail
2023/07/28
此文針對對話系統的持續開發和改進過程進行詳細解說,尤其在提示訊息的設計與驗證方面。以大賣場的銷售助理為例,我們設計了提示訊息,進行多次測試與調整,確保回應結果符合預期。透過建立測試集和評估函式,我們實現了批次驗證,確保所有測試項目的有效性。
Thumbnail
2023/07/21
本篇文章探討如何整合大型語言模型與外部程式與資源來生成回應訊息。我們使用OpenAI的Moderation API來確認內容的合適性,並使用新的提示來評估是否真正解答了使用者的疑問。整體流程的匯整讓我們一覽全貌。我們將在下一篇文章中分享更多有關回應訊息評估的細節。
Thumbnail
2023/07/21
本篇文章探討如何整合大型語言模型與外部程式與資源來生成回應訊息。我們使用OpenAI的Moderation API來確認內容的合適性,並使用新的提示來評估是否真正解答了使用者的疑問。整體流程的匯整讓我們一覽全貌。我們將在下一篇文章中分享更多有關回應訊息評估的細節。
Thumbnail
看更多
你可能也想看
Thumbnail
沙龍一直是創作與交流的重要空間,這次 vocus 全面改版了沙龍介面,就是為了讓好內容被好好看見! 你可以自由編排你的沙龍首頁版位,新版手機介面也讓每位訪客都能更快找到感興趣的內容、成為你的支持者。 改版完成後可以在社群媒體分享新版面,並標記 @vocus.official⁠ ♥️ ⁠
Thumbnail
沙龍一直是創作與交流的重要空間,這次 vocus 全面改版了沙龍介面,就是為了讓好內容被好好看見! 你可以自由編排你的沙龍首頁版位,新版手機介面也讓每位訪客都能更快找到感興趣的內容、成為你的支持者。 改版完成後可以在社群媒體分享新版面,並標記 @vocus.official⁠ ♥️ ⁠
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
全球科技產業的焦點,AKA 全村的希望 NVIDIA,於五月底正式發布了他們在今年 2025 第一季的財報 (輝達內部財務年度為 2026 Q1,實際日曆期間為今年二到四月),交出了打敗了市場預期的成績單。然而,在銷售持續高速成長的同時,川普政府加大對於中國的晶片管制......
Thumbnail
全球科技產業的焦點,AKA 全村的希望 NVIDIA,於五月底正式發布了他們在今年 2025 第一季的財報 (輝達內部財務年度為 2026 Q1,實際日曆期間為今年二到四月),交出了打敗了市場預期的成績單。然而,在銷售持續高速成長的同時,川普政府加大對於中國的晶片管制......
Thumbnail
重點摘要: 6 月繼續維持基準利率不變,強調維持高利率主因為關稅 點陣圖表現略為鷹派,收斂 2026、2027 年降息預期 SEP 連續 2 季下修 GDP、上修通膨預測值 --- 1.繼續維持利率不變,強調需要維持高利率是因為關稅: 聯準會 (Fed) 召開 6 月利率會議
Thumbnail
重點摘要: 6 月繼續維持基準利率不變,強調維持高利率主因為關稅 點陣圖表現略為鷹派,收斂 2026、2027 年降息預期 SEP 連續 2 季下修 GDP、上修通膨預測值 --- 1.繼續維持利率不變,強調需要維持高利率是因為關稅: 聯準會 (Fed) 召開 6 月利率會議
Thumbnail
本文介紹「思維鏈」(Chain of Thought,CoT)的提問技巧,探討其如何影響ChatGPT等生成式AI工具的表現。由於「思維鏈」能使機器人模仿人類推理的過程,因此,建議在使用大型語言模型進行提示工程時加入類似「讓我們循序思考」等提示詞,以提高多步驟問題的解決能力。
Thumbnail
本文介紹「思維鏈」(Chain of Thought,CoT)的提問技巧,探討其如何影響ChatGPT等生成式AI工具的表現。由於「思維鏈」能使機器人模仿人類推理的過程,因此,建議在使用大型語言模型進行提示工程時加入類似「讓我們循序思考」等提示詞,以提高多步驟問題的解決能力。
Thumbnail
Hi,大家好。我是茶桁。 在第 11 讲中,我向您介绍了如何将各种资料内容向量化,借助Llama-index建立索引,对我们自己的文本资料进行问答。在过去的3讲中,我们深入了解了如何使用Langchain。该工具可帮助我们整合AI对语言的理解和组织能力、外部各种资料或者SaaS的API,以及您自己
Thumbnail
Hi,大家好。我是茶桁。 在第 11 讲中,我向您介绍了如何将各种资料内容向量化,借助Llama-index建立索引,对我们自己的文本资料进行问答。在过去的3讲中,我们深入了解了如何使用Langchain。该工具可帮助我们整合AI对语言的理解和组织能力、外部各种资料或者SaaS的API,以及您自己
Thumbnail
此文針對對話系統的持續開發和改進過程進行詳細解說,尤其在提示訊息的設計與驗證方面。以大賣場的銷售助理為例,我們設計了提示訊息,進行多次測試與調整,確保回應結果符合預期。透過建立測試集和評估函式,我們實現了批次驗證,確保所有測試項目的有效性。
Thumbnail
此文針對對話系統的持續開發和改進過程進行詳細解說,尤其在提示訊息的設計與驗證方面。以大賣場的銷售助理為例,我們設計了提示訊息,進行多次測試與調整,確保回應結果符合預期。透過建立測試集和評估函式,我們實現了批次驗證,確保所有測試項目的有效性。
Thumbnail
本篇文章探討如何整合大型語言模型與外部程式與資源來生成回應訊息。我們使用OpenAI的Moderation API來確認內容的合適性,並使用新的提示來評估是否真正解答了使用者的疑問。整體流程的匯整讓我們一覽全貌。我們將在下一篇文章中分享更多有關回應訊息評估的細節。
Thumbnail
本篇文章探討如何整合大型語言模型與外部程式與資源來生成回應訊息。我們使用OpenAI的Moderation API來確認內容的合適性,並使用新的提示來評估是否真正解答了使用者的疑問。整體流程的匯整讓我們一覽全貌。我們將在下一篇文章中分享更多有關回應訊息評估的細節。
Thumbnail
本文詳述如何將大型語言模型(LLM)與程式碼深度整合,運用於3C賣場的客服助理示例,透過接收並解析使用者訊息,提取產品資訊,並與後端產品資料庫整合。接著,將整合資訊回傳給LLM生成最終回應訊息。同時,也探討了中英文理解差距及解決方法,並展示如何利用Python模擬資料庫提取詳細資訊。
Thumbnail
本文詳述如何將大型語言模型(LLM)與程式碼深度整合,運用於3C賣場的客服助理示例,透過接收並解析使用者訊息,提取產品資訊,並與後端產品資料庫整合。接著,將整合資訊回傳給LLM生成最終回應訊息。同時,也探討了中英文理解差距及解決方法,並展示如何利用Python模擬資料庫提取詳細資訊。
Thumbnail
這篇文章詳細說明了「思考鏈」的概念以及如何應用在設計語言模型客服助理的過程中。使用分隔號和角括弧以設定步驟、區隔訊息和提供填充空間,這種方式可使語言模型更有效地處理和回應使用者的諮詢,包括在產品清單中找不到的諮詢。
Thumbnail
這篇文章詳細說明了「思考鏈」的概念以及如何應用在設計語言模型客服助理的過程中。使用分隔號和角括弧以設定步驟、區隔訊息和提供填充空間,這種方式可使語言模型更有效地處理和回應使用者的諮詢,包括在產品清單中找不到的諮詢。
Thumbnail
這堂課闡述開發ChatGPT所需的重要概念和工具。涵蓋語言模型如何處理文字(Token),LLM的兩種類型(Base LLM和Instruction tuned LLM),系統、助手和用戶的角色定義。並介紹以Prompting簡化AI開發流程,且透過實戰教學說明如何進行分類和預防注入提示
Thumbnail
這堂課闡述開發ChatGPT所需的重要概念和工具。涵蓋語言模型如何處理文字(Token),LLM的兩種類型(Base LLM和Instruction tuned LLM),系統、助手和用戶的角色定義。並介紹以Prompting簡化AI開發流程,且透過實戰教學說明如何進行分類和預防注入提示
Thumbnail
這篇其實就是 Andrew Ng 大大與 OpenAI 合作的一門免費課程【Chatgpt Prompt Engineering For Developers - Guideline】章節的第二段筆記。很建議大家直接看原本的課程影片,內容蠻淺顯易懂的。 第一段筆記在這:開發者的 ChatGPT 提示
Thumbnail
這篇其實就是 Andrew Ng 大大與 OpenAI 合作的一門免費課程【Chatgpt Prompt Engineering For Developers - Guideline】章節的第二段筆記。很建議大家直接看原本的課程影片,內容蠻淺顯易懂的。 第一段筆記在這:開發者的 ChatGPT 提示
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News