Kök neden (B1): chat_messages yalnız metin tutar; başarılı revizyonun kaydı
("revize ediyorum… Liste yenilendi… 1-5") araçsız cevapla aynı görünüyordu ve
model sonraki turda bu kalıbı taklit edip liste_revize çağırmadan "yenilendi"
yazıyor, program adlarını eski cevaptan kopyalıyordu (eval: 8 revizyon
isteğinde 1 çağrı, 5 sahte beyan). Metnin altına "[araç çağrıldı]" işareti
eklemek işe yaramadı — model işareti de kopyaladı.
- sohbet-gecmisi.kayitliMesajModelMetni: modele giden pencerede başarılı
revizyon turu kısa araç kaydına iner (meta.revizyon'dan), araçsız
"yenilendi" diyen tur (düzeltme notu olmayan eski kayıtlar dâhil) uydurma
listesiyle birlikte düşer; kayıt ve ekran değişmez. route.ts bunu kullanır.
- revizyonNiyetiVar + sohbet-akisi.ilkAdimAracZorunlu: niyet algılanınca ilk
adımda tool_choice "required". VARSAYILAN KAPALI
(SOHBET_REVIZYON_ARAC_ZORUNLU=1): ölçümde 7/8 çağrı, 0 sahte beyan verdi ama
OpenRouter isteği Baidu yerine OpenInference'a yönlendirdi, gecikme 1-7 sn →
80-112 sn, onlarca paralel araç çağrısı. Açmak Bilal'in kararı.
- danisman-prompt revizyon bölümü: 5 (geçmiş örnek değildir; önce aracı çağır)
ve 6 (soru formunda Türkçe karakter).
- cikti-denetimi REVIZE_BEYANI: "değişiklikler yapıldı", "artık … tercihin …
oluşuyor", "listeyi yeniden kurdum", "liste_revize çağrıldı" kalıpları.
- araclar.ts (B4): soru_sor açıklamasına Türkçe karakter kuralı; formdaki
ASCII'ye düşmüş il adları koddan düzelir (ilAdlariniDuzelt: Istanbul →
İstanbul, Eskisehir → Eskişehir; yalnız büyük harfle başlayan tam eşleşme).
- scripts/eval/revizyon-arac.ts (pnpm eval:revizyon): gerçek modelle 10
senaryo, liste_revize çağrı oranı + sahte beyan; liste_revize çalıştırılmaz
(mesajId yok). Sonuç dosyaları scripts/eval/sonuc/*-revizyon.json.
Kredi: değişmez. akis-denetim 9/9, revizyon-denetim 5/5, tsc ve lint temiz.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
91 lines
2.8 KiB
JSON
91 lines
2.8 KiB
JSON
{
|
|
"name": "kolaytercih",
|
|
"version": "2.0.0",
|
|
"private": true,
|
|
"scripts": {
|
|
"dev": "next dev",
|
|
"build": "next build",
|
|
"indexnow": "tsx scripts/indexnow.ts",
|
|
"start": "next start",
|
|
"lint": "eslint && pnpm tasarim:denetim",
|
|
"ingest": "tsx scripts/ingest.ts",
|
|
"refresh": "tsx scripts/refresh.ts",
|
|
"ozellik": "tsx scripts/program-ozellik.ts",
|
|
"detay": "tsx scripts/detay.ts",
|
|
"yokatlas:goc": "tsx scripts/yokatlas-goc.ts",
|
|
"gecmis-doldur": "tsx scripts/gecmis-doldur.ts",
|
|
"eski-arsivle": "tsx scripts/eski-arsivle.ts",
|
|
"veri-kalite": "tsx scripts/veri-kalite.ts",
|
|
"db:index": "tsx scripts/db-index.ts",
|
|
"logolar": "tsx scripts/logo-indir.ts",
|
|
"db:push": "drizzle-kit push",
|
|
"db:generate": "drizzle-kit generate",
|
|
"db:migrate": "node scripts/db-goc.mjs",
|
|
"tadimlik": "tsx scripts/tadimlik-uret.ts",
|
|
"tasarim:denetim": "tsx scripts/tasarim-denetim.ts",
|
|
"eval:robot": "tsx --conditions=react-server --env-file-if-exists=.env.local scripts/eval/robot.ts",
|
|
"eval:sohbet": "tsx --conditions=react-server --env-file-if-exists=.env.local scripts/eval/sohbet.ts",
|
|
"eval:revizyon": "tsx --conditions=react-server --env-file-if-exists=.env.local scripts/eval/revizyon-arac.ts"
|
|
},
|
|
"dependencies": {
|
|
"@ai-sdk/openai-compatible": "^3.0.62",
|
|
"@ai-sdk/react": "^4.0.130",
|
|
"@cds/city": "^1.1.0",
|
|
"@libsql/client": "^0.17.4",
|
|
"@shadcn/helpers": "^0.2.0",
|
|
"@shadcn/react": "0.3.1",
|
|
"ai": "^7.0.127",
|
|
"better-auth": "^1.6.23",
|
|
"better-sqlite3": "^12.11.1",
|
|
"class-variance-authority": "^0.7.1",
|
|
"clsx": "^2.1.1",
|
|
"drizzle-orm": "^0.45.2",
|
|
"iyzipay": "^2.0.69",
|
|
"lucide-react": "^1.25.0",
|
|
"marked": "^18.0.7",
|
|
"mermaid": "^11.16.0",
|
|
"motion": "^12.42.2",
|
|
"next": "16.2.10",
|
|
"next-themes": "^0.4.6",
|
|
"openai": "^7.4.0",
|
|
"radix-ui": "^1.6.3",
|
|
"react": "19.2.4",
|
|
"react-dom": "19.2.4",
|
|
"react-markdown": "^10.1.0",
|
|
"react-use-measure": "^2.1.7",
|
|
"remark-breaks": "^4.0.0",
|
|
"remark-gfm": "^4.0.1",
|
|
"resend": "^6.18.0",
|
|
"server-only": "^0.0.1",
|
|
"shiki": "^4.3.1",
|
|
"tailwind-merge": "^3.6.0",
|
|
"turkey-map-react": "^2.0.5",
|
|
"tw-animate-css": "^1.4.0",
|
|
"use-stick-to-bottom": "^1.1.6",
|
|
"zod": "^4.4.3"
|
|
},
|
|
"devDependencies": {
|
|
"@tailwindcss/postcss": "^4",
|
|
"@types/better-sqlite3": "^7.6.13",
|
|
"@types/iyzipay": "^2.0.3",
|
|
"@types/node": "^20",
|
|
"@types/react": "^19",
|
|
"@types/react-dom": "^19",
|
|
"drizzle-kit": "^0.31.10",
|
|
"eslint": "^9",
|
|
"eslint-config-next": "16.2.10",
|
|
"shadcn": "^4.13.1",
|
|
"tailwindcss": "^4",
|
|
"tsx": "^4.23.1",
|
|
"typescript": "^5"
|
|
},
|
|
"pnpm": {
|
|
"onlyBuiltDependencies": [
|
|
"better-sqlite3",
|
|
"esbuild",
|
|
"sharp",
|
|
"unrs-resolver"
|
|
]
|
|
}
|
|
}
|