Text-to-SQL / DENEY_KILAVUZU.md
SevdanurGenc's picture
Upload 466 files
a72d1cf verified
|
Raw History Blame Contribute Delete
14.6 kB
---
title: "Tablo2SQL-TR Deney Kılavuzu"
subtitle: "LLM deneylerini kendi bilgisayarında çalıştırmak için adım adım yönerge"
cover: "no"
---
# Bu kılavuz ne için?
Makaledeki sonuçlar şimdiye kadar yalnızca kural tabanlı motorla alındı. Bu kılavuzla aynı deneyleri **büyük dil modelleriyle (LLM)** çalıştıracaksın. İki deney var:
| Deney | Ne ölçer? | Çıktı klasörü |
|---|---|---|
| **1. Makale protokolü** | 99 soruluk ana test kümesi beş koşulda: döngü açık/kapalı, statik denetim kapalı, sayılar metin, İngilizce yerel ayar. Ardından pilot, stres kümesi ve ağır kümenin 200 soruluk hızlı alt kümesi. | `outputs/llm/<sağlayıcı>_<model>/` |
| **2. Gerçek belge pilotu** | 7 kurumdan 18 gerçek belge üzerinde 189 soru | `gercek_pilot/sonuclar/` |
Her iki deneyi de seçilen **her model için birer kez** çalıştıracaksın. Kodda hiçbir değişiklik yapma; ayrıntısı Bölüm 9'da.
**İki kurulum yolu var; birini seç:**
| | A. Sanal ortam (başlatıcı) | B. Docker |
|---|---|---|
| Kurulum | `baslat.bat`'a çift tıkla | Docker Desktop'u kur, `docker_baslat.bat`'a çift tıkla |
| Paket sürümleri | Başlatıcı uygun sürümleri kurar; küçük farklar olabilir | Makaledeki sonuçların alındığı sürümlerle **birebir aynı** |
| Kime uygun | Docker kullanmayanlara | Docker'ı zaten kullananlara; en güvenilir tekrar üretim |
| Bölümler | 3, 6, 7, 8 | 3B, 7B, 8B |
Deney komutları iki yolda da terminalden çalıştırılır (Bölüm 6). İki yolda da Bölüm 2 (dosyalar), 4 (model bağlantıları), 5 (model seçimi), 9 (kurallar) ve 10 (geri gönderim) aynıdır.
# 1. Gerekenler
- **Bilgisayar:** Windows 10/11, macOS ya da Linux. En az 8 GB RAM ve 3 GB boş disk.
- **Python 3.10, 3.11 ya da 3.12.** Yoksa başlatıcı kurmayı önerir. Windows'ta kurulum sırasında **"Add python.exe to PATH"** kutusunu işaretle.
- **İnternet bağlantısı:** Paket kurulumu ve bulut modelleri için gerekli.
- **B yolu için:** [Docker Desktop](https://www.docker.com/products/docker-desktop/). A yolunda gerekmez; B yolunda Python kurmak gerekmez.
- **API anahtarları ve kredi:**
- Claude için: [console.anthropic.com](https://console.anthropic.com/settings/keys)
- OpenAI için: [platform.openai.com](https://platform.openai.com/api-keys)
- Hesaplarda kullanım kredisi tanımlı olmalı.
- **Yerel model için Ollama:** [ollama.com/download](https://ollama.com/download).
- En az 8 GB belleği olan bir ekran kartı önerilir.
- Ekran kartı yoksa çalışır ama deneyler çok uzun sürer (bir günden fazla olabilir).
# 2. Dosyaları yerleştir
Sana iki dosya gelecek:
1. **`tablo2sql.zip`:** Uygulama, test kümeleri ve betikler.
2. **`gercek_belgeler.zip`:** 18 gerçek belge (PDF, yaklaşık 115 MB).
Adımlar:
1. `tablo2sql.zip`'i kısa, boşluksuz ve Türkçe karaktersiz bir yola aç. Örneğin Windows'ta `C:\tablo2sql`, macOS'ta `~/tablo2sql`.
2. `gercek_belgeler.zip`'i **`tablo2sql/gercek_pilot/test_belgeler/`** klasörünün içine aç. Klasörde 18 PDF olmalı ve doğrudan bu klasörde durmalı, alt klasörde değil. Dosya adlarını değiştirme.
```
tablo2sql/
├── baslat.bat / baslat.command / baslat.sh
├── scripts/llm_deneyi.py ← Deney 1
├── gercek_pilot/
│ ├── calistir.py ← Deney 2
│ ├── db_kur.py
│ └── test_belgeler/ ← 18 PDF buraya
└── ...
```
# 3. Kurulum (A yolu: sanal ortam)
1. Başlatıcıya çift tıkla:
- Windows: `baslat.bat`
- macOS: `baslat.command`
- Linux: terminalde `./baslat.sh`
2. İlk açılışta başlatıcı `.venv` adında bir sanal ortam kurar ve gerekli paketleri indirir. Bu 5–10 dakika sürebilir.
3. Kurulum bitince tarayıcıda uygulama açılır. Terminal penceresini kapatma; uygulama o pencere açık kaldıkça çalışır.
# 4. Model bağlantılarını kur
Uygulamada sağ üstteki **🔌 Bağlantılar** düğmesine bas.
- **Claude:** API anahtarını yapıştır ve **Kaydet ve senkronize et**'e bas. Kart *Bağlı · N model* olmalı.
- **OpenAI:** Aynı şekilde anahtarı yapıştır. Sunucu adresi alanını boş bırak.
- **Ollama:**
1. Ollama uygulaması açık olmalı. Kart *Bağlı* görünmüyorsa Ollama'yı başlat ve **Modelleri senkronize et**'e bas.
2. **Hangi Ollama modeli?** bölümünü aç, `qwen2.5-coder:7b`'yi seç ve **⬇️ Model indir**'e bas. Yaklaşık 4,7 GB indirilir.
3. Hesaplama aygıtını **Otomatik** bırak.
Anahtarlar `tablo2sql/ayarlar/tablo2sql-ayarlar.json` dosyasına kaydedilir ve deney betikleri anahtarı oradan okur. **Bu dosyayı kimseyle paylaşma.** İçinde anahtarlar düz metin olarak durur.
# 5. Modelleri önceden seç ve not et
Hakemler, birkaç model deneyip yalnızca en iyisinin raporlanmasını kabul etmez. Bu yüzden **çalıştırmaya başlamadan önce** üç modeli seç ve aşağıdaki tabloya yaz. Sonra bu üçünün hepsini, sonuç ne çıkarsa çıksın, çalıştır.
| Rol | Sağlayıcı | Model kimliği |
|---|---|---|
| Güçlü bulut modeli | claude | ………………………… |
| İkinci bulut modeli | openai | ………………………… |
| Yerel model | ollama | qwen2.5-coder:7b |
**Model kimliği nasıl bulunur:** Model bağlantıları panelinde ilgili kartın **Modelleri göster** listesindeki `model` sütunundan aynen kopyala. Kimlik genelde tarih içerir, örneğin `claude-…-2025….`. Takma ad yerine tarihli sürüm varsa onu seç; böylece aynı model yeniden kullanılabilir. Komutlarda `<MODEL>` yazan yere bu kimliği koyacaksın.
# 6. Terminali aç
Komutlar `tablo2sql` klasöründe çalıştırılır.
- **Windows:**
1. Dosya Gezgini'nde `tablo2sql` klasörünü aç.
2. Üstteki adres çubuğuna `cmd` yaz ve Enter'a bas.
3. Açılan pencerede bir kez şunu çalıştır: `set PYTHONUTF8=1`
4. Python komutu: `.venv\Scripts\python`
- **macOS / Linux:**
1. Terminalde `cd ~/tablo2sql` ile klasöre geç.
2. Python komutu: `.venv/bin/python`
Aşağıdaki örnekler Windows içindir. macOS/Linux'ta `.venv\Scripts\python` yerine `.venv/bin/python` yaz, ters eğik çizgileri `/` yap.
# 7. Deney 1: Makale protokolü (A yolu)
Her model için önce maliyet tahminini al, sonra deneyi çalıştır:
```
.venv\Scripts\python scripts\llm_deneyi.py --saglayici claude --model <MODEL> --kuru
.venv\Scripts\python scripts\llm_deneyi.py --saglayici claude --model <MODEL>
```
- `--kuru` hiçbir istek göndermez. Yalnızca yaklaşık token sayısını yazar. Toplam yaklaşık 4–5 milyon giriş tokenı beklenir.
- İkinci komut bağlantıyı dener ("Bağlantı denemesi… tamam"), sonra sırasıyla şunları çalıştırır:
1. Ana test kümesi, 5 koşulda.
2. Pilot.
3. Stres kümesi.
4. Ağır küme hızlı alt kümesi.
- Süre bulut modellerinde birkaç saat sürebilir. Yerel model ekran kartıyla benzer, ekran kartı olmadan çok daha uzundur.
- Bitince ekrana bir özet basılır. Sonuçlar `outputs\llm\claude_<MODEL>\` klasörüne yazılır; en önemli dosyalar `rapor.md` ve `ozet.json`.
Diğer iki model için `--saglayici` değerini değiştir:
```
.venv\Scripts\python scripts\llm_deneyi.py --saglayici openai --model <MODEL>
.venv\Scripts\python scripts\llm_deneyi.py --saglayici ollama --model qwen2.5-coder:7b
```
# 8. Deney 2: Gerçek belge pilotu (A yolu)
Bu deney `gercek_pilot` klasöründe çalışır.
```
cd gercek_pilot
..\.venv\Scripts\python db_kur.py
..\.venv\Scripts\python calistir.py --arka-uc kural
```
1. **`db_kur.py`:** 18 belgenin her biri için bir veritabanı kurar. Yalnızca bir kez gerekir ve 20–40 dakika sürer.
2. **`calistir.py --arka-uc kural`:** Ortamın doğru kurulduğunu doğrulayan **kontrol çalıştırmasıdır.** Sonunda `"basari": 19.6` görmelisin; bu, raporladığımız sonuçla aynı. Farklı bir sayı çıkarsa LLM deneylerine geçme ve bize haber ver (Bölüm 10). Büyük olasılıkla bir paket sürümü farklıdır.
3. Ardından seçtiğin üç model:
```
..\.venv\Scripts\python calistir.py --arka-uc claude:<MODEL>
..\.venv\Scripts\python calistir.py --arka-uc openai:<MODEL>
..\.venv\Scripts\python calistir.py --arka-uc ollama:qwen2.5-coder:7b
```
- `--arka-uc` biçimi şöyle: `sağlayıcı:model-kimliği`. Ollama modelinin adında da `:` var; bu sorun değil.
- Her çalıştırma `gercek_pilot\sonuclar\sonuclar_<arka-uç>.json` dosyasını üretir.
- Önce bağlantıyı denemek istersen `--sinir 5` ekle. Yalnızca 5 soru çalışır. Bu deneme çalıştırmasının sonucu raporlanmaz.
# Docker ile (B yolu)
Bu yolda Python ve paketler bir Docker imajının içindedir. Proje klasörü konteynere bağlanır; ayarlar, veritabanları ve sonuçlar doğrudan bilgisayarındaki `tablo2sql` klasörüne yazılır. Böylece konteyner silinse de hiçbir şey kaybolmaz.
## 3B. Kurulum (bir kez)
1. [Docker Desktop](https://www.docker.com/products/docker-desktop/)'ı kur ve aç. Windows'ta WSL 2 seçeneğini kabul et.
2. Bölüm 2'deki gibi dosyaları yerleştir.
3. Başlatıcıya çift tıkla:
- Windows: **`docker_baslat.bat`**
- macOS: `docker_baslat.command`
- Linux: terminalde `./docker_baslat.sh`
Başlatıcı şu adımları sırayla yapar:
1. Docker Desktop kapalıysa açar.
2. İlk seferde imajı kurar. Bu 5–10 dakika sürer ve makaledeki sonuçların üretildiği paket sürümlerini (`requirements-docker.txt`) kullanır.
3. Uygulamayı başlatır ve tarayıcıda **http://localhost:8501** adresini açar.
Başlatıcının penceresini kapatabilirsin; uygulama arka planda çalışmaya devam eder.
4. Bölüm 4'teki gibi model bağlantılarını kur.
Aynı işleri terminalden de yapabilirsin: `docker compose build`, ardından `docker compose up -d uygulama`.
**Ollama hakkında:**
- Ollama'yı bilgisayarın kendisine kur, Docker'ın içine değil. Böylece ekran kartını doğrudan kullanır.
- Konteyner Ollama'ya `http://host.docker.internal:11434` adresiyle ulaşır. Ayar dosyası ilk kez Docker içinde oluşursa bu adres kendiliğinden yazılır.
- Daha önce A yoluyla uygulamayı açtıysan Ollama kartında **Sunucu adresini değiştir**'i aç ve bu adresi gir.
Uygulamayı kapatmak için **`docker_durdur.bat`**'a çift tıkla (konteyner silinmez, yalnızca durur) (macOS/Linux: `./docker_baslat.sh durdur`). Paketler güncellenirse imajı yeniden kurmak için: `docker_baslat.bat yeniden-kur`.
## 7B. Deney 1 (Docker ile)
```
docker compose run --rm deney scripts/llm_deneyi.py --saglayici claude --model <MODEL> --kuru
docker compose run --rm deney scripts/llm_deneyi.py --saglayici claude --model <MODEL>
docker compose run --rm deney scripts/llm_deneyi.py --saglayici openai --model <MODEL>
docker compose run --rm deney scripts/llm_deneyi.py --saglayici ollama --model qwen2.5-coder:7b
```
Sonuçlar bilgisayarındaki `tablo2sql/outputs/llm/` klasörüne yazılır.
## 8B. Deney 2 (Docker ile)
```
docker compose run --rm -w /app/gercek_pilot deney db_kur.py
docker compose run --rm -w /app/gercek_pilot deney calistir.py --arka-uc kural
docker compose run --rm -w /app/gercek_pilot deney calistir.py --arka-uc claude:<MODEL>
docker compose run --rm -w /app/gercek_pilot deney calistir.py --arka-uc openai:<MODEL>
docker compose run --rm -w /app/gercek_pilot deney calistir.py --arka-uc ollama:qwen2.5-coder:7b
```
Kontrol çalıştırmasında (`--arka-uc kural`) sonuç yine **%19,6** olmalı. Sonuçlar `tablo2sql/gercek_pilot/sonuclar/` klasörüne yazılır.
**Uzun çalıştırmalar için:** Terminal penceresini kapatırsan `docker compose run` da durur. Bilgisayarın uyku moduna girmemesine dikkat et.
# 9. Kurallar
1. **Koddaki hiçbir dosyayı değiştirme.**
- `calistir.py` başlarken kodun dondurulduğu andaki parmak izini doğrular. Kod değişmişse "KOD DEĞİŞMİŞ, çalıştırma durduruldu" der ve çalışmaz.
- Bu hatayı görürsen düzeltmeye çalışma; bize bildir.
2. **Her modeli bir kez çalıştır.**
- Bir çalıştırma ağ hatası ya da elektrik kesintisi yüzünden yarıda kesilirse aynı komutu baştan çalıştır ve bunu not al.
- Sonuç beğenilmediği için tekrar çalıştırma.
3. **Seçtiğin üç modelin hepsini raporla.** Sonucu kötü olan model de makalede yer alacak.
4. **Ayarları değiştirme.** Model sıcaklığı 0, deneme sayısı 3 ve hibrit geri düşme kapalı olarak betiklerde sabit.
# 10. Sonuçları geri gönder
Deneyler bitince şu klasörleri tek bir zip dosyasında topla:
- `tablo2sql\outputs\llm\` (Deney 1, tüm modeller)
- `tablo2sql\gercek_pilot\sonuclar\` (Deney 2, tüm modeller ve kontrol çalıştırması)
- `tablo2sql\gercek_pilot\db_test\kurulum_gunlugu.json`
- Model kimliklerini yazdığın tablo (Bölüm 5) ve varsa yarıda kesilen çalıştırma notları.
**Gönderme:** `ayarlar` klasörünü (API anahtarları) ve `.env` dosyasını gönderme.
# 11. Sorun giderme
| Belirti | Çözüm |
|---|---|
| `401` / "invalid x-api-key" / "Incorrect API key" | Anahtar yanlış ya da süresi dolmuş. Model bağlantıları'nda yeni anahtarı kaydet. |
| `429` / "rate limit" / "overloaded" | Sağlayıcının hız sınırı. 10–15 dakika bekleyip aynı komutu yeniden çalıştır. |
| "credit balance is too low" / "insufficient_quota" | Hesaba kredi yükle. |
| Ollama: "model not found" | Model indirilmemiş. Model bağlantıları → Ollama → Model indir. |
| Ollama: model açılmıyor ya da bellek hatası | Hesaplama aygıtını *Otomatik* yap ya da başka uygulamaları kapat. |
| "No module named t2s" | Komutu yanlış klasörde çalıştırdın. Deney 1 `tablo2sql` içinde, Deney 2 `tablo2sql\gercek_pilot` içinde çalışır. |
| Türkçe karakterlerde hata (`UnicodeEncodeError`) | Windows'ta önce `set PYTHONUTF8=1` çalıştır. |
| `db_kur.py` bir belgede hata verdi | O belgenin dosya adını kontrol et (Bölüm 2); hata mesajını not al ve gönder. |
| Docker: "Cannot connect to the Docker daemon" | Docker Desktop açık değil; aç ve bir dakika bekle. |
| Docker: Ollama kartı "Ulaşılamıyor" | Ollama bilgisayarda açık mı? Kart adresi `http://host.docker.internal:11434` olmalı. |
| Docker: 8501 portu dolu | `docker-compose.yml`'de `"8501:8501"` satırını `"8502:8501"` yap ve http://localhost:8502 adresini aç. |
| Kontrol çalıştırmasında %19,6'dan farklı sonuç | LLM deneylerine geçmeden önce terminal çıktısını gönder. A yolunda paketleri birebir sabitlemek için: `.venv\Scripts\python -m pip install -r requirements-docker.txt` (Python 3.13 gerekir) ya da B yolunu (Docker) kullan. |