Files
kolaytercih/docs/ekip-raporlari/2026-10-10/yapay-zeka-niyet-modeli-kiyas.md
bilalgursen da0e9dff7a docs(ekip): 7–10 Ekim raporları, eval sonuçları, seslendirme betiği
- docs/ekip-raporlari/2026-10-07, 2026-10-09, 2026-10-10 raporları ve ekran görüntüleri
  (ses/ altındaki mp3 dosyaları depoya alınmadı, 38 MB)
- BACKLOG #38: rehber yazılarına "Dinle" düğmesi adayı
- scripts/seslendir.py (Türkçe TTS) ve .gitignore'a .venv-tts/
- scripts/eval/sonuc: 8–10 Ekim revizyon eval çıktıları

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-11 00:33:39 +03:00

54 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Revizyon niyet modeli kıyası (10 Eki 2026)
## Soru
"Liste revize edilirken sorun yaşanıyor; daha önce çalıştık, neden hâlâ?" + "OpenRouter'da modeli değiştirsek mi (GLM?)"
## Teşhis
Revizyon mantığı 9 Eki'den beri koda bağlı ve doğru (QA: paketli hesapta 4/4 revizyon, sahte beyan 0).
Kalan sorun tek yerde: sohbet mesajını yapısal kurala çeviren **niyet çıkarımı** çağrısı
(`src/lib/ai/revizyon-niyeti.ts`, 20 sn zaman aşımı). Model `deepseek/deepseek-v4-flash`
OpenRouter'da **16 üst sağlayıcıya** dağılıyor; eval'de aynı gün Baidu, StreamLake, Wafer,
Venice, DigitalOcean, Alibaba, DeepInfra, Mancer gördük. Gecikme iki kümeli (1,5-2 sn / 12-20 sn),
20 sn'yi aşınca çağrı düşüyor → niyet "belirsiz" → istek normal sohbete gidiyor, liste değişmiyor
(QA B3 "bimodal gecikme" bulgusu bu). Ayrıca aynı istek iki koşuda farklı kural üretebiliyor
(r14 "ilk 10 İstanbul + sadece devlet": bir koşuda form, birinde tip eksik).
## Ölçüm (pnpm eval:revizyon --tekrar 2, 16 senaryo × 2, niyet modeli env'den; sohbet deepseek sabit)
| Niyet modeli | Geçen | Kural doğru | Niyet p50 / p90 / max | $/çağrı | Sağlayıcı |
|---|---|---|---|---|---|
| deepseek-v4-flash (koşu 1) | 31/32 | 21/22 | 2,0 / 5,1 / 6,0 sn | 0,00014 | 5 farklı |
| deepseek-v4-flash (koşu 2) | 29/32 | 19/22 | 5,0 / 15,1 / **20,0 sn (zaman aşımı)** | 0,00008 | 4 farklı |
| **google/gemini-3.1-flash-lite (koşu 1)** | **32/32** | **22/22** | 1,6 / 1,9 / 2,4 sn | 0,00101 | yalnız Google |
| **google/gemini-3.1-flash-lite (koşu 2)** | 30/32 | 20/22 | 1,3 / 1,9 / 2,4 sn | 0,00073 | yalnız Google |
| z-ai/glm-4.7-flash | 29/32 | 19/22 | 3,2 / 15,4 / 20,0 sn | 0,00019 | Venice, Cloudflare |
| z-ai/glm-5.3-flash (reasoning low) | 24/32 | 14/22 | 1,9 / 6,4 / 9,3 sn | 0,00023 | 18 farklı |
| z-ai/glm-5.3-flash (reasoning alanı yok) | 26/32 | 16/22 | 2,0 / 7,9 / 12,1 sn | 0,00034 | 17 farklı |
| qwen/qwen3.5-flash | 21/32 | 11/22 | 1,3 / 3,3 / 3,8 sn | 0,00015 | Alibaba |
| openai/gpt-5-nano, claude-haiku-5.5 | — | — | — | — | 400 "Provider returned error" (strict json_schema; incelenmedi) |
Ham sonuçlar: `scripts/eval/sonuc/2026-10-10T20-*-revizyon.json`. Toplam harcama ≈ 0,12 $.
GLM: 5.3-flash ve gpt-5-nano `reasoning_effort: "none"` isteğini 400 ile reddediyor
("Reasoning is mandatory"); bunun için `AI_REASONING_EFFORT` env'i eklendi (`src/lib/ai/cagri.ts`).
Reasoning açıkken bile GLM deepseek'ten kötü: kuralı daha sık kaçırıyor ve 17-18 sağlayıcıya dağıldığı
için gecikme yine iki kümeli.
## Karar önerisi
Niyet çıkarımı için `OPENROUTER_NIYET_MODEL=google/gemini-3.1-flash-lite`. Gerekçe: tek sağlayıcı
(gecikme tek kümeli, max 2,4 sn, zaman aşımı yok), en yüksek isabet, maliyet 7 kat ama mutlak
olarak 1.000 revizyon ≈ 1 $. Sohbet ve liste üretimi deepseek'te kalır (orada sorun ölçülmedi).
Yapılacaklar:
1. Gitea secrets'a `OPENROUTER_NIYET_MODEL=google/gemini-3.1-flash-lite` ekle (ci.yaml satırı hazır).
2. Deploy sonrası `[soru] revizyon niyeti` log satırlarında süre ve sağlayıcıya bak.
3. `/gizlilik` metni "OpenRouter (ABD) aracılığıyla" diyor; üst sağlayıcı adı geçmiyor → değişiklik gerekmez
(güvenlik-uyum ajanı teyit etsin).
4. (Yapıldı) Gemini "ilk 10 İstanbul, vakıf olmasın" isteğinde tipi `ilkTercihler` içine yazıyordu.
Niyet prompt'una kapsam cümlesi + şema açıklaması eklendi; prompt tek başına yetmeyince
`tipKuraliniTamamla` (revizyon-niyeti.ts) "vakıf olmasın / sadece devlet" kalıbında üst düzey
`universiteTipi`'ni koddan tamamlar hâle getirildi. Son tam koşu (16 × 2): 31/32 geçti,
kural 21/22, p50 1,3 sn; tek kaçan r04#2 ("İstanbul da eklensin" → iller.ekle bir koşuda düştü, stokastik).
5. Ayrı bir iş: QA B2 (paketsiz hesapta sahte form vaadi) ve B1 ("listemi değiştir" → diger) bu kıyasın
konusu değil; backlog'da.