iT邦幫忙

2025 iThome 鐵人賽

DAY 16
0
生成式 AI

30天生成式AI入門與實作日記系列 第 16

[Day 16] Few-shot Prompting:給例子再提問

  • 分享至 

  • xImage
  •  

今天要介紹的Few-shot Prompting,簡單來說,就是在提問前,先給AI幾個範例,讓它有個參考模式可以模仿。這樣它就比較能按照我們預期的格式來生成。

實際操作
這次我在 Prompt 裡先放入一首詩和一段新聞作為範例,然後再請模型分別生成新的詩和新聞。

from transformers import AutoTokenizer, AutoModelForCausalLM, pipeline

model_id = "Qwen/Qwen2-1.5B-Instruct"
tok = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(model_id, device_map="auto", torch_dtype="auto", trust_remote_code=True)
pipe = pipeline("text-generation", model=model, tokenizer=tok)

# Few-shot Prompting:詩歌
prompt_poem = """請模仿以下格式生成詩。

範例詩歌:
人工智慧如晨曦,
照亮人類新旅程。
科技織出未來夢,
機器與心共前行。

現在請寫一首新的現代中文詩,
主題:人工智慧,
格式:四行,每行不超過12字,避免重複詞。
"""

resp_poem = pipe(prompt_poem, max_new_tokens=120, do_sample=True,
                 temperature=0.7, top_p=0.9,
                 repetition_penalty=1.1, no_repeat_ngram_size=4)[0]["generated_text"]

print("生成詩歌:\n", resp_poem, "\n")

# Few-shot Prompting:新聞
prompt_news = """請模仿以下格式生成新聞。

範例新聞:
根據最新研究,人工智慧正在改變醫療產業。
專家指出,AI已能協助醫師分析病患影像。
政府宣布投入更多資源,加速AI臨床應用。

現在請寫一段新的新聞報導,
主題:人工智慧在醫療的應用,
格式:三句話,避免詩句與贅詞。
"""

resp_news = pipe(prompt_news, max_new_tokens=120, do_sample=True,
                 temperature=0.7, top_p=0.9)[0]["generated_text"]

print("生成新聞:\n", resp_news)

詩歌得出的結果:
https://ithelp.ithome.com.tw/upload/images/20250928/20169387ctRetB92ol.png
新聞得出的結果:
https://ithelp.ithome.com.tw/upload/images/20250928/2016938763AnLfT6J8.png

可以看到,和昨天的結果相比,這次的輸出明顯收斂很多。詩歌的格式乾淨、新聞的語氣也符合報導風格。這就是Few-shot Prompting的威力:只要先給AI參考範例,它就比較知道該模仿的模式。

不過要注意,這個結果也是建立在使用合適的模型(Qwen Instruct)之上。單靠Few-shot雖然能拉一把一些相當舊的模型(GPT-2),但模型本身的理解力仍然很重要。


上一篇
[Day 15] Prompt 是什麼?
下一篇
[Day 17] 如何從Hugging Face申請 Token及下載需要授權的模型
系列文
30天生成式AI入門與實作日記19
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言