Posted on

Prompt engineering 提示工程

獲得更好結果的六種策略

 寫清楚的說明

  • 在查詢中包含詳細資訊以獲得更相關的答案
  • 要求模型採用角色
  • 使用分隔符清楚地指示輸入的不同部分
  • 指定完成任務所需的步驟
  • 舉例說明
  • 指定所需的輸出長度
  •  提供參考文本

 提供參考文本

  • 指示模型使用參考文本回答問題
  • 指示模型使用參考文本的引用來回答

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

正如軟體工程中的良好做法是將複雜系統分解為一組模組化元件一樣,提交給語言模型的任務也是如此。複雜任務往往比簡單任務具有更高的錯誤率。此外,複雜任務通常可以重新定義為更簡單任務的工作流,其中早期任務的輸出用於構造後續任務的輸入。

  • 使用意圖分類來標識與用戶查詢最相關的指令
  • 對於需要很長對話的對話應用程式,請總結或過濾以前的對話
  • 分段總結長文檔,並以遞歸方式構建完整的摘要

給模型時間“思考”

如果要求將 17 乘以 28,您可能不會立即知道,但仍然可以隨著時間的推移計算出來。同樣,模型在試圖立即回答時會犯更多的推理錯誤,而不是花時間找出答案。在回答之前要求一個「思維鏈」可以説明模型更可靠地推理出正確的答案。

  • 在匆忙得出結論之前,指示模型制定自己的解決方案
  • 使用內心獨白或一系列查詢來隱藏模型的推理過程
  • 詢問模型在之前的刀路中是否遺漏了任何內容

使用外部工具

通過向模型提供其他工具的輸出來補償模型的弱點。例如,文本檢索系統(有時稱為RAG或檢索增強生成)可以告訴模型有關相關文檔的資訊。像 OpenAI 的 Code Interpreter 這樣的代碼執行引擎可以説明模型進行數學運算和運行代碼。如果一項任務可以通過工具而不是語言模型更可靠或更高效地完成,請卸載它以充分利用兩者。

  • 使用基於嵌入的搜索實現高效的知識檢索
  • 使用代碼執行來執行更準確的計算或調用外部 API
  • 授予模型對特定函數的訪問許可權

系統地測試更改

如果可以衡量性能,則更容易提高性能。在某些情況下,對提示的修改將在幾個孤立的示例上獲得更好的性能,但在更具代表性的示例集上會導致整體性能較差。因此,為了確保更改對性能有淨積極影響,可能需要定義一個全面的測試套件(也稱為“eval”)。

  • 參考黃金標準答案評估模型輸出

更多範例請見: https://platform.openai.com/docs/guides/prompt-engineering/strategy-write-clear-instructions