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

更新於 2023/08/04閱讀時間約 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(實際回答是專家回答的超集。),
我們模擬的資料,的確真實回覆的訊息量比我們設定的專家回覆還要多,您可以再試試看幾個案例。
以上是我們這個系列的所有內容,相信大家到現在已經有足夠的知識,可以開始開發自己的對話系統(對話機器人)了,開工!
即將進入廣告,捲動後可繼續閱讀
為什麼會看到廣告
avatar-img
18會員
19內容數
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Ted Chen的沙龍 的其他內容
此文針對對話系統的持續開發和改進過程進行詳細解說,尤其在提示訊息的設計與驗證方面。以大賣場的銷售助理為例,我們設計了提示訊息,進行多次測試與調整,確保回應結果符合預期。透過建立測試集和評估函式,我們實現了批次驗證,確保所有測試項目的有效性。
本篇文章探討如何整合大型語言模型與外部程式與資源來生成回應訊息。我們使用OpenAI的Moderation API來確認內容的合適性,並使用新的提示來評估是否真正解答了使用者的疑問。整體流程的匯整讓我們一覽全貌。我們將在下一篇文章中分享更多有關回應訊息評估的細節。
本文詳述如何將大型語言模型(LLM)與程式碼深度整合,運用於3C賣場的客服助理示例,透過接收並解析使用者訊息,提取產品資訊,並與後端產品資料庫整合。接著,將整合資訊回傳給LLM生成最終回應訊息。同時,也探討了中英文理解差距及解決方法,並展示如何利用Python模擬資料庫提取詳細資訊。
這篇文章詳細說明了「思考鏈」的概念以及如何應用在設計語言模型客服助理的過程中。使用分隔號和角括弧以設定步驟、區隔訊息和提供填充空間,這種方式可使語言模型更有效地處理和回應使用者的諮詢,包括在產品清單中找不到的諮詢。
這堂課闡述開發ChatGPT所需的重要概念和工具。涵蓋語言模型如何處理文字(Token),LLM的兩種類型(Base LLM和Instruction tuned LLM),系統、助手和用戶的角色定義。並介紹以Prompting簡化AI開發流程,且透過實戰教學說明如何進行分類和預防注入提示
本文探討大資料對模型的影響。研究指出,大資料量對模型的語法和世界知識理解有顯著影響。固定運算資源下,DeepMind發現適應參數數量更重要,這使模型Chinchilla以較小規模但更多訓練資料,在實際任務中優於Gopher模型。這說明增大模型的規模已不具有太大意義,應增加訓練資料。
此文針對對話系統的持續開發和改進過程進行詳細解說,尤其在提示訊息的設計與驗證方面。以大賣場的銷售助理為例,我們設計了提示訊息,進行多次測試與調整,確保回應結果符合預期。透過建立測試集和評估函式,我們實現了批次驗證,確保所有測試項目的有效性。
本篇文章探討如何整合大型語言模型與外部程式與資源來生成回應訊息。我們使用OpenAI的Moderation API來確認內容的合適性,並使用新的提示來評估是否真正解答了使用者的疑問。整體流程的匯整讓我們一覽全貌。我們將在下一篇文章中分享更多有關回應訊息評估的細節。
本文詳述如何將大型語言模型(LLM)與程式碼深度整合,運用於3C賣場的客服助理示例,透過接收並解析使用者訊息,提取產品資訊,並與後端產品資料庫整合。接著,將整合資訊回傳給LLM生成最終回應訊息。同時,也探討了中英文理解差距及解決方法,並展示如何利用Python模擬資料庫提取詳細資訊。
這篇文章詳細說明了「思考鏈」的概念以及如何應用在設計語言模型客服助理的過程中。使用分隔號和角括弧以設定步驟、區隔訊息和提供填充空間,這種方式可使語言模型更有效地處理和回應使用者的諮詢,包括在產品清單中找不到的諮詢。
這堂課闡述開發ChatGPT所需的重要概念和工具。涵蓋語言模型如何處理文字(Token),LLM的兩種類型(Base LLM和Instruction tuned LLM),系統、助手和用戶的角色定義。並介紹以Prompting簡化AI開發流程,且透過實戰教學說明如何進行分類和預防注入提示
本文探討大資料對模型的影響。研究指出,大資料量對模型的語法和世界知識理解有顯著影響。固定運算資源下,DeepMind發現適應參數數量更重要,這使模型Chinchilla以較小規模但更多訓練資料,在實際任務中優於Gopher模型。這說明增大模型的規模已不具有太大意義,應增加訓練資料。
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
大家好,今天我精選了一系列服務,讓您可以免費使用廣受好評的神經網絡“ChatGPT 4”(而不是每月 20 美元),無需註冊、使用 VPN 和其他注意事項。 1.“ForeFront AI” ForeFront AI 是一項提供免費訪問“GPT-4”模型的服務。 要使用它,只需註冊,選擇模型“GPT
Thumbnail
自從 ChatGPT 發布以來,互聯網上充斥著關於如何使用 AI 或 ChatGPT 賺錢的文章和視頻。 最近,我決定自己嘗試使用 ChatGPT 賺錢,並成功賺到了我的第一筆 25 美元。 就在幾天前,我因在 ChatGPT 的幫助下寫有趣的笑話而又收到了 25 美元。 如果您有興趣使用 Chat
這篇教學文章將介紹如何使用 OpenAI 的 GPT-3 模型來建立一個簡單的聊天機器人。
Thumbnail
那天腦動大開,於是來試試用chatGPT預估下一期樂透開獎號碼。 用數學邏輯訓練你的AI,我幫大家做這個實驗,用10組Data查看chatGPT預估數據的命中律是多少? 這項科技有什麼不能做的嗎?我的意思是,它都已經在國際象棋上打敗了人類,駕駛汽車,預告未來趨勢,現在它讓我們變得非常富有!(線上有一
Thumbnail
我自己是使用微軟的SQLIT軟體 這個軟體的操作上 沒有辦法直接用滑鼠點選或是拖拉的方式來看到你想看到的表格 都是要下指令的像是要看data.sqlite中的user這個table我就必須下 才能把table調閱出來看 那做為一個python三年工作經驗的工程師通常我不會直接在SQLIT軟體 裡面下
ChatGPT 可以幫你翻譯,我認為品質比 Google / DeepL / Microsoft 都更好。但每次能翻譯的字數有限,也沒有全頁翻譯的功能,對小說閱讀者基本上是無用的。但 ChatGPT API 發布之後,情況有巨大的改變。這篇文章將會介紹我現在閱讀日文小說的步驟以及範例。
Thumbnail
使用三步驟便能讓ChatGPT幫你創作小說,還能跨平台接力使用,不僅方便,又很輕鬆愉快。但對於敏感內容,或是字數太多的內容,ChatGPT便處理不來。使用ChatGPT與Midjourney時,偶爾會讓我感受到「腦子裡沒想法,工具再強也沒有用」 的挫折
Thumbnail
身為一個實在不太怕被AI搶飯碗的專業文案(我覺得它寫的成果對創意廣告文案來說,我直接寫出完稿,比設法詠唱問題更快,但企劃、論述、增長改短這些工作上面,我則已經在使用它來降低成本了),忽然很好奇我到底有哪些事情可以請它幫忙,哪些事情還是自己動手比較又快又好? 今天我就
Thumbnail
ChatGPT是一個可以幫助您利用自然語言處理和機器學習技術來開發、部署和維護聊天機器人的平台。它可以讓您使用自己的資料和模型,ChatGPT可以幫助你在部落格上賺取收入,讓您可以更輕鬆地寫出有價值的文章。 ChatGPT可以根據你給定的概念或主題,提供詞彙和提示,幫助你更快速地開發優秀的內容。此
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
大家好,今天我精選了一系列服務,讓您可以免費使用廣受好評的神經網絡“ChatGPT 4”(而不是每月 20 美元),無需註冊、使用 VPN 和其他注意事項。 1.“ForeFront AI” ForeFront AI 是一項提供免費訪問“GPT-4”模型的服務。 要使用它,只需註冊,選擇模型“GPT
Thumbnail
自從 ChatGPT 發布以來,互聯網上充斥著關於如何使用 AI 或 ChatGPT 賺錢的文章和視頻。 最近,我決定自己嘗試使用 ChatGPT 賺錢,並成功賺到了我的第一筆 25 美元。 就在幾天前,我因在 ChatGPT 的幫助下寫有趣的笑話而又收到了 25 美元。 如果您有興趣使用 Chat
這篇教學文章將介紹如何使用 OpenAI 的 GPT-3 模型來建立一個簡單的聊天機器人。
Thumbnail
那天腦動大開,於是來試試用chatGPT預估下一期樂透開獎號碼。 用數學邏輯訓練你的AI,我幫大家做這個實驗,用10組Data查看chatGPT預估數據的命中律是多少? 這項科技有什麼不能做的嗎?我的意思是,它都已經在國際象棋上打敗了人類,駕駛汽車,預告未來趨勢,現在它讓我們變得非常富有!(線上有一
Thumbnail
我自己是使用微軟的SQLIT軟體 這個軟體的操作上 沒有辦法直接用滑鼠點選或是拖拉的方式來看到你想看到的表格 都是要下指令的像是要看data.sqlite中的user這個table我就必須下 才能把table調閱出來看 那做為一個python三年工作經驗的工程師通常我不會直接在SQLIT軟體 裡面下
ChatGPT 可以幫你翻譯,我認為品質比 Google / DeepL / Microsoft 都更好。但每次能翻譯的字數有限,也沒有全頁翻譯的功能,對小說閱讀者基本上是無用的。但 ChatGPT API 發布之後,情況有巨大的改變。這篇文章將會介紹我現在閱讀日文小說的步驟以及範例。
Thumbnail
使用三步驟便能讓ChatGPT幫你創作小說,還能跨平台接力使用,不僅方便,又很輕鬆愉快。但對於敏感內容,或是字數太多的內容,ChatGPT便處理不來。使用ChatGPT與Midjourney時,偶爾會讓我感受到「腦子裡沒想法,工具再強也沒有用」 的挫折
Thumbnail
身為一個實在不太怕被AI搶飯碗的專業文案(我覺得它寫的成果對創意廣告文案來說,我直接寫出完稿,比設法詠唱問題更快,但企劃、論述、增長改短這些工作上面,我則已經在使用它來降低成本了),忽然很好奇我到底有哪些事情可以請它幫忙,哪些事情還是自己動手比較又快又好? 今天我就
Thumbnail
ChatGPT是一個可以幫助您利用自然語言處理和機器學習技術來開發、部署和維護聊天機器人的平台。它可以讓您使用自己的資料和模型,ChatGPT可以幫助你在部落格上賺取收入,讓您可以更輕鬆地寫出有價值的文章。 ChatGPT可以根據你給定的概念或主題,提供詞彙和提示,幫助你更快速地開發優秀的內容。此