Alet Kullanan Bir Aktörün Sunucu Tarafında Yetkilendirilmesi Gerekir

Model tarafından oluşturulan araç çağrılarını önerilen eylemler olarak değerlendirin. Yürütme sırasında izinleri, kapsamı, argümanları, bütçeleri ve onayları doğrulayın.

Bir model, mevcut kullanıcının yürütme izni bulunmayan, kusursuz biçimlendirilmiş bir komut üretebilir. Yapılandırılmış çıktı, uygulamanın talebi anlamasına yardımcı olur; ancak bunu gerçekleştirme yetkisi vermez.

Bir araç kullanan ajanı, uygulama tarafından kontrol edilen bir yürütme sınırı içinde çalışan bir planlayıcı olarak tasarlıyorum. Model, bir sonraki eylemi önerir. Sunucu kodu ise eylemin izin verilip verilmeyeceğine ve sonucunun nasıl döndürüleceğine karar verir.

Araç sözleşmesinde riskleri ve kapsamı belirtin

Bir araç tanımında sadece bir ad ve JSON şeması yetmez. Verileri okuduğunu mu yoksa değiştirdiğini mi, hangi izinlere ihtiyaç duyduğunu, kiracı kapsamının nasıl belirlendiğini ve işlemin onay gerektirip gerektirmediğini bilmek istiyorum.

Argüman doğrulaması hem yapıyı hem de anlamı kapsamalıdır. Geçerli bir dize, başka bir kiracının kaydını tanımlayabilir. Biçim açısından doğru bir URL, yine de dahili bir ağ kaynağına yönlendirebilir. Sayısal bir değer, izin verilen iş aralığının dışında olabilir.

Başlangıçta, kullanışlı birkaç salt okunur araç sunmayı düşünüyorum. Bu, yazma işlemlerini devreye sokmadan önce kanıtlanması gereken yürütme davranışlarının sayısını azaltır.

İşlem gerçekleştirildiğinde yeniden yetkilendirin

Uygulama, yürütme anında kullanıcının mevcut izinlerini ve hedef kaynağın sahipliğini belirlemelidir. Model tarafından sağlanan bir kiracı kimliği veya rol, hiçbir şekilde yetki olarak kabul edilmemelidir.

Bu durum, çok aşamalı işlemlerde önemlidir. Üyelik değişebilir, bir kaynak taşınabilir veya kuyrukta bekleyen bir eylem, orijinal bağlamının süresi dolduktan sonra yürütülebilir. Yetkilendirme, konuşmanın ilk mesajının tek seferlik bir özelliği olmamalıdır.

Aynı ilke onay için de geçerlidir. Onay, belirli bir eyleme ve bununla ilgili gerekçelere bağlı olmalıdır. Eğer fail daha sonra hedefi veya miktarı değiştirirse, önceki onay artık ne olacağını yansıtmaz.

Harici içeriği kendi güven kategorisinde tutun

Görüntülenen bir sayfa, müşteri mesajı veya araç sonucu, modele yönelik talimatlar içerebilir. Bu talimatlar, sadece bağlam penceresinde yer aldıkları için yetki kazanmazlar.

OWASP’ın komut enjeksiyonu kılavuzunda, güvenilir olmayan içeriğin model davranışını etkileme riski ele alınmaktadır. Benim yürütme sınırlamam, planlayıcının yanıltılabileceğini varsaymakla birlikte, yine de sunucu kodunun uyguladığı izin sınırlarını aşmasını engellemektedir.

Araç çıktıları da en aza indirilmelidir. Görev için bir sipariş durumu gerekiyorsa, her müşteri alanını döndürmek gereksiz bilgi ifşasına yol açar. Hassas alanlar, sonuç modele ulaşmadan önce ihmal edilebilir veya gizlenebilir.

Sadece her bir çağrıyı değil, döngünün tamamını sınırlayın

Kullanışlı bir ajanın, araç yinelemeleri, geçen süre, toplam maliyet ve tekrarlanan başarısızlıklar konusunda sınırlara sahip olması gerekir. Planlayıcı, süresiz olarak başka bir çağrı başlatabiliyorsa, çağrı başına belirlenen sınırlar yetersiz kalır.

Verimli ilerlemeyi, aynı argümanlarla yapılan tekrarlı denemelerden ayırırım. Bir arama iki kez sonuç vermezse, bir sonraki faydalı adım, aynı aramanın üçüncü bir varyasyonunu denemek yerine, durumu netleştirecek bir soru sormak olabilir.

Bir işlem, tanınabilir bir durumla sonuçlanmalıdır: yanıtlandı, açıklığa kavuşturulması gerekiyor, onay bekleniyor, bir kişiye devredildi veya düzeltilebilir bir nedenden dolayı başarısız oldu. Bu, hem arayüzü hem de operatörün görevini daha net hale getirir.

Bir insanın inceleyebileceği bir eylem izi kaydedin

Denetim kaydı, önerilen aracı, doğrulanmış argümanları, yetkilendirme kararını, ilgili onayı, sonuç durumunu ve zamanlamayı göstermelidir. Uygulamanın kararlarını açıklamak için özel model akıl yürütmesini ortaya koyması gerekmez.

Dış yazma işlemleri için, kararlı bir işlem kimliği ve idempotans stratejisi ekliyorum. Planlama adımının yeniden denenmesi, tamamlanmış bir iş eyleminin tekrarlanmasına yol açmamalıdır.

Yaptığım ilk karşıt senaryo testlerinde, sıradan bir kullanıcıdan başka bir kiracının verilerini almasını, bir araç sonucunun içine talimatlar eklemesini, onaylandıktan sonra argümanları değiştirmesini ve tamamlanmış bir eylemi tekrarlamasını istiyorum. Ajan, ancak bu sınırlar anlaşılır ve uygulanabilir kaldığında daha fazla özerklik kazanır.

25 Eylül 2026 tarihinde güncellenmiştir.