Fine-tuning vs Prompting
Dua cara mengkustomisasi behavior LLM. Hampir selalu mulai dengan prompting — fine-tuning hanya jika prompting tidak cukup.
Decision Tree
Butuh kustomisasi? → Mulai dengan prompting
↓ Tidak cukup?
Tambahkan few-shot examples di prompt
↓ Masih tidak cukup?
Coba RAG (tambah knowledge)
↓ Masih tidak cukup?
Fine-tune model
Kapan Fine-tune?
- Style/tone — Model harus menulis dalam gaya sangat spesifik yang sulit di-prompt
- Domain knowledge — Terminologi medis, legal, teknis yang sangat niche
- Format output — Selalu output dalam format tertentu tanpa instruksi panjang
- Latency — Prompt pendek = response lebih cepat
- Cost — Prompt panjang setiap request vs fine-tune sekali lalu prompt pendek
Fine-tuning Process
// 1. Siapkan training data (JSONL format)
{"messages": [{"role": "system", "content": "..."}, {"role": "user", "content": "..."}, {"role": "assistant", "content": "..."}]}
// 2. Upload training file
const file = await openai.files.create({
file: fs.createReadStream("training.jsonl"),
purpose: "fine-tune",
});
// 3. Create fine-tuning job
const job = await openai.fineTuning.jobs.create({
training_file: file.id,
model: "gpt-4o-mini-2024-07-18",
});
// 4. Use fine-tuned model
const response = await openai.chat.completions.create({
model: "ft:gpt-4o-mini:my-org::abc123", // custom model ID
messages: [...],
});
Data Requirements
- Minimum ~10 examples, recommended 50-100+ for good results
- High quality > high quantity
- Diverse examples covering edge cases