AI Ajanlarının Bir Güvenilirlik Sorunu Var
AI ajanları, yanıt veren yazılımlardan eyleme geçen yazılımlara dönüşüyor. API'leri çağırıyorlar, para transferi yapıyorlar ve veritabanlarını güncelliyorlar.
Ancak zeka ile güvenilirlik arasında devasa bir uçurum var.
Daha iyi modellere ve daha iyi istemlere (prompting) odaklanıyoruz. Altyapıyı ise görmezden geliyoruz. Bu uyumsuzluk, gerçek dünyada başarısızlıklara neden oluyor.
Bir ajanın bir iade işlemini gerçekleştirdiğini hayal edin. Ödeme API'sini çağırıyor. API başarılı oluyor. Ardından, ajan başarıyı kaydetmeden önce bir sunucu çökmesi yaşanıyor. Sistem görevi tekrar deniyor. Ajan API'yi tekrar çağırıyor. Müşteri çift iade alıyor.
Kimse bir hata (bug) yazmadı. Model doğru mantık yürüttü. API çalıştı. Başarısızlık, altyapının eksik olmasından kaynaklandı.
Çoğu ajan demolarda gayet iyi çalışıyor. Demolar tek bir işlem (process) içinde çalışır. Her seferinde tek bir görev yürütürler. Çökmelerle veya eşzamanlılıkla (concurrency) karşılaşmazlar. Canlı ortam (production) ise farklıdır.
Ajanları canlı ortama taşıdığınızda üç şey bozulur:
• İşlem Ölümsüzlüğü: Ajanlar, işlemin asla ölmediğini varsayar. Gerçekte ise hostlar çöker ve yeni dağıtımlar (deployments) yapılır. Bir işlem öldüğünde, bellek içi (in-memory) durum yok olur. • Saf Araç Çağrıları: Geliştiriciler araç çağrılarını basit okuma işlemleri gibi görür. Ancak ajanlar yan etkiler (side effects) gerçekleştirir. Para transferi yapmak veya e-posta göndermek kolayca geri alınamaz. • Tam Olarak Bir Kez Yürütme (Exactly-once Execution): Güvenilirlik için yeniden denemeler gereklidir. Ancak dayanıklı bir günlük (durable log) olmadan bellek içi bir döngüyü yeniden denemek, mükerrer eylemlere yol açar.
Bu bir istemleme (prompting) sorunu değil. Bu bir dağıtık sistemler sorunudur. Bunu düzeltmek için dayanıklı yürütmeye (durable execution) ihtiyacımız var.
Güvenilir ajanlar şu beş sütuna ihtiyaç duyar:
- Event Sourcing: Her eylemin değiştirilemez bir günlüğünü (immutable log) saklayın. Doğruluk kaynağı bellek içi durum değil, bu günlüktür.
- Tekrar Edilebilir Yürütme (Replayable Execution): Bir çökme sonrası durumu yeniden yapılandırmak için günlüğü kullanın. Tamamlanmış adımları yeniden çalıştırmak yerine onları tekrar oynatın (replay).
- Dayanıklı Kuyruklar (Durable Queues): İşleri bellekten kalıcı depolama alanlarına taşıyın.
- Idempotency Anahtarları (Idempotency Keys): Bir eylemi iki kez gerçekleştirmenin, bir kez gerçekleştirmekle aynı etkiye sahip olmasını sağlayın. Bu, çift ödemeleri önler.
- Telafi Desenleri (Compensation Patterns): Çok adımlı bir iş akışı yarıda kalırsa adımları geri almak için eylemler tanımlayın.
Daha iyi bir model, daha iyi kararlar üretir. Ancak daha iyi bir model bir çökmeyi düzeltemez. Güvenilirlik kararların değil, yürütmenin bir özelliğidir.
İnsan gözetimi olmadan hareket etmesi için güvenebileceğiniz ajanlar sadece en zekiler olmayacak. Onlar, güvenilir altyapılar üzerinde çalışanlar olacak.
Zeka ne yapılacağına karar verir. Altyapı, bunun gerçekten doğru bir şekilde yapılmasını sağlar.
Kaynak: https://dev.to/code_with_mwai/ai-agents-have-a-reliability-problem-nobody-is-talking-about-j40
İsteğe bağlı öğrenme topluluğu: https://t.me/GyaanSetuAi