Hands-on: Sınıflandırma + Özetleme + Çeviri Görevleri
3 farklı görevde zero-shot vs few-shot karşılaştırması. Eval skoruyla performansı ölç, kendi prompt'unu iyileştir.
Şükrü Yusuf KAYA
18 dakikalık okuma
OrtaHands-on Lab: 3 Mini Proje
Bu derste 3 görev:
- Müşteri yorumları sınıflandırma (5 kategori)
- Haber özetleme (uzun → 3 cümle)
- Türkçe → İngilizce çeviri (kurumsal email)
Her birini önce zero-shot, sonra few-shot ile çalıştır. Eval skorunu kıyasla.
Proje 1: Müşteri Yorumları Sınıflandırma#
python
# 5 kategori: kalite | kargo | fiyat | iletisim | iadeimport os, jsonfrom anthropic import Anthropicfrom dotenv import load_dotenvload_dotenv() client = Anthropic(api_key=os.getenv("ANTHROPIC_API_KEY")) # Test seti — gerçek e-ticaret yorumları (anonim)TEST_SET = [ ("Ürün hızlı geldi ama paket hasarlıydı", "kargo"), ("Pahalı ama kaliteli", "kalite"), ("İade ettim para 2 hafta gelmedi", "iade"), ("Çağrı merkezi 1 saat beklettiler", "iletisim"), ("Aynı ürün başka sitede %30 ucuz", "fiyat"), ("Çok ince kumaş, fotoğraftaki gibi değil", "kalite"), ("3 günde geldi, mükemmel", "kargo"), ("Fiyatına göre fena değil", "fiyat"), ("Mail attım 5 gün cevap yok", "iletisim"), ("İade prosedürü çok karmaşık", "iade"),] def classify_zero_shot(text): prompt = f"""Aşağıdaki yorumu şu kategorilerden birine ata:kalite | kargo | fiyat | iletisim | iade Sadece kategori adını yaz. Yorum: "{text}"""" r = client.messages.create( model="claude-haiku-4-5-20251001", max_tokens=10, temperature=0, messages=[{"role": "user", "content": prompt}], ) return r.content[0].text.strip().lower() def evaluate(classifier_fn): correct = 0 for text, expected in TEST_SET: pred = classifier_fn(text) ok = expected in pred if ok: correct += 1 print(f" {'✓' if ok else '✗'} {text[:40]:42} | beklenen={expected:10} | tahmin={pred}") return correct / len(TEST_SET) print("=== Zero-shot ===")acc = evaluate(classify_zero_shot)print(f"Doğruluk: {acc*100:.0f}%") Önce zero-shot baseline. Skoru not et.
python
# Aynı görev — few-shot ileimport osfrom anthropic import Anthropicfrom dotenv import load_dotenvload_dotenv() client = Anthropic(api_key=os.getenv("ANTHROPIC_API_KEY")) FEW_SHOT_EXAMPLES = [ ("Çok hızlı geldi, kutu sağlam", "kargo"), ("Beklenen kaliteyi karşılamadı", "kalite"), ("Para iadesi 1 ay sürdü", "iade"), ("Destek bana cevap vermedi", "iletisim"), ("Fiyat çok abartılı", "fiyat"),] def classify_few_shot(text): examples = "\n".join(f'- "{i}" → {o}' for i, o in FEW_SHOT_EXAMPLES) prompt = f"""Müşteri yorumlarını şu kategorilerden birine ata:kalite | kargo | fiyat | iletisim | iade Örnekler:{examples} Şimdi sınıflandır:- "{text}" →""" r = client.messages.create( model="claude-haiku-4-5-20251001", max_tokens=10, temperature=0, messages=[{"role": "user", "content": prompt}], ) return r.content[0].text.strip().lower().replace("\"", "").rstrip(".") # (TEST_SET ve evaluate fonksiyonu önceki snippet'ten)# print("=== Few-shot ===")# acc = evaluate(classify_few_shot)# print(f"Doğruluk: {acc*100:.0f}%") Few-shot ile aynı test. Doğruluk farkı?
Proje 2: Haber Özetleme#
python
# Zero vs few-shot özetleme — kalite skoru LLM-as-judge ileZERO_SHOT = "Aşağıdaki haberi 3 cümlede özetle. Her cümle 15 kelime altı." FEW_SHOT = ZERO_SHOT + """ Örnek özetler:Haber: [Türkiye, ABD ile yeni bir ticaret anlaşması imzaladı...]Özet: Türkiye, ABD ile imzalanan yeni anlaşmayla 2 milyar dolarlık ticaret hacmi hedefliyor. Anlaşma tarım ve teknoloji sektörlerini kapsıyor. İlk yansımalar 6 ay içinde beklenir. Haber: [Yeni nesil GPU kıtlığı sürüyor...]Özet: NVIDIA H200 GPU'lar 2026 sonuna kadar yetersiz kalmaya devam edecek. AI şirketleri alternatif tedarikçilere yöneliyor. Fiyatlar son 6 ayda %40 arttı.""" # Burada bir LLM-judge ile her iki versiyonu skorla:# JUDGE_PROMPT = "Hangi özet daha bilgilendirici? A vs B?"Özetleme few-shot şablonu (production'da uyarla)
Proje 3: Çeviri (Türkçe → İngilizce, Kurumsal)#
Zero-shot#
Aşağıdaki Türkçe metni İngilizce'ye çevir. Tone: profesyonel B2B email. Metin: "{{tr_metin}}"
Sonuç: Çoğunlukla iyi ama "regards" stili tutarsız.
Few-shot (3 örnek)#
Türkçe → İngilizce çeviri (B2B email tone). Örnekler: TR: "Saygılarımla, ekibim sizi arar." EN: "Best regards, my team will reach out." TR: "Toplantı için müsaitlik durumunuzu bildirir misiniz?" EN: "Could you let us know your availability for a meeting?" TR: "{{tr_metin}}" EN:
Sonuç: Tone çok daha tutarlı.
Lab kapanış egzersizi: Yukarıdaki 3 projeyi kendi makinende çalıştır. Eval skorlarını bir CSV'ye yaz: . Çoğu zaman few-shot %5-15 daha iyi. Maliyet farkı: ~%30 daha pahalı (in tokens).
{task, strategy, accuracy}Yorumlar & Soru-Cevap
(0)Yorum yazmak için giriş yap.
Yorumlar yükleniyor...
İlgili İçerikler
1. Temeller — Yapay Zekâ ve LLM'lere Giriş
Bu Eğitim Hakkında ve Verimli Çalışma Yöntemi
Öğrenmeye Başla1. Temeller — Yapay Zekâ ve LLM'lere Giriş
Yapay Zekâ → Üretken AI → LLM: Bağlamsal Harita
Öğrenmeye Başla1. Temeller — Yapay Zekâ ve LLM'lere Giriş