2026-09-09 13 min read -- 次瀏覽
LLM 常見參數白話指南:在溫度與亂數之間找到平衡
Temperature、Top-P、RepeP 等參數一次講清楚,附上實際調參對照案例。
📌 本篇文章重點
- Temperature 控制「隨機性」是最大誤解——它控制的是機率分布的平滑度。
- top_p(核採樣)與 top_k 二選一使用,別貪心全疊。
- 選參數前先想任務:要「穩定正確」還是「豐富多樣」。
- 用固定 seed 做實驗,才能一次只驗證一個變數。
一、為什麼這篇值得看?
如果你只會把温度調成 0.7 然後祈禱,那你對模型的掌控力大概只有三成。Temperature、top_p、top_k 是決定輸出的最後一道關卡,理解它們,你才能把「隨機」變成「可控」。
二、核心概念,3 分鐘搞懂
模型輸出的不是「一個字」,而是「每個候選字的機率」。採樣參數決定從這個機率分布裡怎麼挑字:
- Temperature:改寫機率分布。低 → 分布更尖,傾向最高機率字;高 → 分布更平,冷門字也有機會。
- top_k:只從機率最高的前 K 個字裡挑。
- top_p:從「累積機率到達 p」的一組字裡挑(動態截取)。
💡 一句話總結
Temperature 決定「乖」還是「野」,top_k/top_p 決定「候選名單」多長。兩者配合,你就同時控制個性與範圍。
三、動手實作:3 步實驗出你的參數
Step 1
鎖住 seed,一次只動一個變數
Python
def generate(text, temperature, top_p=None, top_k=None, seed=42):
resp = client.chat.completions.create(
model="qwen2.5:7b",
messages=[{"role": "user", "content": text}],
temperature=temperature,
top_p=top_p,
top_k=top_k,
seed=seed, # 支援 seed 的 API 才有效
)
return resp.choices[0].message.content
Step 2
依任務類型選初始值
| 任務 | temperature | top_p |
|---|---|---|
| 程式碼、數學、JSON 輸出 | 0–0.3 | 0.9 |
| 客服、摘要、翻譯 | 0.3–0.6 | 0.9 |
| 文案、故事、創意發想 | 0.7–1.0 | 0.95 |
| 腦力激盪、詩與歌詞 | 1.0–1.5 | 1.0 |
Step 3
觀察輸出長相再微調
- 答案反覆跳題 → 調低 temperature。
- 輸出一成不變、像唸稿 → 調高 temperature。
- 出現不知所云的怪字 → 調低 top_p(收緊候選名單)。
- 某些 API 一次只能吃一個 top 參數——優先使用 top_p。
⚠️ 常被忽略
「重複性」不完全由這三個參數管。還受 repetition_penalty、frequency_penalty 影響。先調好採樣,再考慮去重懲罰。
四、三個參數的實際效果對照
| 設定 | 輸出傾向 | 適合 |
|---|---|---|
| temp 0, top_p 1 | 幾乎每次同一個答案 | 測試、工廠流程 |
| temp 0.7, top_p 0.9 | 穩定但帶變化 | 一般聊天與寫作 |
| temp 1.2, top_p 1 | 發散、偶爾出彩 | 命名、標語、創意 |
五、常見問題(FAQ)
Q1temperature 設 0 就完全確定嗎?
在支援 seed 且關閉採樣時接近如此,但浮點運算與批次等因素仍可能造成細微差異。要「絕對確定」,正規做法是測完後驗證固定輸出。
Q2top_k 和 top_p 可以一起開嗎?
可以但意義不大。兩者功能重疊,多數實作建議「二擇一」,且優先使用 top_p(動態、更平滑)。
Q3換了模型要不要重調?
要。不同模型的機率分布不同,同一組參數換模型後效果可能完全不同。換模型後先用小基準盤重新校準。
總結
採樣參數不是玄學口訣,是你對 AI 輸出的實體遙控器。從「鎖 seed、一次一個變數」的實驗紀律開始,很快就能調出你專屬的「穩」與「活」。