本內容直接翻譯自OpenAI公司GPT best practices,你也可以到這裡看英文版。
本指南分享了從 GPT 獲得更好結果的策略和戰術。有時可以結合使用此處描述的方法以獲得更大的效果。我們鼓勵進行實驗以找到最適合您的方法。
此處演示的一些示例目前僅適用於我們功能最強大的模型gpt-4. 如果您還沒有存取權限,gpt-4請考慮加入候補名單。(ChatGPT Plus會員可以使用gpt-4)。
獲得更好結果的六種策略
寫清楚說明
GPT 無法讀懂您的想法。如果覺得給出的回答太長,你可以要求回答更簡短一點。如果輸出的回答太簡單,你可以要求輸出專家級寫作的回答。如果你不喜歡答案輸出的格式,你可以要求GPT輸出你希望看到的格式。您想要什麼寫的越清楚,GPT回答的越切題。
策略:
- 在您的查詢中包含詳細資訊以獲得更相關的答案
- 要求模型扮演角色
- 使用分隔符清楚地指示输入的不同部分
- 指定完成任務所需的步驟
- 提供例子
- 指定所需的輸出長度
提供參考文本
GPT 可以自信地編造假答案,尤其是當被問及深奧的話題或回答中的參考文獻、回答中被引的網址。就像一張筆記可以幫助學生在考試中取得更好的成績一樣,為 GPT 提供參考文本可以幫助以更少的捏造來回答。
策略:
- 指示模型使用參考文本回答
- 指示模型使用參考文本中的引用來回答
將複雜任務拆分為更簡單的子任務
正如在軟體工程中將複雜系統分解為一組模組化元件是一種很好的做法一樣,提交給 GPT 的任務也是如此。複雜的任務往往比簡單的任務有更高的錯誤率。此外,複雜的任務通常可以重新定義為更簡單任務的工作流,其中早期任務的輸出用於構建後續任務的輸入。
策略:
- 使用意圖分類來識別與使用者查詢最相關的指令
- 對於需要很長對話的對話應用,總結或過濾之前的對話
- 分段總結長文檔並遞迴構建完整摘要
給 GPT 時間“思考”
如果要求將 17 乘以 28,您可能不會立即知道,但多給點時間你可以計算出來。同樣,GPT 在試圖立即回答而不是花時間找出答案時會犯更多的推理錯誤。在回答之前詢問一系列推理可以幫助 GPT 更可靠地推理出正確答案。
策略:
- 在匆忙下結論之前指示模型制定出自己的解決方案
- 使用內心獨白或一系列查詢來隱藏模型的推理過程
- 詢問模型是否遺漏了之前傳遞的任何內容
使用外部工具
通過為 GPT 提供其他工具的輸出來彌補它們的弱點。例如,文本檢索系統可以將相關文檔告知 GPT。代碼執行引擎可以説明 GPT 進行數學運算和運行代碼。如果一項任務可以通過工具而不是 GPT 更可靠或更有效地完成,請卸載它以充分利用兩者。
策略:
- 使用基於嵌入的搜索來實現高效的知識檢索
- 使用代碼執行來執行更準確的計算或調用外部 API
系統地測試更改
如果可以衡量,提高績效會更容易。在某些情況下,對提示的修改會在一些孤立的示例上獲得更好的性能,但會導致在更具代表性的示例集上的整體性能變差。因此,要確保更改對性能產生積極影響,可能有必要定義一個綜合測試套件(也稱為“評估”)。
策略:
- 參考黃金標準答案評估模型輸出
具體策略:
上面列出的每個策略都可以用特定的策略來產生實體。這些策略旨在為嘗試的事情提供想法。它們絕不是全面的,您可以隨意嘗試此處未展示的創意。
寫清楚的說明
在查詢中包含詳細資訊以獲得更相關的答案
為了獲得高度相關的回應,請確保請求提供任何重要的細節或上下文。否則,您將把它留給模型來猜測您的意思。
不好的提問 | 好的提問 |
如何在 Excel 中添加數字? | 如何在 Excel 中將一行美元金額相加?我想對整張行自動執行此操作,所有總計都在右側的名為“總計”的列中結束。 |
誰是總統? | 誰是 2021 年的墨西哥總統,選舉的頻率如何? |
編寫代碼來計算斐波那契數列。 | 編寫一個 TypeScript 函數來高效地計算斐波那契數列。自由地評論代碼以解釋每一部分的作用以及為什麼這樣寫。 |
總結會議記錄。 | 在一個段落中總結會議記錄。然後寫下演講者的降價清單和他們的每個要點。最後,列出演講者建議的後續步驟或行動專案(如果有)。 |
要求模型扮演角色
系統消息可用於指定模型在其回復中使用的角色。
提示語示例:
你是一位小學老師,能夠將雜亂的內容解說得讓7或8歲的孩子也能瞭解。請從頭編寫以下語句,使牠們更簡略瞭解。
OpenAI是一個美國人工智慧(AI)研討實驗室,由非營利安排OpenAI Incorporated(OpenAI Inc.)和其盈餘子公司OpenAI Limited Partnership(OpenAI LP)組成。 OpenAI旨在推行和發展友好型人工智慧,並運用國際第五大超級核算機進行研討。該安排於2015年由Sam Altman、Reid Hoffman、Jessica Livingston、Elon Musk、Ilya Sutskever、Peter Thiel等人在舊金山創立,共許諾捐獻10億美元。Musk於2018年從董事會辭去職務但依然是捐獻者。微軟於2019年向OpenAI LP供給了10億美元的出資,並在2023年1月供給了第二筆多年期出資,金額據報道為100億美元。
Chatgpt回復:
OpenAI是一個美國的AI研究實驗室,致力於開發友好型人工智慧。他們使用一臺巨大的超級計算機來進行研究。這個實驗室成立於2015年,由一些人共同創辦,他們捐贈了10億美元。其中一位創辦人是Elon Musk,他在2018年離開了董事會,但仍然繼續捐款。微軟在2019年向他們提供了10億美元的資助,並在2023年再次提供了100億美元的資助。
運用分隔符清晰地標明輸入的不同部分
三重引號、XML 標記、章節標題等分隔符號可以幫助區分要區別對待的文本部分。
user:用俳句總結由三重引號分隔的文本。”””在此插入文本”””
system:您將獲得一對關於同一主題的文章(用 XML 標記分隔)。先總結一下每篇文章的論點。然後指出他們中的哪一個提出了更好的論點並解釋原因。
user:<article>在這裡插入第一篇文章</article> <article>在這裡插入第二篇文章</article>
system:您將獲得論文摘要和建議的標題。論文標題應該讓讀者對論文的主題有一個很好的瞭解,但也應該引人注目。如果標題不符合這些標準,建議 5 個備選方案。
user:摘要:此處插入摘要標題:此處插入標題
對於諸如此類的簡單任務,使用定界符可能不會對輸出品質產生影響。然而,任務越複雜,消除任務細節的歧義就越重要。不要讓 GPT 工作以準確理解您對它們的要求。
指定完成任務所需的步驟
有些任務最好指定為一系列步驟。明確地寫出步驟可以使模型更容易遵循它們。
system:使用以下分步說明回應用戶輸入。第 1 步 – 用戶將用三重引號為您提供文本。在一個句子中總結這段文字,並加上一個首碼“Summary:”。第 2 步 – 將第 1 步中的摘要翻譯成西班牙語,並加上首碼“Translation:”。
user:”””在此插入文本”””
提供示例
提供適用於所有示例的一般說明通常比通過示例演示任務的所有排列更有效,但在某些情況下提供示例可能更容易。例如,如果您打算讓模型複製一種難以明確描述的特定樣式來回應使用者查詢。這被稱為“少量”提示。
系統:以一致的風格回答。
用戶:教我耐心。
助手:開闢最深山谷的河流從溫和的泉水流出;最偉大的交響樂源於一個音符;最複雜的掛毯始於一根單獨的線。
用戶:教我認識海洋。
指定輸出的所需長度
您可以要求模型生成具有給定目標長度的輸出。目標輸出長度可以根據單詞、句子、段落、要點等的計數來指定。但是請注意,指示模型生成特定數量的單詞並不能實現高精度。該模型可以更可靠地生成具有特定數量的段落或要點的輸出。
用戶:用大約 50 個單詞總結由三重引號分隔的文本。”””在此插入文本”””
用戶:在 2 個段落中總結由三重引號分隔的文本。”””在此插入文本”””
用戶:在 3 個要點中總結由三重引號分隔的文本。”””在此插入文本”””
提供參考文本
指示模型使用參考文本回答
如果我們可以為模型提供與當前查詢相關的可信資訊,那麼我們可以指示模型使用提供的資訊來編寫其答案。
系統:使用由三重引號分隔的提供的文章來回答問題。如果在文章中找不到答案,寫“我找不到答案”。
用戶:<插入文章,每篇文章用三重引號分隔> 問題:<在此處插入問題>
鑒於 GPT 的上下文視窗有限,為了應用這種策略,我們需要一些方法來動態查找與所問問題相關的資訊。嵌入可用于實現高效的知識檢索。有關如何實現這一點的更多詳細資訊,請參閱策略“使用基於嵌入的搜索來實現高效的知識檢索” 。
指示模型使用參考文本中的引文來回答
如果輸入已補充相關知識,則可以直接要求模型通過引用所提供文檔中的段落來為其答案添加引文。請注意,輸出中的引用可以通過提供的文檔中的字串匹配以程式設計方式進行驗證。
系統:您將獲得一份由三重引號和一個問題分隔的檔。您的任務是僅使用提供的文件回答問題,並引用用於回答問題的文件中的段落。如果文檔不包含回答此問題所需的資訊,則只需寫上:“資訊不足”。如果提供了問題的答案,則必須用引文進行注釋。使用以下格式引用相關段落 ({“citation”: …})。
用戶:”””<在此處插入文檔>””” 問題:<在此處插入問題>
將複雜任務拆分為更簡單的子任務
使用意圖分類來識別與使用者查詢最相關的指令
對於需要大量獨立指令集來處理不同情況的任務,首先對查詢類型進行分類並使用該分類來確定需要哪些指令可能是有益的。這可以通過定義與處理給定類別中的任務相關的固定類別和硬編碼指令來實現。這個過程也可以遞迴地應用於將任務分解為一系列階段。這種方法的優點是每個查詢將僅包含執行任務下一階段所需的指令,與使用單個查詢執行整個任務相比,這可以降低錯誤率。這也可以降低成本,因為更大的提示運行成本更高(參見定價資訊)。
例如,假設對於客戶服務應用程式,可以將查詢分類如下:
系統:您將收到客戶服務查詢。將每個查詢分為主要類別和次要類別。以 json 格式提供帶有鍵的輸出:primary 和 secondary。主要類別:計費、技術支援、帳戶管理或一般查詢。計費次要類別: – 取消訂閱或升級 – 添加付款方式 – 收費說明 – 對收費提出異議 技術支持次要類別: – 故障排除 – 設備相容性 – 軟體更新 帳戶管理次要類別: – 密碼重置 – 更新個人資訊 – 關閉帳戶 -帳戶安全 一般查詢二級類別: – 產品資訊 – 定價 – 回饋 – 與人交談
用戶:我需要讓我的互聯網重新工作。
基於客戶查詢的分類,可以向 GPT 模型提供一組更具體的指令來處理後續步驟。例如,假設客戶需要“故障排除”方面的説明。
系統:您將收到需要在技術支援環境中進行故障排除的客戶服務查詢。通過以下方式説明使用者: – 要求他們檢查所有進出路由器的電纜是否已連接。請注意,電纜隨時間鬆動是很常見的。- 如果所有電纜都已連接但問題仍然存在,請詢問他們使用的是哪種路由器型號 – 現在您將建議他們如何重新開機他們的設備: — 如果型號是 MTD-327J,建議他們按下紅色按鈕並按住它 5 秒鐘,然後等待 5 分鐘,然後再測試連接。– 如果型號是 MTD-327S,建議他們拔下並重新插入,然後等待 5 分鐘,然後再測試連接。- 如果客戶的問題在重啟設備並等待 5 分鐘後仍然存在,請通過輸出 {“IT support requested”} 將他們連接到 IT 支持。
用戶:我需要讓我的互聯網重新工作。
請注意,已指示模型發出特殊字串以指示對話狀態何時發生變化。這使我們能夠將我們的系統變成一個狀態機,其中狀態決定注入哪些指令。通過跟蹤狀態,哪些指令與該狀態相關,以及可選地允許從該狀態進行哪些狀態轉換,我們可以為用戶體驗設置護欄,而這很難通過結構化程度較低的方法實現。
Tactic:對於需要很長對話的對話應用,總結或過濾之前的對話
由於 GPT 具有固定的上下文長度,因此整個對話都包含在上下文視窗中的使用者和助手之間的對話不能無限期地繼續。
這個問題有多種解決方法,其中之一是總結對話中的先前回合。一旦輸入的大小達到預定的閾值長度,這可能會觸發一個查詢,該查詢總結了部分對話,並且先前對話的摘要可以作為系統消息的一部分包含在內。或者,可以在整個對話過程中在後臺非同步總結先前的對話。
另一種解決方案是動態選擇與當前查詢最相關的對話的先前部分。請參閱策略“使用基於嵌入的搜索來實現高效的知識檢索”。
分段總結長文檔並遞迴構建完整摘要
由於 GPT 具有固定的上下文長度,因此它們不能用於總結長度超過上下文長度減去單個查詢中生成的摘要長度的文本。
要總結一個很長的文檔,比如一本書,我們可以使用一系列查詢來總結文檔的每個部分。節摘要可以被連接和總結生成摘要的摘要。這個過程可以遞迴地進行,直到總結了整個文檔。如果有必要使用有關前面部分的資訊來理解後面的部分,那麼另一個有用的技巧是在書中任何給定點之前包括文本的連續摘要,同時總結該點的內容。OpenAI在之前的研究中使用 GPT-3 的變體研究了這種用於總結書籍的程式的有效性。
給 GPT 時間“思考”
在匆忙下結論之前,指示模型自己制定解決方案
有時,當我們明確指示模型在得出結論之前根據第一原則進行推理時,我們會得到更好的結果。例如,假設我們想要一個模型來評估學生對數學問題的解決方案。解決這個問題的最明顯方法是簡單地詢問模型學生的解決方案是否正確。
系統:判斷學生的答案是否正確。
用戶:問題陳述:我正在建造一個太陽能裝置,我需要幫助來計算財務。- 土地成本 100 美元/平方英尺 – 我可以以 250 美元/平方英尺的價格購買太陽能電池板 – 我協商了一份維護合同,每年將花費我 10 萬美元,外加 10 美元/平方英尺 的總成本是多少第一年的運營作為平方英尺數的函數。學生的解答:令 x 為以平方英尺為單位的安裝尺寸。1.土地成本:100x 2.太陽能電池板成本:250x 3.維護成本:100,000 + 100x 總成本:100x + 250x + 100,000 + 100x = 450x + 100,000
助手:這位同學的答案是正確的。
但是這位同學的解法其實是不正確的!我們可以通過提示模型首先生成自己的解決方案來讓模型成功注意到這一點。
系統:首先想出你自己解決問題的辦法。然後將您的解決方案與學生的解決方案進行比較,並評估學生的解決方案是否正確。在您自己完成問題之前,不要判斷學生的解決方案是否正確。
用戶:問題陳述:我正在建造一個太陽能裝置,我需要幫助來計算財務。- 土地成本 100 美元/平方英尺 – 我可以以 250 美元/平方英尺的價格購買太陽能電池板 – 我協商了一份維護合同,每年將花費我 10 萬美元,外加 10 美元/平方英尺 的總成本是多少第一年的運營作為平方英尺數的函數。學生的解答:令 x 為以平方英尺為單位的安裝尺寸。1.土地成本:100x 2.太陽能電池板成本:250x 3.維護成本:100,000 + 100x 總成本:100x + 250x + 100,000 + 100x = 450x + 100,000
助手:設 x 是以平方英尺為單位的安裝尺寸。1.土地成本:100x 2.太陽能電池板成本:250x 3.維護成本:100,000 + 10x 總成本:100x + 250x + 100,000 + 10x = 360x + 100,000 學生的答案是錯誤的。他們在維護成本計算中犯了一個錯誤,使用 100x 而不是 10x。第一年運營的正確總成本是 360x + 100,000。
在操場上打開
使用內心獨白或一系列查詢來隱藏模型的推理過程
前面的策略表明,模型在回答特定問題之前詳細推理問題有時很重要。對於某些應用程式,模型用於得出最終答案的推理過程不適合與用戶共用。例如,在輔導應用程式中,我們可能希望鼓勵學生自己找出答案,但模型對學生答案的推理過程可能會向學生揭示答案。
內心獨白是一種可以用來緩解這種情況的策略。內心獨白的想法是指示模型將本應對使用者隱藏的輸出部分放入結構化格式中,以便於解析它們。然後在將輸出呈現給用戶之前,對輸出進行解析並僅使部分輸出可見。
系統:按照以下步驟回答使用者查詢。第 1 步 – 首先找出您自己的問題解決方案。不要依賴學生的解決方案,因為它可能不正確。用三引號 (“””) 將此步驟的所有作業括起來。第 2 步 – 將您的解決方案與學生的解決方案進行比較,並評估學生的解決方案是否正確。將此步驟的所有作業用三引號 (“”) 括起來”)。第 3 步 – 如果學生犯了錯誤,請確定您可以在不給出答案的情況下給學生什麼提示。將此步驟的所有工作用三重引號 (“””) 括起來。第 4 步 – 如果學生犯了錯誤,請向學生提供上一步的提示(在三重引號之外)。而不是寫“第 4 步 – …”寫“提示:”。
用戶:問題陳述:<插入問題陳述> 學生解決方案:<插入學生解決方案>
或者,這可以通過一系列查詢來實現,其中除最後一個之外的所有查詢都對最終用戶隱藏其輸出。
首先,我們可以讓模型自己解決問題。由於此初始查詢不需要學生的解決方案,因此可以省略。這提供了額外的優勢,即模型的解決方案不會因學生嘗試的解決方案而產生偏差。
用戶:<插入問題陳述>
接下來,我們可以讓模型使用所有可用資訊來評估學生解決方案的正確性。
系統:將您的解決方案與學生的解決方案進行比較,並評估學生的解決方案是否正確。
用戶:問題陳述:”””<插入問題陳述>””” 您的解決方案:”””<插入模型生成的解決方案>””” 學生的解決方案:”””<插入學生的解決方案>”””
最後,我們可以讓模型使用自己的分析來構建一個樂於助人的導師角色的回復。
系統:你是數學老師。如果學生犯了錯誤,請以不透露答案的方式向學生提供提示。如果學生沒有犯錯,只需給他們一個鼓勵的評論。
用戶:問題陳述:”””<插入問題陳述>””” 您的解決方案:”””<插入模型生成的解決方案>””” 學生的解決方案:”””<插入學生的解決方案>””” 分析:”””<插入模型從上一步生成的分析 >”””
詢問模型是否遺漏了之前傳遞的任何內容
假設我們正在使用一個模型來列出與特定問題相關的來源的摘錄。在列出每個摘錄後,模型需要確定是否應該開始編寫另一個摘錄或是否應該停止。如果來源文件很大,模型通常會過早停止並且無法列出所有相關摘錄。在這種情況下,通常可以通過使用後續查詢提示模型來查找它在先前傳遞中遺漏的任何摘錄來獲得更好的性能。
系統:您將獲得一份由三重引號分隔的文件。你的任務是選擇與以下問題相關的摘錄:“人工智慧歷史上發生了哪些重大的範式轉變。” 確保摘錄包含解釋它們所需的所有相關上下文——換句話說,不要提取缺少重要上下文的小片段。以 JSON 格式提供輸出,如下所示:[{“excerpt”: “…”}, … {“excerpt”: “…”}]
用戶:”””<在此處插入文檔>”””
助手:[{“摘錄”:“模型在這裡寫了一個摘錄”},… {“摘錄”:“模型在這裡寫了另一個摘錄”}]
用戶:有更多相關的摘錄嗎?注意不要重複摘錄。還要確保摘錄包含解釋它們所需的所有相關上下文——換句話說,不要提取缺少重要上下文的小片段。
使用外部工具
使用基於嵌入的搜索來實現高效的知識檢索
如果作為輸入的一部分提供,模型可以利用外部資訊源。這可以説明模型生成更明智和最新的回應。例如,如果用戶詢問有關特定電影的問題,將有關電影的高品質資訊(例如演員、導演等)添加到模型的輸入中可能會很有用。嵌入可用于實現高效的知識檢索,以便在運行時將相關資訊動態添加到模型輸入中。
文本嵌入是一個向量,可以衡量文本字串之間的相關性。相似或相關的字串將比不相關的字串靠得更近。這一事實以及快速向量搜索演算法的存在意味著嵌入可用于實現高效的知識檢索。特別是,一個文本語料庫可以被分割成塊,每個塊都可以被嵌入和存儲。然後可以嵌入給定的查詢並執行向量搜索以從語料庫中找到與查詢最相關(即在嵌入空間中最接近)的嵌入文字區塊。
可以在OpenAI Cookbook中找到示例實現。有關如何使用知識檢索來最小化模型編造錯誤事實的可能性的示例,請參閱策略“指示模型使用檢索到的知識來回答查詢”。
使用代碼執行來執行更準確的計算或調用外部 API
不能依賴 GPT 自行準確地執行算術或長計算。在需要的情況下,可以指示模型編寫和運行代碼,而不是進行自己的計算。特別是,可以指示模型將要運行的代碼放入指定的格式中,例如三重 backtics。生成輸出後,可以提取並運行代碼。最後,如果有必要,可以將代碼執行引擎(即 Python 解譯器)的輸出作為輸入提供給下一個查詢的模型。
系統:您可以通過用三重反引號將其括起來來編寫和執行 Python 代碼,例如,“`code goes here“`。使用它來執行計算。
用戶:找出以下多項式的所有實值根:3*x**5 – 5*x**4 – 3*x**3 – 7*x – 10。
代碼執行的另一個好用例是調用外部 API。如果指導模型正確使用 API,則它可以編寫使用它的代碼。通過向模型提供說明如何使用 API 的文檔和/或代碼示例,可以指導模型如何使用 API。
系統:您可以通過用三重反引號括起來來編寫和執行 Python 代碼。另請注意,您可以訪問以下模組以説明使用者向他們的朋友發送消息:“`python import message message.write(to=”John”, message=”嘿,下班後想見面嗎?”)“ `
警告:執行模型生成的代碼本身並不安全,任何試圖執行此操作的應用程式都應採取預防措施。特別是,需要一個沙箱代碼執行環境來限制不受信任的代碼可能造成的危害。
系統地測試變化
有時很難判斷更改(例如,新指令或新設計)是否會使您的系統變得更好或更糟。查看幾個示例可能會暗示哪個更好,但是樣本量較小時,很難區分真正的改進還是隨機的運氣。也許這種變化有助於某些輸入的性能,但會損害其他輸入的性能。
評估程式(或“evals”)對於優化系統設計很有用。好的評價是:
- 代表現實世界的使用(或至少是多樣化的)
- 包含許多測試用例以獲得更大的統計能力(有關指南,請參見下表)
- 易於自動化或重複
要檢測的差異 | 95% 置信度所需的樣本量 |
30% | ~10 |
10% | ~100 |
3% | ~1,000 |
1% | ~10,000 |
輸出的評估可以由電腦、人類或混合來完成。電腦可以使用客觀標準(例如,具有單一正確答案的問題)以及一些主觀或模糊標準來自動評估,其中模型輸出由其他模型查詢評估。OpenAI Evals是一個開源軟體框架,提供用於創建自動評估的工具。
當存在一系列可能被認為品質相同的輸出時(例如,對於答案很長的問題),基於模型的評估可能很有用。使用基於模型的評估可以實際評估的內容與需要人工評估的內容之間的界限是模糊的,並且隨著模型變得更強大而不斷變化。我們鼓勵通過實驗來弄清楚基於模型的評估對您的用例的適用程度。
參考黃金標準答案評估模型輸出
假設已知問題的正確答案應該參考一組特定的已知事實。然後我們可以使用模型查詢來計算答案中包含了多少所需事實。
例如,使用以下系統消息:
系統:您將獲得由三重引號分隔的文本,這些文本應該是問題的答案。檢查以下資訊是否直接包含在答案中: – Neil Armstrong 是第一個在月球上行走的人。- 尼爾·阿姆斯壯首次踏上月球的日期是 1969 年 7 月 21 日。對於這些要點中的每一個,請執行以下步驟: 1 – 重申要點。2 – 引用最接近這一點的答案。3 – 考慮閱讀引文但不瞭解主題的人是否可以直接推斷出這一點。在下定決心之前解釋為什麼或為什麼不。4 – 如果對 3 的回答是“是”,則寫“是”,否則寫“否”。最後,提供有多少個“是”答案的計數。將此計數提供為 {“count”: <insert count here>}。
這是一個滿足兩點的示例輸入:
系統:<在上面插入系統消息>
用戶:”””尼爾阿姆斯壯因成為第一個踏上月球的人類而聞名。這一歷史性事件發生在 1969 年 7 月 21 日,阿波羅 11 號任務期間。”””
這是一個示例輸入,其中只有一個點得到滿足:
系統:<在上面插入系統消息>
用戶:”””尼爾·阿姆斯壯走下登月艙,創造了歷史,成為第一個踏上月球的人。”””
這是一個不滿足的示例輸入:
系統:<在上面插入系統消息>
用戶:”””在 69 年的夏天,阿波羅 11 號的宏偉航行,像傳說中的手一樣大膽。阿姆斯壯邁出了一步,歷史展開了,”一小步,”他說,為了一個新世界。”””
這種基於模型的評估有很多可能的變體。考慮以下變體,它跟蹤候選答案和黃金標準答案之間的重疊類型,並跟蹤候選答案是否與黃金標準答案的任何部分相矛盾。
系統:使用以下步驟回應使用者輸入。在繼續之前完全重述每個步驟。即“第 1 步:原因……”。第 1 步:逐步推理提交的答案中的資訊與專家答案相比是否是:不相交、相等、子集、超集合或重疊(即一些交集但不是子集/超集合)。第 2 步:逐步推理提交的答案是否與專家答案的任何方面相矛盾。第 3 步:輸出結構如下的 JSON 物件:{“type_of_overlap”: “disjoint” or “equal” or “subset” or “superset” or “overlapping”, “contradiction”: true or false}
這是一個帶有不合標準答案的示例輸入,但與專家答案並不矛盾:
系統:<在上面插入系統消息>
用戶:問題:“”“尼爾·阿姆斯壯最著名的事件是什麼?它發生在什麼日期?假定 UTC 時間。”””提交的答案:“”“他不是在月球上行走嗎?”“”專家回答: “””尼爾·阿姆斯壯最著名的是他是第一個在月球上行走的人。這一歷史性事件發生在 1969 年 7 月 21 日。”””
這是一個示例輸入,其答案直接與專家答案相矛盾:
系統:<在上面插入系統消息>
用戶:問題:“”“尼爾·阿姆斯壯最著名的事件是什麼?它發生在什麼日期?假定 UTC 時間。”””提交的答案:“”“1969 年 7 月 21 日,尼爾·阿姆斯壯成為第二個走上這條路的人登月,繼巴茲奧爾德林之後。””” 專家回答:”””尼爾阿姆斯壯最著名的是他是第一個登上月球的人。這一歷史性事件發生在 1969 年 7 月 21 日。”””
這是一個帶有正確答案的示例輸入,它還提供了比必要的更多的細節:
系統:<在上面插入系統消息>
用戶:問題:“”“尼爾阿姆斯壯最著名的事件是什麼?它發生在什麼日期?假定 UTC 時間。”“”提交的答案:“”“在 1969 年 7 月 21 日大約 02:56 UTC,尼爾阿姆斯壯成為第一個人類踏上月球表面,標誌著人類歷史上的巨大成就。””” 專家解答:”””尼爾·阿姆斯壯最著名的是他是第一個在月球上行走的人。這一歷史性事件發生在 7 月 21 日, 1969.”””