🛡️ AI Prompt Sorunu - Kalıcı Çözüm Stratejileri

Gelecekte aynı hatanın tekrar olmaması için 5 farklı önlem stratejisi

📅 Tarih: 20 Aralık 2025 | 🏢 Tenant: iXtif (Tenant 2)

📝 Basit Anlatım (Herkes İçin)

🎯 Sorun Ne Olmuştu?

AI sohbet robotu "merhaba" diyen kullanıcıya kısa cevap vermesi gerekirken, ekstra açıklamalar ekliyordu. Mesela: "Merhaba! Size nasıl yardımcı olabilirim? Herhangi bir konuda sorunuz var mı?" gibi.

Bu ekstra cümle gereksizdi ve kullanıcı "sadece kısa yanıt" istemişti.

🔍 Asıl Neden

Sistemde iki farklı "talimat dosyası" varmış:

  • Detaylı Talimat: "Selamlaşmalarda KISA cevap ver, ekstra kelime ekleme!"
  • Genel Talimat: "Yardımcı, nazik ve profesyonel ol" (bu ekstra cümle ekliyordu)

Sistem yanlışlıkla "Genel Talimat"ı kullanıyordu, "Detaylı Talimat"ı görmezden geliyordu!

✅ Nasıl Çözdük?

İki yerde düzeltme yaptık:

  1. Sisteme "Detaylı Talimat"ı kullanmasını söyledik
  2. "Genel Talimat"ı kaldırdık (artık detaylı talimatın üzerine yazamaz)
Sonuç: Artık "merhaba" dediğinde sadece "Merhaba! Size nasıl yardımcı olabilirim? 😊" diyor. Ekstra cümle YOK! ✨

🛡️ Gelecekte Bunun Olmaması İçin 5 Strateji

1️⃣

Merkezi Kontrol Noktası

📝 Basit Anlatım:

Bir "Ana Yönetici" oluşturmak gibi. Tüm talimatlar bu yöneticiden geçer. Eğer yanlış talimat verilmeye çalışılırsa, Ana Yönetici uyarı verir veya engeller.

Benzetme: Şirketin tek bir "İnsan Kaynakları Müdürü" var. Herkes işe alım için ona başvurur. Böylece yanlış kişi işe alınmaz.

🔧 Teknik Detaylar:

  • PromptBuilder adında merkezi bir sınıf oluşturulur
  • • Tüm tenant'lar için prompt'lar bu sınıftan çekilir
  • • Tenant ID'ye göre doğru PromptService otomatik seçilir
  • • Yanlış servisi kullanmak imkansız hale gelir (match-case yapısı)
Neden İyi?

Tek bir yerden kontrol, hata yapmak imkansız!

2️⃣

Otomatik Test Sistemi

📝 Basit Anlatım:

Bir "Robot Kontrolör" yapmak gibi. Her değişiklikten sonra robot otomatik olarak sistemi test eder: "Merhaba yazdım, kısa cevap geldi mi?" diye kontrol eder.

Benzetme: Fabrikanın çıkışında "Kalite Kontrol" birimi var. Her ürün kontrolden geçmeden dışarı çıkamaz. Hatalı ürün varsa alarm verir.

🔧 Teknik Detaylar:

  • • PHPUnit test suite oluşturulur
  • • Her tenant için ayrı test case'ler yazılır
  • • Selamlaşma yanıtları max 50 karakter kontrol edilir
  • • Prompt uzunluğu min 5000 karakter kontrol edilir (Tenant2 için)
  • • CI/CD pipeline'a entegre edilir (GitHub Actions, GitLab CI)
Neden İyi?

Deploy öncesi otomatik kontrol, hata canlıya çıkmaz!

3️⃣

Ayar Dosyası ile Yönetim

📝 Basit Anlatım:

Bir "Rehber Kitap" oluşturmak gibi. Hangi müşteriye (tenant) hangi talimat verileceği kitapta yazılı. Değişiklik yapmak istersen sadece kitabı düzenlersin, kodları karıştırmazsın.

Benzetme: Restoranın menüsü var. Şef yemek yaparken menüye bakar. Yemek değiştirmek istersen menüyü güncelle, mutfağı yeniden düzenleme!

🔧 Teknik Detaylar:

  • config/ai-tenants.php dosyası oluşturulur
  • • Tenant ID → PromptService mapping tanımlanır
  • • Validation kuralları (min/max uzunluk) config'de olur
  • • Runtime'da config okunur, hard-code YOK!
  • • .env dosyasından override edilebilir
Neden İyi?

Değişiklik yapmak çok kolay, tek dosyadan yönetim!

4️⃣

Canlı Sistem Kontrolü

📝 Basit Anlatım:

Bir "Güvenlik Görevlisi" koymak gibi. Sistem çalışırken bile her talimatı kontrol eder. Eğer yanlış talimat veriliyorsa, anında alarm verir ve loglar.

Benzetme: Havalimanında güvenlik kapıları var. Yasak eşya tespit edilirse hemen alarm çalar, geçirmiyor.

🔧 Teknik Detaylar:

  • • getPromptRules() metodunda runtime validation eklenir
  • • Prompt uzunluğu < 5000 karakter ise Log::critical() yazılır
  • • "ULTRA KRİTİK" keyword'ü yoksa uyarı verilir
  • • Exception fırlatılarak hatalı prompt kullanımı engellenir
  • • Monitoring sistemi (Sentry, Bugsnag) entegre edilir
Neden İyi?

Canlıda bile hata yakalama, instant alert!

5️⃣

Sözleşme Sistemi (Contract)

📝 Basit Anlatım:

Bir "İş Sözleşmesi" yapmak gibi. Talimat servisi "Ben şu şu şeyleri yapmak zorundayım" diye imza atar. Eğer sözleşmeye uymuyorsa sistem uyarı verir.

Benzetme: İşe giren eleman iş sözleşmesi imzalar. Sözleşmede "günde 8 saat çalışacak" yazıyorsa, bunu yapmak ZORUNLU.

🔧 Teknik Detaylar:

  • TenantPromptServiceInterface güçlendirilir
  • • validate() metodu zorunlu hale getirilir
  • • Return type'lar strict olur (string, array vb.)
  • • PHPStan/Psalm ile static analysis yapılır
  • • Interface implement etmeyen servis çalışmaz
Neden İyi?

Type safety + contract güvencesi, büyük teamlerde ideal!

🎯 Hangilerini Uygulamalı?

Strateji Öncelik Zorluk Etki Ne Zaman?
1️⃣ Merkezi Kontrol Yüksek Orta ⭐⭐⭐ Hemen uygula
2️⃣ Otomatik Test Orta Yüksek ⭐⭐⭐⭐ CI/CD varsa hemen
3️⃣ Config Dosyası Yüksek Düşük ⭐⭐ Hemen uygula
4️⃣ Runtime Validation Yüksek Düşük ⭐⭐⭐ Hemen uygula
5️⃣ Interface Contract Düşük Orta ⭐⭐ Büyük team varsa

💡 Önerilen Uygulama Planı

🚀

Hemen Şimdi (1-2 saat):

  • ✅ Strategi 1: Merkezi PromptBuilder oluştur
  • ✅ Strateji 3: Config dosyası ekle
  • ✅ Strateji 4: Runtime validation ekle

Bu Hafta İçinde (2-4 saat):

  • ✅ Strateji 2: Temel testler yaz (en az 3-5 test case)
📅

Gelecekte (Opsiyonel):

  • ⚡ Strateji 5: Interface contract (team büyürse)
  • ⚡ Monitoring/Alert sistemi entegrasyonu