在前幾天的內容中,我們已經體驗了:
通用模型(如 GPT-4, Gemini)很厲害,但有時候回答不夠專業
RAG (Day 10) 能幫助 AI 結合外部知識
不過有些情境,RAG 還不夠,例如:
想要 AI 掌握專屬於某領域的語氣/風格
想讓 AI 產出固定格式的回覆(像是客服回信模板)
想降低每次都要附加「額外知識」的需求
這時候,就需要 微調 (Fine-tuning)。
1️⃣ 什麼是微調?
原始模型:已經在大量通用數據上訓練
微調模型:在原始模型基礎上,再用 你的專屬資料集 進行額外訓練
這樣,模型就會更符合你的業務需求。
2️⃣ 什麼時候需要微調?
✅ 適合微調的情境:
客服固定格式回覆
專業領域術語(醫療、金融、製造業專有名詞)
公司內部專屬語氣
❌ 不需要微調的情境:
一般問答(通用知識用 RAG 就足夠)
不斷變動的資訊(新聞、價格 → 適合用檢索)
3️⃣ Azure AI Foundry 的微調流程
準備資料:JSONL 格式,例如:
{"messages": [{"role": "system", "content": "你是客服助理"}, {"role": "user", "content": "產品A多久保固?"}, {"role": "assistant", "content": "產品A提供兩年保固,並包含免費維修"}]}
{"messages": [{"role": "system", "content": "你是客服助理"}, {"role": "user", "content": "如何退貨?"}, {"role": "assistant", "content": "請於30天內提出申請,並保留發票"}]}
上傳資料:到 Azure AI Foundry → Fine-tuning → 選擇基礎模型 (如 GPT-3.5-turbo)
訓練模型:系統會自動處理
部署並呼叫:之後可以像一般模型一樣使用,只是換成微調過的 deployment name
4️⃣ GCP Vertex AI 的微調流程
GCP 提供 自訂訓練 (Custom Training) 與 微調工具
適合微調 Gemini Pro、Text-Bison 等模型
操作方式:
準備資料集(格式類似 JSONL 或 CSV)
在 Vertex AI Studio 中選擇 Tune model
設定超參數(訓練次數、學習率)
訓練完成後,會得到一個新的 model endpoint,可直接部署
5️⃣ 簡單範例:使用微調後的模型
from openai import AzureOpenAI
import os
client = AzureOpenAI(
api_key=os.getenv("AZURE_OPENAI_KEY"),
api_version="2023-05-15",
azure_endpoint=os.getenv("AZURE_OPENAI_ENDPOINT")
)
response = client.chat.completions.create(
model="fine-tuned-gpt35", # 這是微調過的模型
messages=[
{"role": "user", "content": "請幫我寫一封客服回信,關於退貨流程"}
]
)
print(response.choices[0].message.content)
輸出的內容就會依照 你在微調資料中定義的格式,而不是隨機生成。
6️⃣ 小結
今天我們學會了:
微調的意義與使用時機
Azure AI Foundry 與 GCP Vertex AI 的微調流程
簡單的範例呼叫方式