Skip to content

Code2Work/data-science-project-46

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DS-46 — Müşteri Geri Bildirim Zekası

Modül: Generative AI ve LLM (ML-07) • Süre: 2-3 saat

🎯 Proje Senaryosu

Bir e-ticaret şirketinde veri bilimcisin. Elinde binlerce ham müşteri yorumu var — etiketsiz, serbest metin. Yönetici soruyor: "Bu yorumlardan ne çıkarabiliriz, nerede sıkıntı var?"

LLM ile uçtan uca bir veri işleme pipeline'ı kuruyorsun:

  1. Ham yorumları structured output ile sınıflandır (sentiment + konu + aciliyet),
  2. Tüm veriye toplu uygula,
  3. İnsan-etiketli altın kümede DOĞRULA (accuracy + confusion matrix) — "LLM'e körü körüne güvenme, ÖLÇ",
  4. Etiketlerden İÇGÖRÜ çıkar (groupby → en çok şikayet edilen konu).

Bir veri bilimcinin LLM ile gerçekte yaptığı iş budur: yapılandırılmamış metni ölçekte yapısal veriye çevirmek ve çıktıyı ölçmek.

🧩 Kullandığın Araçlar

  • Pydantic structured output şeması (Literal + Field ile kısıtlı alanlar) — ML-04
  • Prompt kurulumu — ML-02
  • Toplu (batch) etiketleme deseni — ML-06
  • sklearn accuracy_score + confusion_matrix ile doğrulama
  • pandas/Counter ile içgörü (groupby/value_counts mantığı)

🔌 LLM Nasıl Çalışıyor? (önemli)

Fonksiyonların LLM'i parametre olarak alır (llm). Bu bir fonksiyondur: prompt (str) alır, JSON string döndürür.

  • Gerçek kullanımda kendi OpenAI/Anthropic çağrını verirsin (aşağıya bak) → gerçek etiketleme.
  • Testlerde deterministik bir sahte LLM verilir → API key gerekmez, puanlama her zaman aynı.

Aynı kod, sadece verdiğin llm değişir. (Bu, profesyonel dependency injection desenidir — test edilebilir LLM kodu yazmanın yolu.)

📦 Kurulum

git clone <your-fork-url>
cd ds-46-musteri-geri-bildirim

python -m venv venv
source venv/bin/activate        # Windows: venv\Scripts\activate
pip install -r requirements.txt

python watch.py                 # otomatik test (dosya değişince)
# veya
pytest tests/test_question.py -v

🔑 Kaizu Bağlantısı — kaizu_config.py

USER_ID = 0      # ← Kaizu profilinden alıp buraya yaz
PROJECT_ID = 726 # ← Bu projeye ait, DOKUNMA

📝 Görevler (tasks/task_manager.py)

# Fonksiyon Ne yapar
0 load_data() Gömülü yorumlar + insan (altın) etiketleri
1 YorumAnaliz Pydantic şema: sentiment / konu / aciliyet
2 build_prompt(yorum) Modele verilecek prompt'u kur
3 siniflandir(yorum, llm) Prompt kur → llm çağır → şemayla parse
4 toplu_siniflandir(yorumlar, llm) Hepsini etiketle
5 dogrula(insan, llm) accuracy_score
6 karisiklik_matrisi(insan, llm, etiketler) confusion_matrix
7 en_cok_sikayet(kayitlar) Negatiflerde en çok geçen konu
8 pipeline(yorumlar, llm) Hepsini uçtan uca birleştir

🚀 Gerçek LLM ile Çalıştır (deneyim — puanlanmaz ama YAP!)

🔑 Önce API key (sadece gerçek-LLM denemesi için — testlerde GEREKMEZ)

  1. Anahtar al: platform.openai.com → Billing'e küçük bakiye yükle → API keys → Create. (Anthropic için console.anthropic.com.)
  2. .env oluştur ve anahtarını oraya koy — bu dosya .gitignore'da, commit edilmez:
    cp .env.example .env
    # .env içeriği:  OPENAI_API_KEY=sk-...
  3. Kur: pip install openai python-dotenv
  4. ⚠️ Anahtarı ASLA koda, kaizu_config.py'ye ya da git'e yazma — yalnızca .env'e. (Spending limit koymayı da unutma.)

Testler sahte LLM ile geçer; ama asıl öğrenme, kodu gerçek bir modelle çalıştırmaktır:

from dotenv import load_dotenv
load_dotenv()                       # .env'den OPENAI_API_KEY okunur
from openai import OpenAI
from tasks.task_manager import load_data, pipeline

client = OpenAI()
def gercek_llm(prompt):
    r = client.chat.completions.create(
        model="gpt-5.4-mini",                       # ucuz, toplu iş için ideal
        messages=[{"role": "user", "content": prompt}],
        temperature=0,
    )
    return r.choices[0].message.content

yorumlar, _ = load_data()
print(pipeline(yorumlar, gercek_llm))   # gerçek etiketleme + içgörü

💡 Aynı pipeline fonksiyonu hem testte (sahte llm) hem burada (gerçek llm) çalışır — işte dependency injection'ın gücü.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages