快速回答:Few-shot 是什麼?

Few-shot 指的是「只給少量範例就讓 AI 學會執行新任務」。在日常使用 ChatGPT 或 Claude 時,最常見的用法是 Few-shot Prompting:在 prompt 裡附上 2-5 個輸入/輸出範例,讓模型照著格式和邏輯回答新的問題。這招對分類、格式轉換、風格模仿特別有效。

兩種 Few-shot 的差異

Few-shot 這個詞在兩個領域有不同的意思,搜尋時容易混淆。

Few-shot Learning(機器學習領域)

在傳統機器學習中,Few-shot Learning 是指用極少量的標記資料(通常 1-10 筆)就訓練出能辨識新類別的模型。這牽涉到模型架構的設計,例如 Siamese Network 或 Meta-Learning。這是研究層面的技術,一般使用者不會直接用到。

Few-shot Prompting(Prompt Engineering 領域)

大多數人搜尋「few-shot」想知道的是這個。Few-shot Prompting 是在送給 LLM 的 prompt 裡附上幾個範例,讓模型透過這些範例理解你要它做什麼。不需要訓練、不需要改模型,只要把範例寫進 prompt 就能用。

本文後續主要聚焦在 Few-shot Prompting。

白話解釋

你剛入職一家公司,主管要你寫週報。如果他只說「每週五交週報」,你可能不知道格式、長度、重點是什麼(這是 Zero-shot)。但如果他寄了兩三份前同事寫的週報給你參考,你馬上就知道要怎麼寫了(這是 Few-shot)。

LLM 的情況一樣。你給它幾個「輸入→輸出」的範例,它就能推斷出規則並套用到新的輸入上。範例數量通常 2-5 個就夠,不需要像傳統 ML 那樣餵幾千筆資料。

Few-shot vs Zero-shot vs One-shot

類型 給的範例數 適用情境 回答品質
Zero-shot 0 個 簡單、明確的任務 模型本身能力決定
One-shot 1 個 格式示範 比 Zero-shot 穩定
Few-shot 2-5 個 複雜格式、分類、風格 通常最穩定

Zero-shot 靠的是模型預訓練的知識。如果任務本身夠明確(例如「翻譯這段英文」),Zero-shot 就夠了。但如果你要的輸出格式很特殊,或者任務邏輯不太直覺,Few-shot 能大幅提升品質和一致性。

Few-shot Prompting 實戰範例

分類任務

請根據以下範例,判斷新評論的情緒:

評論:這個產品用了三個月都沒壞,很滿意
情緒:正面

評論:寄來的時候外盒壓爛了,裡面的東西也刮傷
情緒:負面

評論:還行,跟描述的差不多
情緒:中性

評論:客服態度很差,問了三次都沒人回
情緒:

模型看到三個範例後,會回答「負面」。這種方式比直接說「判斷情緒」更穩定,因為模型也學到了你要的回答格式(只輸出一個詞)。

格式轉換

把下面的 JSON 轉換成 Markdown 表格:

輸入:{"name": "Alice", "role": "Engineer", "years": 3}
輸出:
| 欄位 | 值 |
|------|-----|
| name | Alice |
| role | Engineer |
| years | 3 |

輸入:{"name": "Bob", "role": "Designer", "years": 5}
輸出:
| 欄位 | 值 |
|------|-----|
| name | Bob |
| role | Designer |
| years | 5 |

輸入:{"name": "Carol", "role": "PM", "years": 2, "location": "Taipei"}
輸出:

模型會輸出相同格式的表格,而且即使新輸入多了一個欄位(location),它也知道怎麼處理。

風格模仿

以下是飛飛寫技術文章的風格,請用同樣的方式解釋新主題:

主題:Docker
解釋:Docker 就像一個標準化的便當盒。你把應用程式和它需要的所有材料(程式庫、設定、環境變數)全部打包進去,不管送到哪台電腦上打開,裡面的東西都一模一樣。不會再有「在我電腦上可以跑」的問題。

主題:API
解釋:API 就像餐廳的菜單。你不用知道廚房裡怎麼炒菜,只要看菜單點餐(送出請求),廚房就會把做好的菜端出來(回傳結果)。菜單上沒有的,你就點不到。

主題:WebSocket
解釋:

程式碼生成

根據以下範例,把自然語言查詢轉換成 SQL:

查詢:找出所有台北的客戶
SQL:SELECT * FROM customers WHERE city = '台北';

查詢:計算每個部門的平均薪水
SQL:SELECT department, AVG(salary) FROM employees GROUP BY department;

查詢:找出過去 30 天沒有登入的使用者
SQL:

怎麼寫好 Few-shot Prompt

範例數量

2-5 個通常就夠。研究顯示,從 0 個到 2 個的品質提升最明顯,之後每多加一個的邊際效益遞減。超過 5 個範例通常不會更好,還會吃掉 token 預算。

範例品質比數量重要

一個精準、清楚的範例,比五個模糊的範例有用。確保你的範例沒有矛盾、格式一致、邏輯清楚。如果範例本身有錯,模型也會學到錯的模式。

範例要有多樣性

如果做分類任務,範例要涵蓋各種類別。只給正面範例,模型會傾向把什麼都判斷為正面。盡量讓範例覆蓋到邊界情境。

格式一致性

所有範例的格式要完全相同。如果第一個範例用「輸入:」「輸出:」,後面的也要一模一樣。格式不一致會讓模型混亂,降低回答品質。

什麼時候用 Few-shot vs Zero-shot

用 Few-shot 的情境:輸出格式很特殊(例如特定的 JSON 結構)、分類的類別定義不直覺、需要模仿特定風格、任務邏輯需要用範例才能講清楚。

用 Zero-shot 就夠的情境:簡單的翻譯或摘要、常見格式(模型本來就會的)、開放性的創意發想、單純的事實問答。

如果你不確定,先試 Zero-shot。效果不好再加範例。

限制與注意事項

Token 成本是最直接的限制。每個範例都佔 token,5 個長範例可能就吃掉幾百個 token,在高頻呼叫的場景下會累積出可觀的 API 費用。

範例順序會影響結果。研究顯示,最後幾個範例對模型的影響最大。如果你想讓某種模式的權重更高,把那個範例放最後面。

範例偏見也要注意。如果你的範例都偏向某個方向,模型也會跟著偏。例如你的分類範例裡 80% 是負面的,模型可能也會傾向給出負面判斷。

另外,Few-shot 不適合需要深度推理的任務。那種情況 Chain of Thought 會更有效。

台灣使用情境

中文 Few-shot 的效果整體跟英文差不多,但有幾個注意點。

繁體中文的分類任務中,如果你的範例用繁體,輸出也會是繁體。但如果混用簡繁,模型可能會混亂。保持範例和期望輸出的語言一致。

台灣企業常用的場景包括:客服分類(把客戶訊息分成「退貨」「詢問」「客訴」「其他」)、報告格式統一(用範例規範全公司的 AI 產出格式)、以及電商商品描述生成(給 2-3 個範例讓 AI 批量產出商品描述)。

在 Claude 和 ChatGPT 上使用中文 Few-shot 時,建議範例盡量簡短精確,避免範例本身過長導致模型注意力分散。

知識檢測

讀完文章後,測試一下你對這個主題的理解。

常見問題 FAQ

Few-shot 和 Fine-tuning 有什麼不同?

Few-shot 是在 prompt 裡附範例,不改變模型本身,隨時可以換範例。Fine-tuning 是用大量資料重新訓練模型的權重,成本高但效果持久。大多數場景 Few-shot 就夠了,只有需要大規模、高一致性的專門任務才需要 Fine-tuning。

範例要放在 prompt 的哪個位置?

放在指令和實際輸入之間。結構是:指令 → 範例 → 新輸入。有些人把範例放在 System Prompt 裡(如果範例固定不變),也有人放在 User Prompt 裡(如果範例會動態調整)。

範例太多會怎樣?

超過 5-8 個通常不會更好,反而可能讓模型混亂或超出 context window。而且 token 費用會增加。如果你覺得需要超過 5 個範例才能讓模型「懂」,可能任務本身的描述需要改進。

中文 Few-shot 效果好嗎?

在 Claude 和 GPT-4 等級的模型上,中文 Few-shot 效果很好。較小的模型(7B-13B 參數級別)可能會差一些。繁體中文和簡體中文建議不要混用。

Few-shot 可以搭配 Chain of Thought 用嗎?

可以,而且效果通常很好。在範例中不只展示最終答案,也展示推理過程,這叫 Few-shot CoT。模型會學到「先推理再回答」的模式。

Few-shot 有安全風險嗎?

主要風險是範例裡如果包含敏感資料(例如真實客戶姓名、內部數據),這些資料會進入 prompt 被模型處理。在使用第三方 API 時,確保範例中的資料已經去識別化。另外,精心設計的範例可以被當作 Prompt Injection 的一部分。

模型大小會影響 Few-shot 效果嗎?

會。參數量越大的模型,Few-shot 能力越強。GPT-4、Claude 3.5 Sonnet 以上的模型,通常 2 個範例就能學會。較小的模型可能需要更多範例,而且複雜任務的學習能力有限。

有工具可以自動產生 Few-shot 範例嗎?

有一些 prompt 管理工具(如 LangChain 的 ExampleSelector)可以根據使用者的輸入動態挑選最相關的範例。這在範例庫很大的時候特別有用,不用每次都手動選。

參考資料