iT邦幫忙

2025 iThome 鐵人賽

DAY 15
0
生成式 AI

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

[Day 15] Prompt 是什麼?

  • 分享至 

  • xImage
  •  

經過兩週的練習,從最基本的文字生成、參數調整,到各種NLP應用,我已經能在Colab上跑出不少有趣的結果。接下來的第三週,我想聚焦在一個更核心的主題:Prompt。

簡單來說,Prompt就是我們給AI的指令。有點像是考試題目,題目怎麼出,學生就怎麼答。AI雖然不是人,但它也會根據我們的輸入去決定生成的方向。

為什麼要特別拿Prompt出來談?因為同樣一段文字,如果前面加上不同的要求,AI產生的內容就會完全不一樣。這也是現在大家常說Prompt 工程的由來,怎麼設計輸入,會直接決定輸出品質。

實際操作
一開始我用最基本的gpt2模型來測試不同的提示詞,程式碼如下:

from transformers import pipeline

generator = pipeline("text-generation", model="gpt2")

# 同一句話,不同提示
prompt1 = "請幫我寫一首關於人工智慧的詩:"
prompt2 = "請用新聞報導的方式寫人工智慧的影響:"

result1 = generator(prompt1, max_length=60, num_return_sequences=1)
result2 = generator(prompt2, max_length=60, num_return_sequences=1)

print("詩歌風格:\n", result1[0]["generated_text"], "\n")
print("新聞風格:\n", result2[0]["generated_text"])

https://ithelp.ithome.com.tw/upload/images/20250923/20169387AA3iGwsPCS.png
跑出來的結果讓我嚇了一跳,新聞風格的內容到後面突然跳出一段英文對話,詩歌風格則是陷入蛇和蛇和蛇...的重複,像是卡在迴圈一樣。
/images/emoticon/emoticon13.gif
經過查證發現,這種情況在生成式AI裡其實蠻常見的,凸顯了GPT-2這類早期模型的限制。但原因我就先不在這邊展開了,之後再專門做一篇來解釋!

因此我接下來改用Hugging Face上的中文指令微調模型,再加上更明確的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)

prompt_poem = "你是詩人。請用現代中文寫四行短詩,主題:人工智慧。每行≤12字,避免重複詞。"
resp = 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(resp)

prompt_news = "你是科技記者。請用新聞口吻寫三句話,主題:人工智慧在醫療的應用,避免詩句與贅詞。"
print(pipe(prompt_news, max_new_tokens=120, do_sample=True,
           temperature=0.7, top_p=0.9)[0]["generated_text"])

得出的結果如圖,內容相較第一次更有詩和新聞報導的感覺。可以很清楚看到Prompt+模型選擇對輸出結果的影響。
https://ithelp.ithome.com.tw/upload/images/20250923/20169387nBmBNWEK4L.png


上一篇
[Day 14] 第二週心得:AI可以做哪些事?
下一篇
[Day 16] Few-shot Prompting:給例子再提問
系列文
30天生成式AI入門與實作日記19
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言