7.1 提示工程的基礎與進階#
從「指令」到「Agent」#
本書第一篇建立了傳統軟體工程的骨幹。從本章起,我們進入本書的差異化核心——AI 工程。而一切的起點,是理解如何與大語言模型(LLM)互動。
早期的人們發現:LLM 的能力,很大程度取決於你「怎麼問」。同樣一個模型,問法不同,回答品質天差地別。這催生了 提示工程(Prompt Engineering)——研究「如何設計指令(Prompt)來引導 LLM 產生高品質輸出」的技術。
本章的主軸,是一個重要的演進:
從多少「提示工程」,進化到更根本的「上下文工程(Context Engineering)」——因為決定 LLM 能力上限的,不只是「指令怎麼寫」,更是「模型看到的上下文是什麼」。
提示工程三要素:角色、指令、格式#
先掌握把一個 Prompt 寫「好」的基礎。好的 Prompt 通常包含三個層次:
1. 角色(Role):賦予模型一個身份#
給模型設定角色,能引導它的輸出風格與專業程度。
你是一位資深軟體架構師,專精於分散式系統。
請為我評估下面的架構設計,並指出其中的風險。
為什麼有效:角色設定「激活」模型在訓練資料中對應的模式——「架構師」會喚起架構師的口吻與知識,而「初學者」則喚起教學式的口吻。
2. 指令/任務(Task):清楚地說明要做什麼#
任務要具體、明確、可執行。模糊的「幫我分析一下」遠不如「列出這個架構的 3 個可擴展性風險,並各給 1 個改進建議」。
3. 輸出格式(Format):指定期望的呈現#
格式能讓輸出可預期、好解析。指定標題、列表、JSON、或表格。
請用 JSON 格式回覆:{ "risks": [...], "suggestions": [...] }
提示的進階技巧#
在基礎之上,有幾個能顯著提升效果的進階技巧:
Few-Shot(範例示範)#
不要只「描述要做什麼」,而是給一兩個「示範」的輸入-輸出例子,讓模型模仿。
請將以下中文句子翻譯成英文,並附上簡短的確信度分數。
範例:
輸入:這個方案很有前景
輸出:This plan is very promising. (確信度: 0.95)
輸入:刪庫跑路
輸出:
思維鏈(Chain-of-Thought, CoT)#
要求模型「一步步推理再給答案」,能顯著提升需要多步驟邏輯的任務準確率。
小明昨天用了 200 元,今天又用了 300 元,他原本有 1000 元。
請一步步推導,他現在剩多少?
自我一致性(Self-Consistency)#
對同一問題讓模型多次推理,然後投票取最常見的答案。透過「多次獨立思考 + 多數決」,降低單次推理的隨機錯誤。
引導式(ReAct / 思考-行動)#
讓模型「輸出推理與行動」的結構,是通向 Agent 的橋樑(見 8.4 節 ReAct)。它讓模型不只是「答」,而是「邊想邊做」。
提示工程的極限:為什麼要升級到上下文工程#
提示工程很有效,但它有一個根本瓶頸:它只調整「指令」,而指令只是模型所見上下文的一小部分。一個更深的事實是——
模型的知識與能力是被「凍結」在參數裡的(在訓練時就被決定了);Prompt 無法治療「模型不知道的事」。
具體的極限案例: - 模型的知識截止:你問它「今天的新聞」,模型不知道——因為它的知識停在訓練時 - 模型不知道你的私有事實:你的專案規格、你的程式庫、你的業務規則——模型參數裡根本沒有 - 模型看不見你的檔案:要讓它「看懂你的程式碼」,你得把程式碼「放進它眼前」
這些限制,都不是「把 Prompt 寫得更好」能解決的,而是要把更多的資訊「塞進上下文」——這正是上下文工程要解決的(7.2 節)。
一句話:提示工程教我們「怎麼用好指令」;而我們的眼光,很快要放到更浩瀚的「怎麼讓模型看到它該看的一切」——上下文工程。
AI 時代的提示工程#
在 Agent 與程式設計的場景(附錄 B 的 OpenCode 等),提示工程有了新的延伸:
- 「寫給 AI 的說明書」:像 4.4 節的 AGENTS.md(附錄 B.3),是「長期有效」的提示——告訴 AI「你是誰、在這個專案該怎麼做、規範是什麼」
- 可重用提示:把常用的優秀 Prompt 整理成可重用的「技能/指令」,避免每次重寫
- 與工具結合:提示不只描述任務,還描述「可用哪些工具、該如何用」(8 章)
- 約束與防禦:提示中要避免指令被使用者輸入干擾(13.1 節的提示注入)
本章小結#
- 提示工程:設計指令引導 LLM 輸出的技術
- 三要素:角色、任務、輸出格式
- 進階技巧:Few-Shot(範例)、CoT(思維鏈)、自我一致性
- 根本瓶頸:模型知識凍結在參數中,Prompt 無法「告訴它不知道的事」
- 因此要從提示工程進化到上下文工程(讓模型看到它該看的全部資訊)
- Agent 場景:提示工程延伸為「說明書」(AGENTS.md)、可重用技能、工具協作
想一想#
- 用同一個問題,分別用「模糊提示」與「含角色+任務+格式的三要素提示」問一個 LLM,比較輸出品質與可解析性。
- 為什麼 Few-Shot(給範例)常比「用文字描述規則」更有效?
- 提示工程解決不了哪些問題?這些問題為什麼促使我們轉向上下文工程?