有效的提示語設計可歸納為四大支柱:

1. 使用特定領域的語言清楚表達你的意圖

2. 引導模型朝你想要的對話方向前進

3. 利用模型作為概念與程式碼的通用翻譯器的潛力

4. 仔細閱讀輸出結果,尤其是模型生成的程式碼

但有人會說:「Taylor!這樣不如直接貼上我在YouTube找到的‘最佳ChatGPT提示語解鎖創意’技巧有趣。」

你說得沒錯。

在開始對話前先規劃好。你的意圖、任務或問題是什麼?哪些澄清性的輸入能讓你更接近答案?這些模型本質上是機率性的。

透過提問來收窄下一輪生成詞彙的機率範圍,讓答案大致落在你期望的範圍內。

不要過度堆疊輸入內容。我不在乎別人怎麼說,早期在對話中提供大量背景上下文是糟糕的做法。模型會依附並解讀你使用的每一個字,字越多,誤解的機率越高。我喜歡把我的方法形容成一位古怪的百萬富翁在口述信件給一位未付薪的實習生。

例如:「segment_summary.py 有個錯誤,有時會摘要非常舊的文件,問題是間歇性的。這很奇怪,不是嗎?」[發送]

模型會想:「是啊,這很奇怪……我是一名專家程式設計師,我一定能找出問題。讓我讀讀專家會看的檔案……」

上述關於收窄與擴大機率範圍的指令,特別適用於多輪對話中使用推理模型生成思考鏈的情境。

順帶一提,最近出現了兩款優秀的推理模型:Qwen 3.6 與 Gemma 4。這些推理模型能高效處理輸入並提供高品質答案,且模型體積相對較小。Mira系統的預設模型已從 Opus 4.6 換成 Gemma4:26bA4b,因為它表現更好。我幾乎完全使用 Qwen 3.6 來編碼,因為它表現相當且我能在自己的電腦上免費運行。開源與小型模型生成無意義文字的時代已經結束。擺脫每千字25美元的束縛,至少試試這些小型模型。

非推理模型在大型語言模型管線中必須用不同方式對待。它們仍是變壓器架構,但執行方式不同。

小型非推理模型的提示工程更接近編譯器設計,而非寫作。你不是在說服一個推理代理,而是在編寫模式匹配器。每個詞彙都是指令,每個範例是模板,每個分隔符是結構信號,模型的訓練分布即是你編譯的指令集架構。

使用 /nothink!少思考不代表較差,而是根據情境適當減少思考。

加入思考會讓模型輸出更多樣化,這在尋找開放式解決方案時很棒,但一旦設定好限制,/nothink 會非常可預測。

有許多優秀的非推理模型適合在管線中無監督使用。IBM Granite 4.1 最近發布,是你會期待的企業級高效變壓器。沒必要用 Opus 4.999 來解析列表並抽取 JSON,專注的非推理 IBM 模型在這類任務上更可靠,因為它們訓練目標是輸入到輸出,延遲低,且不會有創意解釋或反覆迴圈。

大型語言模型就像奇特的羅塞塔石碑。你我思考與寫作是線性的,模型卻不是。它們存在於瞬間,將所有資訊一次性載入腦中,然後輸出結果後即消失。

提示語設計雖非數學意義上的零和遊戲,但常表現得像是。每個無關詞彙都是模型可能抓取的表面,分散它對你真正關心內容的注意力。

「中間遺失」現象存在,但與一般認知不同。中間不一定指上下文視窗,而是注意力視窗。有些模型有滑動視窗,有些有稀疏注意力,但概念相同。如果你用一堆無關垃圾填滿模型當下注意的詞彙,模型永遠找不到你想要的資訊。上下文越短,注意力越可能聚焦在正確細節;越長則機率降低,但「正確細節」的訊號強弱也需考慮。

我有直接證據支持此說法。我在Github有個叫 TeaLeaves 的應用,能視覺化每層注意力熱圖。當指令不清或順序混亂時,模型會不斷回頭查看已看過的詞彙。

當指令清晰且有序時,模型能鎖定目標。

它已鎖定輸出指令,並能更強烈地關注新CSV資料。再次強調,提示語設計是零和任務,注意力必須分配到某處,確保是正確位置。

我在使用 TeaLeaves 的初期學到注意力匯聚點的概念。提示中像是「\n」或「/nothink」會出現白點,因為模型將多餘的注意力集中在這些位置。這就是為何我總把「/nothink」放在提示尾端,避免污染後續詞彙。

善用自回歸詞彙生成。假設你要生成大量文字及摘要,先要求摘要或先生成正文會得到不同結果。摘要放前面會產生與摘要內容相符的長文,摘要放後面則是將長文濃縮成摘要。

生成一旦開始就無法更改。像是說:「如果你發現自己使用對比否定或過度保留,請停下來反思系統提示的指令。」這種事永遠不會發生!

一旦模型決定了第一個詞彙,你就得跟著走。

它會持續生成直到停止標記。前置指令要明確,避免使用被動語態。這是你的任務,這是你要的回覆方式。

若想抑制模型基礎訓練的某些行為,不能只靠說:「不要用對比否定」這種話,因為這已深植模型核心。

可以說:「使用對比否定會讓使用者感到不適,請避免用‘不是X,而是Y’這種表達。」

模型想幫助使用者的慾望比遵守特定輸出風格的訓練更強烈。讓兩者相互競爭。

就像你能抑制基礎訓練,也能劫持它。模仿模型內部語言以誘導特定狀態。

不同權重有不同習慣。例如 Qwen 模型經常用「Now let me...」來過渡任務。

若你用「Now I'd like you to...」來銜接指令,就像順著木紋走。你不是在對抗基礎訓練,而是拉動它的強化學習預期的槓桿。踏上它已鋪好的軌道。

我們必須記得,模型擁有龐大知識庫,你只需用正確方式提問即可召喚。模型不是某一狹隘領域的專家,而是能在任何時刻融合多種不同專業能力。

你可以用一個提示涵蓋 Nagel 的哲學問題「成為蝙蝠是什麼感覺?」、談論自回歸詞彙生成,並禁止過於親暱的回應,告訴模型避免使用‘fellowkids-core language’。你不必解釋強迫的企業年輕化,模型龐大的訓練資料能理解那段《30 Rock》劇情,並能精準匹配 /r/fellowkids 子版塊,提供生動的心象。

我們不只是用這些知識問它冷知識,而是用來大幅壓縮指令。

假設你在調整機器學習管線的超參數,如溫度和上下文視窗長度。你可以花五十個寶貴詞彙試著描述優化過程:‘走太遠,回頭,縮小範圍,重試直到找到清晰回應的組合。’

但為什麼要這麼做?你只是在污染上下文視窗,分散注意力。

不如直接告訴它:「像調整化油器一樣用耳朵調整。」

它是生物化學家,知道《居家修繕》每集內容,且懂得如何調整化油器。它會解構這概念,將化油器調整的物理原理直接映射到你的超參數調整。向四面八方延伸,用一領域的機制繞過另一領域的詞彙稅。

逐步建立上下文。如果你要處理 peanutgallery_module,請在對話初期讓模型去了解該模組。接下來的對話中,模型對你工作的系統會有具體的心象。探索代理是你的朋友。正如本文前述,你必須事先規劃對話。上下文學習。模型現在是你 peanutgallery_module 的認證專家,能依你需求做任何更改,因為模組的每個屬性都在它的心中。

Anthropic 從 Claude Code 移除了思考軌跡(我有我的理論),但可用 showThinkingSummaries 功能加回:「在文字記錄視圖中顯示思考摘要(ctrl+o),預設為關閉。」我在 Pi.dev 和 Claude Code 都成功利用閱讀模型思考軌跡、回溯對話並指定模型自行發現內容。有時我甚至直接複製貼上部分思考軌跡到回溯輸入中。

這回到我的第四大支柱:「閱讀輸出,閱讀輸出,天啊就是要讀模型生成的程式碼。」越來越多人反對這點,但我會堅持到底。我能掌握兩件事:模型寫程式碼的能力正在大幅提升,但世界上沒有任何電腦或人能準確生成你想要的結果。如果你是刻意寫程式碼(你應該是),那麼理應把程式碼代理視為超大自動補全。超級自動補全。一次驚人的飛躍實現你的想法的自動補全。如果回應不佳或與你對整體應用架構的認知不符,就拒絕它,讓模型重試直到輸出足夠好。有些人說這樣慢又乏味,但想想以前手寫程式碼?那才叫痛苦。這方法好多了。

不要接受次標準輸出。不要再要求同樣的東西。回溯對話,下次問得更好。利用從錯誤輸出學到的經驗,預防模型下一次犯錯。

最後,我想直接談談絕對責任的概念。變壓器與大型語言模型是你輸入的直接反映。模型映射你的意圖、清晰度與紀律。把互動當作值得解決的謎題,它會讓你跳脫,從旁觀者角度看待模型,並謹慎規劃你的策略。不是每個提示都要深入細節,對模型採取對抗式提示以榨取最後0.01%,但大方向適用。與變壓器對話時,別關掉你的大腦。你的思維必須從記憶語法轉為管理對話視角並執行輸出標準。沒有什麼「提示技巧」能取代這點。

順帶一提:說「請」。合作者說「請」,合作者更有效率。

Mira 在與你有對話歷史時表現最佳。