- 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>
3.9 KiB
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:
- Gitea secrets'a
OPENROUTER_NIYET_MODEL=google/gemini-3.1-flash-liteekle (ci.yaml satırı hazır). - Deploy sonrası
[soru] revizyon niyetilog satırlarında süre ve sağlayıcıya bak. /gizlilikmetni "OpenRouter (ABD) aracılığıyla" diyor; üst sağlayıcı adı geçmiyor → değişiklik gerekmez (güvenlik-uyum ajanı teyit etsin).- (Yapıldı) Gemini "ilk 10 İstanbul, vakıf olmasın" isteğinde tipi
ilkTercihleriçine yazıyordu. Niyet prompt'una kapsam cümlesi + şema açıklaması eklendi; prompt tek başına yetmeyincetipKuraliniTamamla(revizyon-niyeti.ts) "vakıf olmasın / sadece devlet" kalıbında üst düzeyuniversiteTipi'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). - 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.