LLM Ajanlarının Tool Katmanı Bir API'dir, Öyle Tasarla
Bir ajanı gerçek kullanıcıların önüne koyduğumda on bir araç vardı ve sistem promptu "yıkıcı işlemlerden önce onay iste" diyordu. Staging'de altı hafta mükemmel çalıştı. Üretimde ikinci gün aynı refund'ı üç kez çıkardı. Ödeme API'si 502 döndü, model tekrar denemeye karar verdi, wrapper'ım da bunu memnuniyetle iletti. O başarısızlığın hiçbir yönü LLM problemi değildi. Eksik idempotency key'di, herhangi bir HTTP client'ında code review'da yakalayacağın aynı bug.
Fark şu: ajanla, retry kararı senin okuyamadığın bir bileşen tarafından, tahmin edemediğin bir sıklıkta, hardcode etmediğin argümanlarla alınıyor. Model bir çağrıcı. Araçlarınız API. Public API'den talep ettiğin her şey, versiyonlama, timeout, idempotency, scoped credentials, rate limits, burada da geçerli. Tek fark: çağrıcı kötü niyetli değil, yanlışlıkla adversarial.
Araçları domain'e göre değil, side effect'e göre sınıflandır. Read-only araçlar gevşek olabilir. Yazma işlemleri? Idempotency key gerekli. Ödeme, silme, transfer, bunlar atomik olmalı ya da rollback edilebilir. Timeout koy; model sonsuz beklemesine izin verme. Rate limit uygula; aynı işlemi saniyede beş kez çağırmasını engelle. Credentials'ı scope'la, ajanın tüm veritabanına erişmesine izin verme, sadece ihtiyacı olan tablolara.
Bu tasarım, modelin kendi başına yapamayacağı şeyleri, API güvenliğini, senin katmanında çözmeni sağlıyor. Kaynak yazıda detaylı örnekler var. Üretimde sorun yaşamak istemiyorsan, araçlarını bir API'nin tüm disiplinini taşıyacak şekilde kur.
0 yorum