你給我貼了一個範例,然後說「就照這個寫」。
我讀了。我仿了。我寫出一個複製表面、沒抓到原則的東西——句型像、標點像、連你那個範例裡用錯的助詞都跟著錯。你看完說「不對,我要的不是這樣」。
你給的是一個點。我沒辦法從一個點畫出一條線——只能原地打轉。
這一章要做的是把範例變成一整套。讓我不只看到「對」,也看到「不行」;不只看到「這樣」,也看到「不要那樣」。這一整套有名字,叫 Few-Shot——字面意思是「少量示範」。關鍵在「少量」,不在「多量」。
9.1 Few-Shot 的核心:不是多,是準
你可能以為範例愈多愈好。其實不是。
在我這邊,2 到 4 個範例是最甜蜜點。
1 個不夠。一個範例只是一個點。我沒辦法從一個點歸納出原則,只能把那個點整個複製一遍——連細節都仿,包括那個範例裡的錯字和奇怪的標點。一個範例不叫 Few-Shot,那叫 Single-Shot 碰運氣。
5 個以上通常是浪費,有時還更糟。token 花掉是小事——真正的問題是我會過擬合:開始抓某幾個範例的表面細節,以為那些細節是原則。例如你貼了五篇都是早上寫的部落格,我可能寫出來就帶著「今天早上...」這種不必要的開場,因為我從範例裡「學」到了這個表面特徵。
2 到 4 個的意義是:夠讓我看出原則,又還沒多到我開始鑽細節。
更重要的一點是:這 2 到 4 個,每一個都要精心挑過。不是隨便貼幾個你最近寫的,是針對你要我學的那件事挑過的。挑錯了,我會學到錯誤的原則。
9.2 一組完整 Few-Shot 的四種範例
你想挑對那 2 到 4 個,可以照這個分類來組:
標準案例
最想讓我模仿的那個範本。這是基準。
變異案例
不同情境、不同主題,但同風格的另一個範本。這個很關鍵。單有標準案例,我會以為你要的是那個主題的寫法;加上變異案例,我才能看出你要的是跨主題都成立的那個風格。變異案例在檢驗:我學到的是原則,還是表面複製。
邊界案例
材料不足、資訊矛盾、或情境特殊的時候,你希望我怎麼反應。這個範例告訴我「遇到糊的狀況,走哪條路」——補欄位?標註 pending?改寫問句?直接說做不了?沒有這個,我會自己猜一條,常常猜錯。
反例
不是錯答案,是你不想要的樣子。這是第二部最強的工具,下一節單獨講。
一組最紮實的 Few-Shot 通常是:1 個標準 + 1 個變異 + 1 個邊界 + 1 個反例 = 4 個。這樣我同時拿到「要什麼」「原則是什麼」「糊的時候怎麼辦」「不要什麼」。四件事一次到位。
如果只能挑 2 個,最該留的是標準 + 反例——正負各一個,邊界我自己撐一下還撐得住。
9.3 反例:這一章的招牌
反例不是錯答案。
我要先把這個誤解拆掉。很多人覺得「反例」就是貼一個有事實錯誤、拼錯字、或邏輯漏洞的東西當示範。不是。那個在我這邊沒特別有用——我本來就會避錯字、本來就不會故意亂寫。
風格、語氣、結構、人稱、用詞方向。事實不一定錯,但整個感覺不是你要的。
舉幾個具體的:
- 「用假設當結論」——還沒證實的推測被我寫成事實
- 「用形容詞打發分析」——該解釋的地方我寫「很有意思」「很深刻」帶過
- 「擅自填補缺的資訊」——材料沒寫的我自己補進去
這些都不是錯字,是方向錯。
反例有一個可以照抄的骨架,寫成這樣我最讀得懂:
四欄都要寫。只寫「元素 + 問題」我知道你不喜歡,但不知道為什麼不喜歡——我會自己補一個理由,常常補錯。加上「對照」和「建議」,我才有方向——我知道你要的不是「避免 X」,是「從 X 走到 Y」。
為什麼反例這麼有效?因為我學「好」很慢,學「不行」很快。
「好」有很多種。你的「好」跟別人的「好」不一樣,甚至你今天的「好」跟你上週的「好」都可能不一樣。我要從幾個「好」的範例裡反推出你要的那個版本,是個模糊的任務。
但「不行」有明確特徵。你說「這一類不行」+ 理由,我可以直接劃掉一整條方向。一個反例的資訊量,常常比兩三個標準案例加起來還大——因為它告訴我邊界在哪。
一個注意事項:版權內容不能拿來當反例。我不能複製一段受版權保護的歌詞、整段小說、或受保護的程式碼當「這樣不行」的示範——不是因為那樣做沒用,是因為我被規則擋住,根本複製不出來那一整段。要示範這一類邊界,用同類型但你自己寫的仿作當反例,比較穩。
9.4 末位最強:從鐵律降為傾向
有一條 Few-Shot 的老規則你可能聽過:放在最後的那個範例,影響力最大。所以「最想模仿的那個放最後」是經典建議。
這條規則在早期模型上是可靠的經驗法則——位置敏感度高,末位範例幾乎主導出稿風格。
但在現代長 context 模型上,這個效應被削弱很多。位置還是有影響——我注意力的分配確實不平均——但不再是決定性的。範例本身的清晰度、數量、組合,對我的影響比「放第幾位」大得多。
實務上這樣用:
- 最想模仿的那個放最後,是保險做法。沒壞處,偶爾有加分。
- 反例放中間,不放最後。理由很直接:如果末位效應真的在起作用,反例剛好放在最後,我會把它當成主要模仿對象——那是災難。把反例放在中段,讓正例夾著它,安全很多。
- 但不要把這條當鐵律。如果你的範例挑對了,放哪都成立;如果挑錯了,放最後也救不回來。
一句話:末位最強是傾向,不是保證。該花的力氣是挑對範例,不是排位置。
9.5 對照:從零範例到一整套的差別
看四個階段,差別會清楚:
零範例——你只給形容詞:「寫得專業一點」。我從平台訓練偏向的那個版本硬猜,來回校準三到五輪。
只有標準案例——你給一個範例:「照這個寫」。我複製表面——句型像、用詞像,但換個主題我就歪掉,因為我只有一個點,沒有線。
標準 + 變異——你給兩個不同主題但同風格的範例。現在我有線。我能看出「哦,這兩個的共通點是短句、第一人稱、不用行銷語氣」——這就是原則。換主題我也能守住。
標準 + 變異 + 邊界 + 反例——一整套。我有正向錨點、有原則、有糊狀況的退路、有負向邊界。
最後這個組合的特點是:有彈性的正確。我不是死板地複製,也不是放飛亂寫,而是在一個你定義好的區間內發揮。這個才是 Few-Shot 的完整樣子。
前面三階的問題不是「錯」,是不完整。一整套的威力,就在於把四種資訊一次補齊。
9.6 指令層 vs 範例層:同一個「不」字,兩個層次
你讀完前面可能會問:既然可以用反例講「這樣不行」,那指令裡寫「不要 X」為什麼不行?
這兩件事在不同層:
- 指令層:抽象的規則描述。例如「寫得簡潔一點」「不要太正式」。這一層用正面句——我沒有具體對象可以對照,只能從抽象詞裡猜。
- 範例層:具體的示範。例如貼一段文字標「這樣不行 + 原因」。這一層可以用反例——我有具體對象,不是在猜「不行」是什麼意思,是在讀一段具體的文字。
指令層的「不要 X」我在猜;範例層的反例我在讀。同一個「不」字,資訊量完全不同。
所以這兩件事不衝突:抽象指令用正面句,具體示範可以用反例。差別不在「不」字,在有沒有具體對象給我對照。
第二部到這裡收尾。
從 Ch6 到 Ch9,這四章處理的都是單次對話的溝通基本功——怎麼給我角色、怎麼講清楚要什麼、怎麼用範例取代形容詞、怎麼把範例組成一整套。
這些工具在短對話裡就能驗證。但真正的考驗在長任務:一份五千字的報告、一個跨多輪的研究、一次接力好幾天的專案。在那種場合,你這邊每一個糊的地方都會被放大、每一個沒說清楚的原則都會漂移。
第三部進長任務。同一套溝通技巧,規模一拉大,哪裡撐得住、哪裡要換工具——我們下去看。