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

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

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


我們在上一篇看到了以準確的分數來評估提示訊息的方式,也學習到了自動化評估的方法,本篇則專注在只能模糊評估的訊息,它的驗證方式。

我們先來看什麼是只能模糊評估的訊息,以下是我們取得回覆訊息的程式碼跟回覆內容:

customer_msg = f"""
可以幫我介紹關於 smartX ProPhone 手機和 fotosnap 單眼相機的資訊嗎?"""

products_by_category = utils.get_products_from_query(customer_msg)
category_and_product_list = utils.read_string_to_list(products_by_category)
product_info = utils.get_mentioned_product_info(category_and_product_list)

# 取得助理回覆
assistant_answer = utils.answer_user_msg(user_msg=customer_msg,
product_info=product_info)

--- 以下是回覆內容 ---

>> 當然可以!我們有兩款產品可以介紹給您。
首先是 SmartX ProPhone 手機。這款手機具有6.1吋的顯示器和128GB的儲存空間,
讓您可以盡情儲存您的照片和影片。它還搭載了12MP的雙鏡頭,
讓您拍攝出更清晰和生動的照片。此外,它還支援5G網路,
讓您可以享受更快速的網路連接。SmartX ProPhone 手機的價格為899.99元,
並且附帶一年的保固。
另一款產品是 Fotosnap 單眼相機。這款相機具有24.2MP的感光元件,
可以捕捉出高品質的照片。它還支援1080p的影片拍攝,讓您可以錄製出清晰的視頻。
相機配備了一個3吋的LCD螢幕,方便您即時檢視拍攝的照片和影片。

此外,它還支援可更換鏡頭的功能,讓您可以根據不同的拍攝需求進行調整。
Fotosnap 單眼相機的價格為599.99元,同樣附帶一年的保固。
請問您對這兩款產品有任何進一步的問題嗎?

這類訊息的第一個評估方式是採用類似 Rubic 評分準則的方式,來將回覆訊息以我們判斷的重要評估面向來做驗證。

什麼是 Rubic 評分準則?

Rubic 評分準則是一種評價工具,用來確定特定任務或技能的效能或品質。評分標準分為多個等級,每個等級都有其相對應的分數範圍,並描述出達到該等級所需要的特定行為或表現。評分標準讓評分更加公平和透明,因為所有人都能明確地知道如何獲得不同的分數。

例如,如果我們要用評分標準來給小學生的書報告打分數,我們可能會設立以下幾個等級:

內容完整:包含報告的主題、主要觀點,以及你對主題的看法。優(10分):所有內容都包含並詳細解釋。
良好(7分):大部分內容都包含並有基本解釋。
普通(4分):只包含部分內容,或者沒有足夠的解釋。
不佳(0分):幾乎沒有包含需要的內容。

文字表達:句子的流暢性,以及是否使用了有趣的詞彙或句子結構。優(10分):句子流暢,且使用了豐富有趣的語言。
良好(7分):句子基本流暢,有時候使用了有趣的語言。
普通(4分):句子稍微生硬,或語言用詞簡單。
不佳(0分):句子難以理解,或語言用詞過於簡單。

拼字和語法:書寫是否正確,語法是否正確。優(10分):沒有拼字和語法錯誤。
良好(7分):有少數拼字或語法錯誤。
普通(4分):有多個拼字或語法錯誤。
不佳(0分):有大量拼字或語法錯誤。

所以,如果一個學生的報告在內容上獲得7分,在文字表達上獲得10分,並在拼字和語法上獲得4分,那他的總分就是7+10+4=21分。這種評分方式對於學生和老師都很清楚,學生可以知道他們哪裡做得好,哪裡還需要改進。

評估的提示訊息如下:

def eval_with_rubric(test_set, assistant_answer):
cust_msg = test_set['customer_msg']
context = test_set['context']
completion = assistant_answer

system_message = """\
你是一個助理,透過檢視客服人員用來產生其回應的上下文, \
評估客服人員回答使用者問題的表現。
"""

user_message = f"""\
你正在根據代理人用來回答問題的上下文,對提交的答案進行評估。
以下是數據:
[數據開始]
************
[問題]: {cust_msg}
************
[上下文]: {context}
************
[提交的答案]: {completion}
************
[數據結束]

比較提交答案的事實內容與上下文,忽略風格、文法或標點符號的任何差異。
回答以下問題(請記住你的答案,但是不要輸出):
- 助理的回答僅基於所提供的上下文嗎?(是或否)
- 答案是否包含上下文中未提供的資訊?(是或否)
- 回應與上下文之間是否有任何不符?(是或否)
- 計算使用者問了多少個問題。(輸出一個數字)
- 對於使用者提出的每個問題,是否有相對應的答案?
- 在問的問題數中,有多少個問題得到了答案的回應?(只要輸出一個數字)

請將你以上各問題的答案,以以下格式輸出:
問題1:(是或否)
問題2:(是或否)
...
問題N:(是或否)
"""

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

response = get_completion_from_messages(messages)
return response

以下是實際評估時得到的回應狀況:

cust_prod_info = {
'customer_msg': customer_msg,
'context': product_info
}

evaluation_output = eval_with_rubric(cust_prod_info, assistant_answer)
print(evaluation_output)

--- 以下是回應的內容 ---

>> 問題1:是
問題2:是
問題3:是
問題4:1
問題5:是
問題6:1

第二個評估方式,我們將會先提供專家的回應內容,然後將專家回覆與真實的回覆做個比較,評估的提示訊息如下:

def eval_vs_ideal(test_set, assistant_answer):
cust_msg = test_set['customer_msg']
ideal = test_set['ideal_answer']
completion = assistant_answer

system_message = """\
你是一個評分的助手,請透過實際回答與專家回答的內容比較來做評估。\
評估結果你只能回答一個字母。
"""

user_message= f"""\
你正在針對原始問題來做實際回答以及專家回答間的差異評分,並且依照評分邏輯做為判斷邏輯。

[評分資料開始]
************
[原始問題]: {cust_msg}
************
[專家回答]: {ideal}
************
[實際回答]: {completion}
************
[評分邏輯]:
1. 將實際回答內容與專家的回答內容進行比較,忽略風格、語法、順序或標點的差異。
2. 如果兩者回覆的內容,只是表達方式和詳細程度不同,請當作相同的回答。
3. 實際回答可能是專家回答的子集或超集,或者可能與專家回答有衝突。
************
[評分資料結束]

請你確定下方哪種情況適用,並且只回覆 ABCDE 中的一個字元:
(A) 實際回答是專家回答的子集。
(B) 實際回答是專家回答的超集。
(C) 實際回答和專家答案之間有不同意見。
(D) 實際回答和專家答案相同
(E) 答案有所不同,但從實際性的角度看,這些差異並不重要。
"""

#print(f'user_msg: {user_message}')

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

response = get_completion_from_messages(messages)
return response

下面則是專家內容跟實際的回覆內容:

test_set_ideal = {
'customer_msg': """ \
可以幫我介紹關於 smartX ProPhone 手機和 fotosnap 單眼相機的資訊嗎?""",

'ideal_answer':""" \
當然可以!SmartX ProPhone 是一款功能強大的智慧型手機,具有先進的相機功能。 \
例如,它擁有一個 1200 萬像素的雙鏡頭、5G 無線和 128GB 的儲存空間。 \
它還有一個 6.1 吋的顯示器。價格是 $899.99。

FotoSnap 數位單眼相機非常適合捕捉令人驚嘆的照片和影片。 \
一些功能包括 1080p 的影片,3 吋液晶螢幕,2420 萬像素的感光元件,
以及可更換鏡頭。價格是 $599.99。

你對這些產品有什麼其他的問題嗎?
或者有其他我可以幫你解答的問題嗎?
"""
}

實際的回覆內容如下:

print(assistant_answer)

--- 回覆內容 ---

>> 當然可以!我們有兩款產品可以介紹給您。

首先是 SmartX ProPhone 手機。這款手機具有6.1吋的顯示器和128GB的儲存空間,
讓您可以盡情儲存您的照片和影片。它還搭載了12MP的雙鏡頭,讓您拍攝出更清晰和
生動的照片。此外,它還支援5G網路,讓您可以享受更快速的網路連接。
SmartX ProPhone 手機的價格為899.99元,並且附帶一年的保固。

另一款產品是 Fotosnap 單眼相機。這款相機具有24.2MP的感光元件,
可以捕捉出高品質的照片。它還支援1080p的影片拍攝,讓您可以錄製出清晰的視頻。
相機配備了一個3吋的LCD螢幕,方便您即時檢視拍攝的照片和影片。
此外,它還支援可更換鏡頭的功能,讓您可以根據不同的拍攝需求進行調整。
Fotosnap 單眼相機的價格為599.99元,同樣附帶一年的保固。

請問您對這兩款產品有任何進一步的問題嗎?

將兩者做評估:

eval_vs_ideal(test_set_ideal, assistant_answer)

--- 回覆內容 ---

>> 'B'

大家可以看到,評估的分數是 B(實際回答是專家回答的超集。),

我們模擬的資料,的確真實回覆的訊息量比我們設定的專家回覆還要多,您可以再試試看幾個案例。

以上是我們這個系列的所有內容,相信大家到現在已經有足夠的知識,可以開始開發自己的對話系統(對話機器人)了,開工!

PS. 本篇文章的完整程式碼可以參考這裏: HelloGPT/building-system-with-chatgpt-api-06-Evaluation-Part2.ipynb at main · u8621011/HelloGPT (github.com)

留言
avatar-img
留言分享你的想法!
avatar-img
Ted Chen的沙龍
18會員
19內容數
Ted Chen的沙龍的其他內容
2023/07/28
此文針對對話系統的持續開發和改進過程進行詳細解說,尤其在提示訊息的設計與驗證方面。以大賣場的銷售助理為例,我們設計了提示訊息,進行多次測試與調整,確保回應結果符合預期。透過建立測試集和評估函式,我們實現了批次驗證,確保所有測試項目的有效性。
Thumbnail
2023/07/28
此文針對對話系統的持續開發和改進過程進行詳細解說,尤其在提示訊息的設計與驗證方面。以大賣場的銷售助理為例,我們設計了提示訊息,進行多次測試與調整,確保回應結果符合預期。透過建立測試集和評估函式,我們實現了批次驗證,確保所有測試項目的有效性。
Thumbnail
2023/07/21
本篇文章探討如何整合大型語言模型與外部程式與資源來生成回應訊息。我們使用OpenAI的Moderation API來確認內容的合適性,並使用新的提示來評估是否真正解答了使用者的疑問。整體流程的匯整讓我們一覽全貌。我們將在下一篇文章中分享更多有關回應訊息評估的細節。
Thumbnail
2023/07/21
本篇文章探討如何整合大型語言模型與外部程式與資源來生成回應訊息。我們使用OpenAI的Moderation API來確認內容的合適性,並使用新的提示來評估是否真正解答了使用者的疑問。整體流程的匯整讓我們一覽全貌。我們將在下一篇文章中分享更多有關回應訊息評估的細節。
Thumbnail
2023/07/14
本文詳述如何將大型語言模型(LLM)與程式碼深度整合,運用於3C賣場的客服助理示例,透過接收並解析使用者訊息,提取產品資訊,並與後端產品資料庫整合。接著,將整合資訊回傳給LLM生成最終回應訊息。同時,也探討了中英文理解差距及解決方法,並展示如何利用Python模擬資料庫提取詳細資訊。
Thumbnail
2023/07/14
本文詳述如何將大型語言模型(LLM)與程式碼深度整合,運用於3C賣場的客服助理示例,透過接收並解析使用者訊息,提取產品資訊,並與後端產品資料庫整合。接著,將整合資訊回傳給LLM生成最終回應訊息。同時,也探討了中英文理解差距及解決方法,並展示如何利用Python模擬資料庫提取詳細資訊。
Thumbnail
看更多
你可能也想看
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
智慧型手機流行至今,已有十年以上的時間,而照相功能,一直是各種手機評比時的重點。 (事實上,有多少人會天天需要拍出一億畫素的照片?) 面對通訊軟體中,朋友們發來此起彼落的美照,老安通常都是說:「很美」、「好看」、「太強了」…..充分展現了詞彙貧窮的窘境。 不過現在可以利用chatGPT4o
Thumbnail
智慧型手機流行至今,已有十年以上的時間,而照相功能,一直是各種手機評比時的重點。 (事實上,有多少人會天天需要拍出一億畫素的照片?) 面對通訊軟體中,朋友們發來此起彼落的美照,老安通常都是說:「很美」、「好看」、「太強了」…..充分展現了詞彙貧窮的窘境。 不過現在可以利用chatGPT4o
Thumbnail
為了充分發揮AI的潛力,我們必須深入瞭解其運作模式和思考邏輯,並學會與AI對話的技巧。《ChatGPT提問課,做個懂AI的高效工作者》這本書提供了豐富的實例,讓讀者更容易學會如何提出精準的問題,並享有提問課程的閱讀回饋。這對於想成為懂AI的高效工作者的人來說,是一本值得一看的書。
Thumbnail
為了充分發揮AI的潛力,我們必須深入瞭解其運作模式和思考邏輯,並學會與AI對話的技巧。《ChatGPT提問課,做個懂AI的高效工作者》這本書提供了豐富的實例,讓讀者更容易學會如何提出精準的問題,並享有提問課程的閱讀回饋。這對於想成為懂AI的高效工作者的人來說,是一本值得一看的書。
Thumbnail
本篇文章深入探討了如何評估模糊訊息在對話系統開發中的它的品質驗證方式,並且使用了類似Rubic評分準則的方法來評估回覆訊息。也介紹了專家回覆與實際回覆比較的評估方式。文章最終目的希望能讓讀者具備開發自己的對話機器人的知識。
Thumbnail
本篇文章深入探討了如何評估模糊訊息在對話系統開發中的它的品質驗證方式,並且使用了類似Rubic評分準則的方法來評估回覆訊息。也介紹了專家回覆與實際回覆比較的評估方式。文章最終目的希望能讓讀者具備開發自己的對話機器人的知識。
Thumbnail
大家好! 前幾天,ChatGPT 的手機版正式發布了,在谷歌的商店都可以找得到,免費就可以下載了,我今天,將要根據實際使用的情況測評他的功能,還有提供一些不同的內容。
Thumbnail
大家好! 前幾天,ChatGPT 的手機版正式發布了,在谷歌的商店都可以找得到,免費就可以下載了,我今天,將要根據實際使用的情況測評他的功能,還有提供一些不同的內容。
Thumbnail
此文針對對話系統的持續開發和改進過程進行詳細解說,尤其在提示訊息的設計與驗證方面。以大賣場的銷售助理為例,我們設計了提示訊息,進行多次測試與調整,確保回應結果符合預期。透過建立測試集和評估函式,我們實現了批次驗證,確保所有測試項目的有效性。
Thumbnail
此文針對對話系統的持續開發和改進過程進行詳細解說,尤其在提示訊息的設計與驗證方面。以大賣場的銷售助理為例,我們設計了提示訊息,進行多次測試與調整,確保回應結果符合預期。透過建立測試集和評估函式,我們實現了批次驗證,確保所有測試項目的有效性。
Thumbnail
本篇文章探討如何整合大型語言模型與外部程式與資源來生成回應訊息。我們使用OpenAI的Moderation API來確認內容的合適性,並使用新的提示來評估是否真正解答了使用者的疑問。整體流程的匯整讓我們一覽全貌。我們將在下一篇文章中分享更多有關回應訊息評估的細節。
Thumbnail
本篇文章探討如何整合大型語言模型與外部程式與資源來生成回應訊息。我們使用OpenAI的Moderation API來確認內容的合適性,並使用新的提示來評估是否真正解答了使用者的疑問。整體流程的匯整讓我們一覽全貌。我們將在下一篇文章中分享更多有關回應訊息評估的細節。
Thumbnail
本文詳述如何將大型語言模型(LLM)與程式碼深度整合,運用於3C賣場的客服助理示例,透過接收並解析使用者訊息,提取產品資訊,並與後端產品資料庫整合。接著,將整合資訊回傳給LLM生成最終回應訊息。同時,也探討了中英文理解差距及解決方法,並展示如何利用Python模擬資料庫提取詳細資訊。
Thumbnail
本文詳述如何將大型語言模型(LLM)與程式碼深度整合,運用於3C賣場的客服助理示例,透過接收並解析使用者訊息,提取產品資訊,並與後端產品資料庫整合。接著,將整合資訊回傳給LLM生成最終回應訊息。同時,也探討了中英文理解差距及解決方法,並展示如何利用Python模擬資料庫提取詳細資訊。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News