主頁 >  其他 > 【翻譯】GPT最佳實踐

【翻譯】GPT最佳實踐

2023-06-29 08:31:02 其他

原文章地址:https://platform.openai.com/docs/guides/gpt-best-practices/strategy-test-changes-systematically

本指南分享了從GPT中獲得更好結果的戰略和策略,這里描述的方法有時可以結合起來使用,以獲得更大的效果,我們鼓勵大家通過實驗來找到最適合自己的方法,

這里演示的一些例子目前只適用于我們能力最強的模型,gpt-4,如果你還沒有機會使用gpt-4,可以考慮加入等待名單,一般來說,如果你發現一個GPT模型在某項任務中失敗了,而有一個能力更強的模型可用,通常值得用能力更強的模型再試一次,

獲得更好結果的六種策略

寫清楚說明

GPT不能讀懂你的想法,如果產出太長,要求簡短的答復,如果產出太簡單,就要求專家級的寫作,如果你不喜歡這種格式,就展示你希望看到的格式,GPT越是不需要猜測你想要什么,你就越有可能得到它,

方法:

  1. 在你的詢問中包括細節,以獲得更多相關的答案
  2. 要求模型扮演一個角色
  3. 使用分隔符來清楚地表明輸入的不同部分
  4. 具體說明完成一項任務所需的步驟
  5. 提供例子
  6. 指定所需的輸出長度

提供參考文本

GPT可以自信地編造虛假的答案,特別是當被問及深奧的話題或參考和URL時,就像一張筆記可以幫助學生在考試中做得更好一樣,為GPT提供參考文本可以幫助他們在回答問題時減少捏造,

方法:

  1. 指導模型使用參考文本進行回答
  2. 指導模型使用參考文本中的引文進行回答

將復雜的任務拆分為更簡單的子任務

正如在軟體工程中,將一個復雜的系統分解成一系列的模塊化組件是一個很好的做法,提交給GPT的任務也是如此,復雜的任務往往比簡單的任務有更高的錯誤率,此外,復雜的任務通常可以被重新定義為較簡單的任務的作業流程,其中早期任務的輸出被用來構建后面任務的輸入,

方法:

  1. 使用意圖分類來確定與用戶查詢最相關的指令
  2. 對于需要很長對話的對話應用,總結或過濾以前的對話
  3. 對長的檔案進行逐條總結,并遞回地構建一個完整的總結

給GPT時間“思考”

如果讓你用17乘以28,你可能不會馬上知道,但還是可以通過時間計算出來,同樣地,當GPT試圖立即回答,而不是花時間來計算答案時,他們會犯更多的推理錯誤,在回答之前要求有一連串的推理,可以幫助GPT們更可靠地推理出正確的答案,

方法:

  1. 指示模型在匆忙得出結論之前,先找出自己的解決方案
  2. 使用內心獨白或一連串的詢問來隱藏模型的推理程序
  3. 詢問模型在之前的程序中是否遺漏了什么

使用外部工具

通過向GPT提供其他工具的輸出來彌補GPT的弱點,例如,一個文本檢索系統可以告訴GPT有關的檔案,一個代碼執行引擎可以幫助GPT進行數學運算和運行代碼,如果一項任務可以由一個工具而不是GPT更可靠或更有效地完成,那么就把它卸載掉,以獲得兩者的優點,

方法:

  1. 使用基于嵌入的搜索來實作高效的知識檢索
  2. 使用代碼執行來進行更精確的計算或呼叫外部API

系統地測驗變更

如果你能測量它,提高性能就更容易了,在某些情況下,對一個提示的修改會在一些孤立的例子上實作更好的性能,但在更有代表性的例子上會導致更差的整體性能,因此,為了確定一個變化對性能是積極的,可能需要定義一個全面的測驗套件(也稱為 "評估"),

方法:

  1. 參斬訓金標準答案評估模型輸出

方法

上面列出的每個策略都可以用具體的戰術來實體化,這些戰術是為了提供一些可以嘗試的想法,它們決不是完全全面的,你應該自由地嘗試這里沒有代表的創造性想法,

策略:撰寫清晰的說明

方法:在你的詢問中包括細節,以獲得更多相關的答案

為了得到高度相關的回應,請確保請求提供任何重要的細節或背景關系,否則,你就得讓模型來猜測你的意思了,

糟糕 更棒
如何在Excel中添加數字? 如何在Excel中將一行美元金額相加?我想對一整排行自動執行此操作,所有的總計都在右邊的一列中,名為“總計”,
誰是總統? 誰是2021年的墨西哥總統,選舉頻率有多高?
撰寫代碼來計算斐波那契數列, 撰寫一個TypeScript函式來有效計算斐波那契數列,大量注釋代碼以解釋每一部分的作用以及為什么這樣寫,
對會議記錄進行總結, 將會議記錄總結成一段話,然后,寫一份發言者和他們每個人的關鍵觀點的標記清單,最后,列出發言者建議的下一步行動或行動專案(如果有的話),
方法:要求模型扮演一個角色

系統訊息可用于指定模型在回復中使用的角色,

角色 Prompt
SYSTEM 當我請求幫助寫東西時,你會回復一份檔案,其中每段至少包含一個笑話或有趣的評論,
USER 寫一封感謝信給我的鋼制螺栓供應商,感謝他在短時間內準時交貨,這使我們有可能交付一份重要的訂單,
方法:使用分隔符清楚地指示輸入的不同部分

三引號、XML標記、節標題等分隔符可以幫助劃分要區別對待的文本節,

角色 Prompt
USER 用一個俳句來概括由三引號劃定的文字,
""" 此處放置需要概括的文字 """
角色 Prompt
SYSTEM 您將獲得一對關于同一主題的文章(用XML標記分隔),首先總結每一篇文章的論點,然后指出他們中哪一個更有說服力,并解釋原因,
USER <article> 此處放置第一篇文文章 </article>
<article> 此處放置另外一篇文文章 </article>
角色 Prompt
SYSTEM 你將得到一份論文摘要和一個建議的標題,論文標題應該讓讀者對論文的主題有一個很好的概念,但也應該是醒目的,如果標題不符合這些標準,請提出5個備選方案,
USER 摘要:在此插入摘要
標題:在此插入標題

對于像這樣簡單的任務,使用分隔符可能不會對輸出質量產生影響,然而,任務越復雜,消除任務細節的歧義就越重要,不要讓GPT努力去理解你對他們的要求,

方法:指定完成任務所需的步驟

某些任務最好指定為一系列步驟,明確地寫出步驟可以使模型更容易地遵循它們,

角色 Prompt
SYSTEM 使用以下分步說明對用戶輸入做出回應,
步驟1:用戶將為您提供三個引號中的文本,用一個前綴寫著“總結:”的句子來總結這篇文章,
步驟2:將步驟1中的摘要翻譯成西班牙語,前綴為“翻譯:”,
USER """此處放置需要的文字"""
方法:提供示例

提供適用于所有例子的一般指示,通常比通過例子演示任務的所有變化更有效,但在某些情況下,提供例子可能更容易,例如,如果你打算讓模型復制一種難以明確描述的回應用戶查詢的特定風格,這就是所謂的 "幾句話 "提示,

角色 Prompt
SYSTEM 以一致的風格回答,
USER 教我如何忍耐
ASSISTANT 雕刻最深山谷的河流來自一個溫和的泉水;
最偉大的交響樂源于一個音符;
最復雜的掛毯是從一根孤零零的線開始的,
USER 教我有關海洋的知識,
方法:指定所需的輸出長度

您可以要求模型生成具有給定目標長度的輸出,目標輸出長度可以根據單詞、句子、段落、專案符號等的數量來指定,然而,請注意,指示模型生成特定數量的單詞并不具有高精度,該模型可以更可靠地生成具有特定數量的段落或專案符號的輸出,

角色 Prompt
USER 用大約50個單詞總結由三個引號分隔的文本,
""" 在此處插入文本 """
USER 用兩段話概括由三個引號分隔的文本,
""" 在此處插入文本 """
USER 用3個要點概括由三個引號分隔的文本,
""" 在此處插入文本 """

策略:提供參考文本

方法:指導模型使用參考文本進行回答

如果我們可以為模型提供與當前查詢相關的可信資訊,那么我們可以指示模型使用所提供的資訊來組成其答案,

角色 Prompt
SYSTEM 使用所提供的由三個引號分隔的文章來回答問題,如果在文章中找不到答案,就寫 "我找不到答案",
USER <插入文章,每個文章由三個引號分隔>
問題:<在此處插入問題>

鑒于GPT的背景關系視窗有限,為了應用這種策略,我們需要某種方式來動態查找與所問問題相關的資訊,Embeddings可以用來實作高效的知識檢索,有關如何實作這一點的更多詳細資訊,請參閱策略“使用基于嵌入的搜索來實作高效的知識檢索”,

方法:指導模型用參考文本中的引文進行回答

如果輸入中已經用相關知識進行了補充,那么可以直接要求模型通過參考所提供檔案中的段落來在其答案中添加參考,請注意,輸出中的參考可以通過所提供檔案中的字串匹配以編程方式進行驗證,

角色 Prompt
SYSTEM 您將收到一份由三個引號和一個問題分隔的檔案,你的任務是只使用提供的檔案回答問題,并參考用于回答問題的檔案的段落,如果檔案中沒有包含回答這個問題所需的資訊,那么只需寫下:“資訊不足,”如果提供了問題的答案,則必須用引文進行注釋,使用以下格式參考相關段落({“引文”:…}),
USER """<在此處插入檔案>"""
Question: <在此處插入問題>

策略:將復雜的任務拆分為更簡單的子任務

方法:使用意圖分類來確定與用戶查詢最相關的指令

對于需要大量獨立指令集來處理不同情況的任務,首先對查詢型別進行分類并使用該分類來確定需要哪些指令可能是有益的,這可以通過定義與處理給定類別中的任務相關的固定類別和硬編碼指令來實作,這個程序也可以遞回地應用于將任務分解為一系列階段,這種方法的優點是,每個查詢將僅包含執行任務的下一階段所需的那些指令,與使用單個查詢來執行整個任務相比,這些指令可以導致更低的錯誤率,這也可以降低成本,因為更大的提示運行成本更高(請參閱定價資訊),
例如,假設對于客戶服務應用程式,查詢可以有效地分類如下:

角色 Prompt
SYSTEM 您將收到客戶服務查詢,將每個查詢分類為主要類別和次要類別,以json格式提供帶有關鍵字的輸出:primary和secondary,
主要類別:帳單、技術支持、帳戶管理或一般查詢,
計費次要類別:
- 取消訂閱或升級
- 添加付款方式
- 收費說明
- 對指控提出異議
技術支持二級分類
- 故障排除
- 設備兼容性
- 軟體更新
帳戶管理次要類別
- 密碼重置
- 更新個人資訊
- 關閉帳戶
- 賬戶安全
一般查詢次要類別
- 產品資訊
- 定價
- 反饋
- 與人交談
USER 我需要讓我的互聯網重新運轉起來,

基于客戶查詢的分類,可以向GPT模型提供一組更具體的指令,以處理接下來的步驟,例如,假設客戶需要“故障排除”方面的幫助,

角色 Prompt
SYSTEM 將向您提供需要在技術支持環境中進行故障排除的客戶服務咨詢,通過以下方式幫助用戶:
- 請他們檢查所有連接路由器的電纜是否已連接,請注意,隨著時間的推移,電纜松動是很常見的,
- 如果所有電纜都已連接,但問題仍然存在,請詢問他們使用的是哪種路由器型號
- 現在,您將建議他們如何重新啟動設備:
-- 如果型號為MTD-327J,建議他們按下紅色按鈕并保持5秒鐘,然后等待5分鐘再測驗連接,
-- 如果型號是MTD-327S,建議他們拔下插頭并重新安裝,然后等待5分鐘再測驗連接,
- 如果客戶的問題在重新啟動設備并等待5分鐘后仍然存在,請通過輸出{“請求的IT支持”}將他們連接到IT支持,
- 如果用戶開始詢問與此主題無關的問題,請確認他們是否希望結束當前關于故障排除的聊天,并根據以下方案對他們的請求進行分類:

您將收到客戶服務查詢,將每個查詢分類為主要類別和次要類別,以json格式提供帶有關鍵字的輸出:primary和secondary,
主要類別:帳單、技術支持、帳戶管理或一般查詢,
計費次要類別:
- 取消訂閱或升級
- 添加付款方式
- 收費說明
- 對指控提出異議
技術支持二級分類
- 故障排除
- 設備兼容性
- 軟體更新
帳戶管理次要類別
- 密碼重置
- 更新個人資訊
- 關閉帳戶
- 賬戶安全
一般查詢次要類別
- 產品資訊
- 定價
- 反饋
- 與人交談
USER 我需要讓我的互聯網重新運轉起來,

請注意,該模型已被指示發出特殊的字串,以指示對話的狀態何時改變,這使我們能夠把我們的系統變成一個狀態機,狀態決定了哪些指令被注入,通過跟蹤狀態,哪些指令在該狀態下是相關的,以及允許從該狀態下進行哪些狀態轉換,我們可以在用戶體驗周圍設定護欄,這在結構化程度較低的方法中是難以實作的,

方法:對于需要很長對話的對話應用,總結或過濾以前的對話

由于GPT具有固定的背景關系長度,用戶和助手之間的對話(其中整個對話都包含在背景關系視窗中)不能無限期地繼續,
這個問題有各種各樣的解決方法,其中之一就是總結之前的談話,一旦輸入的大小達到預定的閾值長度,這可以觸發對會話的一部分進行總結的查詢,并且先前會話的總結可以被包括作為系統訊息的一部分,或者,可以在整個會話的后臺異步總結先前的會話,
另一種解決方案是動態選擇對話中與當前查詢最相關的先前部分,請參閱策略“使用基于嵌入的搜索來實作高效的知識檢索”,

方法:對長的檔案進行逐條總結,并遞回地構建一個完整的總結

由于GPT具有固定的背景關系長度,因此不能在單個查詢中使用GPT來匯總超過背景關系長度減去生成的摘要長度的文本,
要總結一個很長的檔案,例如一本書,我們可以使用一系列查詢來總結檔案的每個部分,章節摘要可以連接和匯總,從而生成摘要的摘要,這個程序可以遞回地進行,直到整個檔案被總結出來,如果有必要使用有關前幾節的資訊來理解后幾節,那么另一個有用的技巧是在總結書中任何給定點之前的文本時,包括對該點內容的連續摘要,OpenAI使用GPT-3的變體在之前的研究中已經研究了這種總結書籍的程式的有效性,

策略:給GPT時間“思考”

方法:指示模型在匆忙得出結論之前,先找出自己的解決方案

有時,當我們明確指示模型在得出結論之前從第一原理進行推理時,我們會得到更好的結果,例如,假設我們想要一個模型來評估一個學生對數學問題的解決方案,最明顯的方法是簡單地問模型,學生的解決方案是否正確,

角色 Prompt
SYSTEM 確定學生的解決方案是否正確,
USER 問題陳述:我正在建造一個太陽能裝置,我需要幫助解決財務問題,
- 土地價格為100美元/平方英尺
- 我可以花250美元/平方英尺買太陽能電池板
- 我協商了一份維護合同,每年將花費10萬美元,每平方英尺額外花費10美元
作為平方英尺數量的函式,運營第一年的總成本是多少,
學生解決方案:設x為裝置的大小,單位為平方英尺,
1.土地成本:100x
2.太陽能電池板成本:250x
3.維修費用:100000+100x
總成本:100x+250x+100000+100x=450x+100000
ASSISTANT 這個學生的答案是正確的,

但是學生的解決方案實際上是不正確的!我們可以通過提示模型首先生成自己的解決方案來讓模型成功地注意到這一點,

角色 Prompt
SYSTEM 首先找出你自己解決這個問題的辦法,然后將你的解決方案與學生的解決方案進行比較,并評估學生的解決方法是否正確,在你自己做了題之前,不要決定學生的答案是否正確,
USER 問題陳述:我正在建造一個太陽能裝置,我需要幫助解決財務問題,
- 土地價格為100美元/平方英尺
- 我可以花250美元/平方英尺買太陽能電池板
- 我協商了一份維護合同,每年將花費10萬美元,每平方英尺額外花費10美元
作為平方英尺數量的函式,運營第一年的總成本是多少,
學生解決方案:設x為裝置的大小,單位為平方英尺,
1.土地成本:100x
2.太陽能電池板成本:250x
3.維修費用:100000+100x
總成本:100x+250x+100000+100x=450x+100000
ASSISTANT 設x是安裝的尺寸,單位是平方英尺,
1. 土地成本:100x
2. 太陽能電池板成本:250x
3. 維護費用:100,000 + 10x
總成本:100x + 250x + 100,000 + 10x = 360x + 100,000
學生的解決方案不正確,他們在計算維護成本時犯了一個錯誤,用了100倍而不是10倍,運營第一年的正確總成本為360x+100000,
方法:使用內心獨白或一連串的詢問來隱藏模型的推理程序

前面的策略表明,在回答特定問題之前,模型對問題進行詳細推理有時很重要,對于某些應用程式,模型用于得出最終答案的推理程序不適合與用戶共享,例如,在輔導應用程式中,我們可能希望鼓勵學生自己找出答案,但模型對學生解決方案的推理程序可能會向學生揭示答案,
內心獨白是一種可以用來緩解這種情況的策略,內心獨白的想法是指示模型將原本要對用戶隱藏的輸出部分放入結構化格式中,使決議它們變得容易,然后,在向用戶呈現輸出之前,對輸出進行決議,并且僅使輸出的一部分可見,

角色 Prompt
SYSTEM 按照以下步驟回答用戶查詢,
步驟1-首先找出你自己的問題解決方案,不要依賴學生的解決方案,因為它可能是不正確的,將您為此步驟所做的所有作業用三個引號(“”)括起來,
第2步-將你的解決方案與學生的解決方案進行比較,并評估學生的解決方法是否正確,將您為此步驟所做的所有作業用三個引號(“”)括起來,
第3步-如果學生犯了錯誤,確定你可以在不泄露答案的情況下給學生什么提示,將您為此步驟所做的所有作業用三個引號(“”)括起來,
第4步-如果學生犯了錯誤,向學生提供上一步的提示(三引號之外),不要寫“步驟4-…”,而是寫“提示:”,
USER 問題陳述:<插入問題陳述>
學生解決方案:<插入學生解決方案>

或者,這可以通過一系列查詢來實作,在這些查詢中,除最后一個查詢外,所有查詢的輸出都對最終用戶隱藏,
首先,我們可以要求模型自己解決問題,由于這個初始查詢不需要學生的解決方案,因此可以省略它,這提供了額外的優勢,即模型的解決方案不會因學生嘗試的解決方案而產生偏差,

角色 Prompt
USER <插入問題陳述>
ASSISTANT xxxxxxxxxxxxx(模型生成的解決方案)

接下來,我們可以讓模型使用所有可用的資訊來評估學生的解決方案是否正確,

角色 Prompt
SYSTEM 將你的解決方案與學生的解決方案進行比較,并評估學生的解決方法是否正確,
USER 問題陳述:“”“<插入問題陳述>”“”
你的解決方案:“”“<插入模型生成的解決方案>”“”
學生解決方案:“”“<插入學生解決方案>”“”

最后,我們可以讓模型使用自己的分析,以一個樂于助人的導師的身份構建一個回復,

角色 Prompt
SYSTEM 你是一個數學輔導員,如果學生犯了錯誤,以不透露答案的方式向學生提供提示,如果學生沒有犯錯,只需給他們一個鼓勵性的評論,
USER 問題陳述:“”“<插入問題陳述>”“”
你的解決方案:“”“<插入模型生成的解決方案>”“”
學生解決方案:“”“<插入學生解決方案>”“”
分析:“”“<插入上一步中生成的模型分析>”“”
方法:詢問模型在之前的程序中是否遺漏了什么

假設我們正在使用一個模型來列出與某個特定問題相關的來源的摘錄,在列出每個摘錄之后,模型需要確定它是否應該開始寫另一個摘錄,或者是否應該停止,如果源檔案很大,模型通常會過早停止,而無法列出所有相關的節選,在這種情況下,通常可以通過提示模型進行后續查詢,以找到它在前幾次查詢中遺漏的任何節選內容,從而獲得更好的性能,

角色 Prompt
SYSTEM 你將得到一份由三個引號分隔的檔案,你的任務是選擇與以下問題有關的節選: "在人工智能的歷史上發生了哪些重大的范式轉變,"
確保節選內容包含解釋它們所需的所有相關背景--換句話說,不要提取缺少重要背景的小片段,提供JSON格式的輸出,如下所示:
[{"excerpt": "..."}, ... {"excerpt": "..."}]
USER """<在此處插入檔案>"""
ASSISTANT [{"excerpt": "一段摘錄"}, ... {"excerpt": "另一段摘錄"}]
USER 是否有更多相關的摘錄?注意不要重復摘錄,還要確保摘錄的內容包含解釋它們所需的所有相關背景--換句話說,不要摘取缺少重要背景的小片段,

使用外部工具

方法:使用基于嵌入的搜索來實作高效的知識檢索

如果作為輸入的一部分提供,模型可以利用外部資訊源,這可以幫助模型生成更知情和最新的回應,例如,如果用戶詢問關于特定電影的問題,則將關于電影的高質量資訊(例如,演員、導演等)添加到模型的輸入中可能是有用的,嵌入可以用于實作高效的知識檢索,從而可以在運行時將相關資訊動態添加到模型輸入中,
文本嵌入是一種可以測量文本字串之間相關性的向量,相似或相關的字串將比不相關的字串更緊密地連接在一起,這一事實,加上快速矢量搜索演算法的存在,意味著嵌入可以用于實作高效的知識檢索,特別地,文本語料庫可以被分成塊,并且每個塊都可以被嵌入和存盤,然后,可以嵌入給定的查詢,并且可以執行向量搜索以從語料庫中找到與查詢最相關的嵌入的文本塊(即,在嵌入空間中最接近的文本塊),
示例實作可以在OpenAI Cookbook中找到,請參閱策略“指導模型使用檢索到的知識來回答查詢”,以了解如何使用知識檢索來最大限度地減少模型編造錯誤事實的可能性,

方法:使用代碼執行來進行更精確的計算或呼叫外部API

不能依靠GPT自己準確地進行算識訓長時間的計算,在需要的情況下,可以指示一個模型撰寫和運行代碼,而不是自己進行計算,特別是,一個模型可以被指示把要運行的代碼放到一個指定的格式中,如三重回溯,在產生輸出后,代碼可以被提取并運行,最后,如果有必要,代碼執行引擎(即Python解釋器)的輸出可以提供給模型,作為下一次查詢的輸入,

角色 Prompt
SYSTEM 你可以通過將Python代碼用三個反斜線括起來來撰寫和執行,例如:代碼在這里,用這個來進行計算,
USER 找到以下多項式的所有實值根:3*x**5 - 5*x**4 - 3*x**3 - 7*x - 10.

代碼執行的另一個好用例是呼叫外部API,如果指示模型正確使用API,它可以撰寫使用它的代碼,可以通過向模型提供說明如何使用API的檔案和/或代碼示例來指示模型如何使用API,

角色 Prompt
SYSTEM 你可以通過將Python代碼用三個反斜線括起來來撰寫和執行,例如:代碼在這里,用這個來進行計算,
```
python import message
message.write(to="John", message="Hey, want to meetup after work?")
```

警告:執行由模型生成的代碼本質上是不安全的,在任何試圖執行此操作的應用程式中都應該采取預防措施,特別是,需要一個沙盒代碼執行環境來限制不受信任的代碼可能造成的危害,

系統地測驗變更

有時很難判斷一個變化——例如,一條新指令或一個新設計——是讓你的系統變得更好還是更糟,看看幾個例子可能會暗示哪一個更好,但由于樣本量較小,很難區分真正的改進還是隨機的運氣,也許更改有助于某些輸入的性能,但會損害其他輸入的性能,

評估程式(或“evals”)有助于優化系統設計,好的evals是:

  • 代表真實世界的使用(或至少多樣化)
  • 包含許多測驗用例以獲得更大的統計能力(有關指南,請參閱下表)
  • 易于自動化或重復
要檢測的差異 95%置信度所需的樣本量
30% ~10
10% ~100
3% ~1,000
1% ~10,000

輸出的評估可以由計算機、人工或混合進行,計算機可以使用客觀標準(例如,具有單一正確答案的問題)以及一些主觀或模糊標準來自動評估,其中模型輸出由其他模型查詢來評估,OpenAI Evals是一個開源軟體框架,提供創建自動化評估的工具,
當存在一系列可能的輸出時,基于模型的評估可能會很有用,這些輸出被認為質量同樣高(例如,對于答案很長的問題),基于模型的評估可以實際評估的內容和需要人類評估的內容之間的界限是模糊的,并且隨著模型變得更有能力,界限不斷變化,我們鼓勵進行實驗,以了解基于模型的評估在多大程度上適用于您的用例,

方法:參斬訓金標準答案評估模型輸出

假設一個問題的正確答案應該參考一組特定的已知事實,然后,我們可以使用模型查詢來計算答案中包含了多少所需事實,
例如,使用以下系統訊息:

角色 Prompt
SYSTEM 您將獲得由三個引號分隔的文本,這應該是問題的答案,檢查答案中是否直接包含以下資訊:
-尼爾·阿姆斯特朗是第一個在月球上行走的人,
-尼爾·阿姆斯特朗第一次登上月球的日期是1969年7月21日,
對于這些點中的每一個,執行以下步驟:
1-重述要點,
2-提供最接近這一點的答案的引文,
3-考慮一下,閱讀引文但不了解主題的人是否可以直接推斷出要點,在下定決心之前解釋一下為什么或為什么不這樣做,
4-如果3的答案是肯定的,則寫“是”,否則寫“否”,
最后,統計一下有多少“是”的答案,將此計數提供為{“count”:<在此處插入計數>},

以下是一個同時滿足這兩點的示例輸入:

角色 Prompt
SYSTEM <插入上面的系統資訊>
USER “”“尼爾·阿姆斯特朗走出登月艙,成為第一個登上月球的人,創造了歷史,”“”

以下是一個沒有得到滿足的示例輸入:

角色 Prompt
SYSTEM <插入上面的系統資訊>
USER “”“69年夏天,一次盛大的航行,
阿波羅11號,大膽如傳奇之手,
阿姆斯特朗邁出了一步,歷史展現了出來,
“我的一小步,人類的一大步”他說,”“”

這種基于模型的eval有很多可能的變體,考慮以下變化,它跟蹤候選答案和金標準答案之間的重疊型別,并跟蹤候選答案是否與金標準答案的任何部分相矛盾,

角色 Prompt
SYSTEM 使用以下步驟來回應用戶輸入,在繼續之前充分重述每一步,即“第1步:理由…”,
步驟1:逐步判斷提交的答案中的資訊與專家答案相比是否是:不相交、相等、子集、超集或重疊(即某些交集,但不是子集/超集),
第二步:逐步判斷提交的答案是否與專家答案的任何方面相矛盾,
第3步:輸出一個JSON物件,其結構如下:{“type_of_doverlap”:“dissection”或“equal”或“subset”或“superset”或“overlapping”,“conflict”:true或false}

以下是一個輸入不合格答案的示例,但與專家答案并不矛盾:

角色 Prompt
SYSTEM <插入上面的系統資訊>
USER 問題:“”“尼爾·阿姆斯特朗最著名的事件是什么?發生在什么日期?假定UTC時間,”“”
提交的答案:“”“他不是在月球上行走嗎?”“”
專家回答:“尼爾·阿姆斯特朗最著名的是他是第一個登上月球的人,這一歷史性事件發生在1969年7月21日,”

以下是一個與專家答案直接矛盾的輸入示例:

角色 Prompt
SYSTEM <插入上面的系統資訊>
USER 問題:“”“尼爾·阿姆斯特朗最著名的事件是什么?發生在什么日期?假定UTC時間,”“”
提交的答案:“1969年7月21日,尼爾·阿姆斯特朗成為繼巴茲·奧爾德林之后第二個登上月球的人,”
專家回答:“尼爾·阿姆斯特朗最著名的是他是第一個登上月球的人,這一歷史性事件發生在1969年7月21日,”

以下是一個帶有正確答案的示例輸入,它還提供了比所需更多的細節:

角色 Prompt
SYSTEM <插入上面的系統資訊>
USER 問題:“”“尼爾·阿姆斯特朗最著名的事件是什么?發生在什么日期?假定UTC時間,”“”
提交的答案:“”1969年7月21日UTC(世界協調時)大概02:56左右,尼爾·阿姆斯特朗成為第一個踏上月球表面的人類,這標志著人類歷史上的一項重大成就,“”
專家回答:“尼爾·阿姆斯特朗最著名的是他是第一個登上月球的人,這一歷史性事件發生在1969年7月21日,”

其他資源

要獲得更多靈感,請訪問OpenAI Cookbook,其中包含示例代碼,還鏈接到第三方資源,如:

  • 提示庫和工具
  • 提示性指南
  • 視頻課程
  • 關于改進推理的高級提示的論文

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/556232.html

標籤:其他

上一篇:不糾結語法(田靜)

下一篇:返回列表

標籤雲
其他(161804) Python(38259) JavaScript(25515) Java(18273) C(15238) 區塊鏈(8273) C#(7972) AI(7469) 爪哇(7425) MySQL(7271) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5875) 数组(5741) R(5409) Linux(5347) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4607) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2438) ASP.NET(2404) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) .NET技术(1985) HtmlCss(1976) 功能(1967) Web開發(1951) C++(1942) python-3.x(1918) 弹簧靴(1913) xml(1889) PostgreSQL(1881) .NETCore(1863) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 【翻譯】GPT最佳實踐

    本指南分享了從GPT中獲得更好結果的戰略和策略。這里描述的方法有時可以結合起來使用,以獲得更大的效果。我們鼓勵大家通過實驗來找到最適合自己的方法。 ......

    uj5u.com 2023-06-29 08:31:02 more
  • 不糾結語法(田靜)

    # 第一章 簡單句的核心 ## 第一節 簡單句的核心構成 ### 簡單句的核心導圖 ![img](https://img2023.cnblogs.com/blog/2807357/202306/2807357-20230628161238883-1987928337.png) ### 注意: - 主 ......

    uj5u.com 2023-06-29 08:24:05 more
  • 歐拉函式證明與代碼實作

    # 歐拉函式 - 定義 對于正整數n小于等于n的數中與n互質的數的個數記為$\varphi(n)$,即為歐拉函式 - 歐拉公式 由算數基本定理任意一個正整數都可以寫作n=$p_1^{a_1}p_2^{a_2}\cdots p_k^{a^k}$ 那么$\varphi(n)=n\prod\limits_ ......

    uj5u.com 2023-06-29 08:23:33 more
  • 分享一次性能測驗程序,5個步驟直接起飛!

    在企業中完成性能測驗專案是一個挑戰性強、技術含量高的任務。本文將分享一個公司完成高性能游戲系統的性能測驗程序,展示如何完成一次成功的性能測驗專案。 專案背景:這是一家游戲公司,推出了一款新的游戲軟體,系統要求高性能、高并發、高可用,為確保用戶體驗和游戲體驗,公司決定在正式上線前對系統進行性能測驗. ......

    uj5u.com 2023-06-29 08:21:47 more
  • Sudo堆溢位漏洞(CVE-2021-3156)復現

    2021年1月26日,Qualys Research Labs在 sudo 發現了一個缺陷。sudo 決議命令列引數的方式時,錯誤的判斷了截斷符,從而導致攻擊者可以惡意構造載荷,使得sudo發生堆溢位,該漏洞在配合環境變數等分配堆以及釋放堆的原語下,可以致使本地提權。 ......

    uj5u.com 2023-06-29 08:21:11 more
  • 業務安全情報第十七期 | 國際航班上,小“票代”在瘋狂倒賣高價票

    頂象防御云業務安全情報中心監測發現,某航空國際航班,遭遇惡意網路爬蟲的持續攻擊。高峰時期,B2C網站惡意網路爬蟲的訪問量達84%,嚴重占用網路帶寬。此外,小“票代”還進行航班票價的倒賣,直接影響乘客正常查詢和購票。 乘坐國際航班,躲不開的“票代” 《2022年民航行業發展統計公報》顯示,國際航線完成 ......

    uj5u.com 2023-06-29 08:19:38 more
  • ChatGLM-6B第二代模型開源,拿下LLM模型中文能力評估榜單第一名

    ChatGLM-6B 自3月14日發布以來,深受廣大開發者喜愛。截至 6 月24日,來自 Huggingface 上的下載量已經超過 300w。 為了更進一步促進大模型開源社區的發展,我們再次升級 ChatGLM-6B,發布 ChatGLM2-6B 。在主要評估LLM模型中文能力的 C-Eval 榜 ......

    uj5u.com 2023-06-28 10:53:24 more
  • ChatGLM-6B第二代模型開源,拿下LLM模型中文能力評估榜單第一名

    ChatGLM-6B 自3月14日發布以來,深受廣大開發者喜愛。截至 6 月24日,來自 Huggingface 上的下載量已經超過 300w。 為了更進一步促進大模型開源社區的發展,我們再次升級 ChatGLM-6B,發布 ChatGLM2-6B 。在主要評估LLM模型中文能力的 C-Eval 榜 ......

    uj5u.com 2023-06-28 10:47:45 more
  • 自然語言處理 Paddle NLP - 機器同傳技術及應用-理論

    視頻:https://aistudio.baidu.com/aistudio/course/introduce/24177?sharedLesson=1490529&sharedType=2&sharedUserId=2631487&ts=1687144071539 課件:https://aistu ......

    uj5u.com 2023-06-28 09:53:40 more
  • 【面試實戰】面試官面試模擬訓練【一】

    博客推行版本更新,成果積累制度,已經寫過的博客還會再次更新,不斷地琢磨,高質量高數量都是要追求的,工匠精神是學習必不可少的精神。因此,大家有何建議歡迎在評論區踴躍發言,你們的支持是我最大的動力,你們敢投,我就敢肝 ......

    uj5u.com 2023-06-28 09:53:14 more