Mevzuattan Kural Çıkarımı ile Vergi Denetim Sistemi
Mevzuatı dil modeli okur, denetimi deterministik bir servis yapar.
- Python (LLM)
- Go
- Next.js
- MySQL
- Redis
Kaynak kodu yayımlanmıyor: sistem bir denetim firması için geliştirildi ve kod müşteriye ait.
Problem
Vergi denetimi mevzuata dayanır ve mevzuat sürekli değişir. Kuralları koda gömmek, her tebliğ değişikliğinde yeni bir sürüm çıkarmak demek; kuralları bir dil modeline sormak ise denetimin tekrarlanabilirliğini kaybetmek demek.
Denetimde tekrarlanabilirlik isteğe bağlı değil. Bir bulguya itiraz edildiğinde "model öyle dedi" bir gerekçe değildir; hangi maddeye, hangi tarihte geçerli hangi metne dayandığı gösterilebilmelidir.
Üstüne bir kısıt daha var: mükellef verisi hassas ve sistemden çıkmamalı.
Çözüm
Dil modeli sıcak yoldan çıkarıldı. Akış iki parçaya ayrıldı.
Çevrimdışı taraf. Kendi yazdığı bir toplayıcı mevzuatı ve Yargıtay/Danıştay kararlarını çekip veritabanına yazıyor; RAG bu külliyat üzerinde çalışıp maddeleri denetim kurallarına çeviriyor. Kurallar JSON olarak, madde referansı ve zaman geçerliliğiyle saklanıyor ve bir insan onayından geçmeden yürürlüğe girmiyor.
Sıcak yol. Denetim koşusunu bir Go servisi yapıyor: onaylanmış JSON kuralları deterministik olarak uyguluyor. Aynı belge, aynı tarih, aynı kural kümesi her zaman aynı sonucu veriyor.
Mükellef verisi hiçbir aşamada dışarı çıkmıyor; dışarıdaki dil modeli yalnızca kamuya açık mevzuatı görüyor.
Sonuç
Uçtan uca çalışır durumda: belge yüklenir yüklenmez mevzuata aykırılık tespiti yapılıyor ve raporlama denetçinin talebiyle koşuyor.
Mimarinin taşıdığı asıl özellik bir sayı değil bir garanti: her denetim koşusu tekrarlanabilir ve gerekçelendirilebilir. Bir bulgunun arkasında hangi maddenin, hangi tarih aralığında geçerli hangi metninin durduğu kayıt altında.
Bu sistemin çok kiracılı bir SaaS'a dönüştürülmesi senaryosu ayrıca çalışıldı; o tasarımdaki her hacim rakamı varsayım olarak etiketli, ölçüm değil.