Ajanlar İçin Güvenli Bir Teslimat Hattı Oluşturmak

Çoğu ajan demosu hayati bir soruyu atlıyor. Otonom bir sistemin, mükerrer gönderim yapmadan veya onaylanmamış bir işi iletmeden sizin adınıza bir şeyler göndermesine nasıl izin verirsiniz?

Mükerrer gönderim nadir görülen bir hata değildir. Bir işçi (worker) görev ortasında çöktüğünde, basit bir kuyruğun varsayılan davranışıdır. Bir işçi bir mesaj gönderir ve ardından başarıyı kaydetmeden önce çöker. Sistem görevin başarısız olduğunu düşünür ve yeni bir işçiye tekrar denemesini söyler. Müşteri iki e-posta alır ve siz de bir destek talebiyle karşılaşırsınız.

Her çökmenin önüne geçemezsiniz. Eylem ile kayıt arasındaki boşlukta meydana gelebilecek bir çökme ihtimaline göre tasarım yapmalısınız.

Gerçek sonuçları olan her ajan çıktısı için bu altı aşamalı hattı kullanın:

• Üret (Produce): Ajan tam artefaktı oluşturur. Henüz hiçbir şey göndermez. • Kalıcı Hale Getir (Persist): Önce niyeti ve artefaktı kalıcı bir depolama alanına yazın. • Puanla (Score): Çıktıya bir güven puanı ekleyin. • İncele (Review): Düşük güvenli öğeleri bir insana yönlendirin. • Onayla (Approve): Fail-closed (hata durumunda kapalı kal) bir geçit kullanın. Sistem, bir insan açıkça yetki vermediği sürece tüm gönderimleri engeller. • Gönder ve Tasdik Et (Send and Attest): Öğeyi bir kiralama (lease) kapsamında gönderin, ardından bir kanıt makbuzu yazın.

Her aşama ayrı ve kalıcı bir geçiş olmalıdır. Durum (state), işçinin belleğinde değil, veritabanınızda yaşar.

Mükerrer kayıtları önlemek için satır düzeyinde kiralama (row-level leasing) kullanın. Postgres'te SELECT ... FOR UPDATE SKIP LOCKED kullanın. Bu, bir görevin aynı anda yalnızca bir işçi tarafından sahiplenilmesini sağlar.

En önemli kural, süresi dolmuş kiralamaları (leases) nasıl yönettiğinizdir. Bir işçi harici bir mesaj gönderirken çökerse, işlemi otomatik olarak tekrar denemeyin. Bunun yerine, görevi insan incelemesi için askıda bırakın. Görünür şekilde takılı kalmış bir görev, görünmez bir mükerrer gönderimden daha iyidir.

Ayrıca fail-closed prensiplerine uymalısınız:

  • Gönderim varsayılan olarak kapalıdır. Tüm giden trafiği etkinleştirmek için tek bir bayrak (flag) gereklidir.
  • Kimlik kontrol edilir. Sistem, gönderim anında gönderen adresini ve taşıma güvenliğini doğrulamalıdır.
  • Her şey bir makbuz bırakır. Kaydedilmemiş bir gönderim bir başarısızlıktır.

Bunu dahili günlükler (logs) gibi düşük riskli görevler için oluşturmayın. Bir hatanın maliyete yol açtığı, yasal sorun yarattığı veya bir destek talebi gerektirdiği durumlarda kullanın.

Kaynak: https://dev.to/danmercede/building-a-governed-double-send-safe-delivery-pipeline-for-agent-outputs-80e

İsteğe bağlı öğrenme topluluğu: https://t.me/GyaanSetuAi