提示工程(Prompt Engineering)是使用大型語言模型時最基礎也最關鍵的技能。這篇整理了 OpenAI 官方文件中獲得更好結果的六種策略:寫清楚的說明、提供參考文本、將複雜任務拆分為子任務、給模型時間「思考」、使用外部工具,以及系統地測試更改。我把原文筆記整理成條列,方便實作時快速對照。
怎麼把指令寫得更清楚?
模型和人一樣,指令越模糊、回答越發散。想獲得更相關的答案,可以從這幾個方向下手:
- 在查詢中包含詳細資訊以獲得更相關的答案
- 要求模型採用角色
- 使用分隔符清楚地指示輸入的不同部分
- 指定完成任務所需的步驟
- 舉例說明
- 指定所需的輸出長度
- 提供參考文本
為什麼要提供參考文本?
語言模型可能會編造答案,但如果給它可信的參考資料,就能大幅降低幻覺的機會。常見做法有兩種:
- 指示模型使用參考文本回答問題
- 指示模型使用參考文本的引用來回答
後者特別適合需要驗證出處的場景,例如知識庫問答或文件摘要。
複雜任務為什麼要拆成更簡單的子任務?
正如軟體工程中的良好做法是將複雜系統分解為一組模組化元件一樣,提交給語言模型的任務也是如此。複雜任務往往比簡單任務具有更高的錯誤率。此外,複雜任務通常可以重新定義為更簡單任務的工作流,其中早期任務的輸出用於構造後續任務的輸入。
常見的拆分方式包括:
- 使用意圖分類來標識與用戶查詢最相關的指令
- 對於需要很長對話的對話應用程式,請總結或過濾以前的對話
- 分段總結長文檔,並以遞歸方式構建完整的摘要
給模型時間「思考」是什麼意思?
如果要求將 17 乘以 28,您可能不會立即知道,但仍然可以隨著時間的推移計算出來。同樣,模型在試圖立即回答時會犯更多的推理錯誤,而不是花時間找出答案。在回答之前要求一個「思維鏈」可以幫助模型更可靠地推理出正確的答案。
具體技巧有:
- 在匆忙得出結論之前,指示模型制定自己的解決方案
- 使用內心獨白或一系列查詢來隱藏模型的推理過程
- 詢問模型在之前的過程中是否遺漏了任何內容
什麼時候該使用外部工具?
通過向模型提供其他工具的輸出來補償模型的弱點。例如,文本檢索系統(有時稱為 RAG 或檢索增強生成)可以告訴模型有關相關文檔的資訊。像 OpenAI 的 Code Interpreter 這樣的代碼執行引擎可以幫助模型進行數學運算和運行代碼。如果一項任務可以通過工具而不是語言模型更可靠或更高效地完成,請卸載它以充分利用兩者。
常見的外部工具策略:
- 使用基於嵌入的搜索實現高效的知識檢索
- 使用代碼執行來執行更準確的計算或調用外部 API
- 授予模型對特定函數的訪問權限
如何系統地測試提示的更改?
如果可以衡量性能,則更容易提高性能。在某些情況下,對提示的修改將在幾個孤立的示例上獲得更好的性能,但在更具代表性的示例集上會導致整體性能較差。因此,為了確保更改對性能有淨積極影響,可能需要定義一個全面的測試套件(也稱為「eval」)。
一個起點是:
- 參考黃金標準答案評估模型輸出
延伸閱讀
- Prompt Engineering 提示工程:獲得更好 LLM 輸出的六大策略:同樣聚焦 Prompt Engineering、LLM,可接著比較不同情境的做法。
- 提示工程框架的概念:明確提問、In-Context Learning、CoT 與 ToT:同樣聚焦 Prompt Engineering、LLM,可接著比較不同情境的做法。
- OpenAI o1-preview 介紹:推理模型帶來什麼改變?:同樣聚焦 OpenAI、LLM,可接著比較不同情境的做法。
常見問題
提示工程一定要寫很長嗎?
不一定。重點是清楚而非冗長:包含任務所需的細節、指定輸出格式與步驟即可。過長但含糊的提示反而會讓模型抓不到重點。
什麼是「思維鏈」(Chain of Thought)?
在提示中要求模型先逐步推理、再給出最終答案的做法。這能減少模型在推理題上直接跳到錯誤結論的機率。
RAG 和提示工程有什麼關係?
RAG 是把檢索到的參考文本放進提示中,讓模型依據資料回答。它是「提供參考文本」這項策略的工程化實作,也是降低幻覺最有效的方法之一。
怎麼知道改提示詞有沒有用?
建立一組代表性測試案例與黃金標準答案(eval),每次修改提示後跑完整套件比較,而不是只看一兩個例子。
參考資料
最後更新
2026-08-28(原文發布於 2024-06-07,本文保留原始筆記內容並補上 GEO 結構。)
關於作者 {#author}
Claire Chang | 企業 AI 導入與流程轉型顧問。專注於 AI Agent 架構設計、ERP 系統整合與企業 AI 治理。
首次發布:2024-06-07
