National Central University
Uedu Main Site
Explore Uedu
Student Console
Register as Member/Login
Research Informed Consent Center
Survey Center
Educational Big Data Challenge
Claim or create a course
Try an AI Scenario Task
Support & Messages
Uptime Data

UeduGPTs

--

Jupyters

3

Local AI

--

Uedu Code

--

中央大學 AQI 72 24°C PM2.5 13
AI Reply Desktop Notifications

Show a desktop notification when the AI TA finishes replying

Chat Message Notifications

Notify me when classmates post messages in the forum

Sound notification

Play an alert sound whenever there is a new notification

Unit 06

Few-shot 與逐步推理

給範例、拆步驟,以及它們什麼時候沒有幫助
Interaction實作 20 minute(s)

Learning Objectives

  • 用 user/assistant 訊息對在提示詞裡放範例(few-shot)
  • 要求模型列出步驟,比較答對次數與 token 用量
  • 舉出範例與步驟沒有幫助的情況
  • 用同一題多跑幾次、用標註資料算準確率,而不是只看一次回答

兩個常見的技巧,以及怎麼判斷它們有沒有用

上一課把提示詞寫清楚。這一課看兩個常見的技巧:

  • Few-shot: 在提示詞裡放幾個「輸入 → 正確輸出」的範例。Brown 等人 2020 年介紹 GPT-3 的論文 Language Models are Few-Shot Learners,就是用文字提示和少量示範來指定任務,不重新訓練模型。
  • 逐步推理(chain-of-thought): 讓模型先寫出中間步驟再給答案。Wei 等人 2022 年的論文 Chain-of-Thought Prompting Elicits Reasoning in Large Language Models 在提示詞裡放含有推理過程的範例,在算術、常識與符號推理的任務上看到明顯的進步。

這兩篇研究用的是當時的模型,結果不能直接套到今天的模型。我們的範例也比較簡單:逐步推理只加一句指令,沒有放完整的範例。

所以這一課不直接告訴你「這樣寫比較好」,而是用 gpt-5.6-luna 實際測,也測它們沒有幫助的情況。回答是 2026-11-03 錄下來的真實輸出。

逐步看:範例有用的任務與沒用的任務

範例是放在 messages 裡的 user、assistant 訊息對,看起來就像之前的對話。

這裡有兩個任務:課表代碼的格式是我們虛構的,只看文字猜不到;分信的類別意思很清楚。

範例適合用來說明格式與規則

任務 沒範例 有範例
課表代碼(格式是自訂的) 3 次都不對,還有三種不同格式 3 次都對
分信(類別意思清楚) 4 / 4,輸入 247 tokens 4 / 4,輸入 471 tokens

第一個任務,範例說明了難以用文字描述的格式。第二個任務,模型本來就會,範例只讓輸入的 token 接近翻倍,而且每一次呼叫都要付這個費用。

接下來看比較麻煩的情況:標準是我們自己定的,而且不容易一句話說完。

逐步看:三種範例,各跑一輪 6 題

系辦要決定信的處理順序。我們虛構一個標準:三天內有期限是「今天」,三天後才到期是「本週」,沒有期限是「有空」。標準沒有寫進提示詞,只靠範例傳達。

第三組範例全部是「今天」。先猜猜看:它的結果應該最差嗎?

逐步看:同樣兩句各跑 5 次

上一個範例的 6 / 6 是真的嗎?挑出三種寫法答案不同的其中兩句,每種寫法各跑 5 次,把答案數一數。

另外說明:上一個範例原本有 8 句,為了控制範例大小才刪成 6 句,刪掉的兩句三種寫法都答對。8 句時的分數是 5 / 8、6 / 8、8 / 8,所以差距沒有 6 句時看起來那麼大。

只看一次會看錯

把上面的輸出整理成答對次數:

範例 「成績申訴」(正解本週) 「英文姓名拼錯」(正解有空) 合計
沒範例 2 / 5 0 / 5 2 / 10
平均的範例 1 / 5 0 / 5 1 / 10
只有今天的範例 5 / 5 1 / 5 6 / 10

這個結果有幾點值得注意:

  • 6 / 6 有運氣成分。 「英文姓名」這句在第一輪答對,多跑幾次只有 1 / 5 答對。
  • 我們的預期沒有出現。 我們原本以為全部是「今天」的範例會把答案帶偏,在這個測試裡沒有看到。這不代表範例不會帶來偏差,只代表這幾句、這幾次沒有看到,原因我們也不清楚。
  • 放了平均的範例也沒有比較好。 只看這兩句,它甚至沒有贏過沒範例。

這裡只有 2 句、每組 5 次,而且是挑過的題目,不足以下結論說哪一種寫法比較好。比較提示詞時,要用夠多的標註資料、每種寫法跑多次、算出數字,第 20 課會把這件事做完整。

逐步看:要求列步驟,答對與費用怎麼變

一題要多步計算(84.78),一題很簡單(6)。每題每種指令各跑 5 次。注意答對次數,也注意輸出用了多少 token。

列步驟有幫助的地方,以及它的費用

題目 指令 答對 5 次的輸出 token
加權平均 只回答數字 0 / 5 30
加權平均 列步驟 4 / 5 411
學分相加 只回答數字 5 / 5 20
學分相加 列步驟 5 / 5 80
  • 這一題多步驟的計算,列步驟有明顯的差別。 不准寫過程時,五次答案都不對,彼此也不一致。
  • 簡單的任務沒有差別, 只是輸出變成 4 倍。
  • 列了步驟還是可能錯: 其中一次算成 83.22。
  • 真的要計算,就交給程式。 加權平均用 Python 算一定對,也不花 token;第 15 課會讓模型呼叫工具來算。

順帶一提,「最後一行只寫答案」模型也不是每次都照做,5 次裡有一次寫成「答案:6」。程式解析時要留意,下面的實作題會處理這種情況。

提示詞不是越長越好

長度本身不是目標。每多一段都要回答:它解決了哪一個實際看到的錯誤?

情況 建議
模型本來就做得好 不加範例也不加步驟,省 token
格式或標準難以用文字描述 加幾個範例,再用標註資料確認有改善
多步驟的推理 要求列步驟,並把答案放在固定位置
精確計算 用程式算,不要靠模型

修改的流程:找出答錯的例子 → 改一處 → 用同一批資料重跑多次 → 看數字。一次改很多處,就不知道是哪一處有效。

實作:計算分類準確率

比較提示詞要靠數字。這一題不呼叫模型,ANSWERS 是寫死的回答字串。

完成兩個函數:

  • normalize(answer):去掉前後空白,再拿掉 類別: 和 。。
  • accuracy(golds, answers):逐題比較清理後的答案與正解。答錯時用起始碼註解裡的 print 印出來,最後回傳答對的比例。
你的輸出
預期輸出

小測驗:什麼時候有幫助

1.

Few-shot 的範例在 Chat API 裡通常怎麼放?

2.

「分信」任務裡,沒範例和有範例都是 4 / 4,這代表什麼?

3.

第一輪 6 題,「只有今天的範例」答對 6 題。接著該怎麼做?

4.

加權平均的題目,模型列步驟時 4 / 5 答對。實際應用裡最可靠的做法是什麼?

5.

下面的程式會印出什麼?

gold = ["A", "B", "C", "D"]
got = ["A", "C", "C", "A"]
correct = 0
for i in range(len(gold)):
    if got[i] == gold[i]:
        correct += 1
print(correct / len(gold))
第 1 次作答

重點整理

  • Few-shot 用 user/assistant 訊息對放範例,適合說明難以描述的格式與規則;模型本來就會的任務,範例只是多花 token。
  • 要求列步驟對多步驟的題目有幫助,代價是輸出變多;簡單題沒有差別。列了步驟還是可能錯,精確計算要交給程式。
  • 提示詞不是越長越好。每一段都要對應實際看到的問題。
  • 同一題要多跑幾次,用標註資料算出數字。一次的滿分可能是運氣,直覺也可能猜錯。

下一課: 開始寫程式呼叫 Chat API,看 messages 與回應物件的細節。

這一課完成了!
Next lesson:Chat API
你目前沒有登入,學習進度只存在這個瀏覽器。 Login 後,進度會跟著帳號,換電腦也看得到。