Yeni bir ajan kurarken en yaygın refleks elde ne varsa hepsini açmak. Ne kadar çok yeteneği olursa o kadar iyi çalışır diye düşünülüyor.
Sonuç tam tersi çıkıyor. Araç listesi büyüdükçe ajanın isabeti düşüyor, maliyeti artıyor ve hata bulmak zorlaşıyor.
Araç tanımları da bağlama giriyor
Model araçları ayrı bir yerden görmez. Her aracın adı, açıklaması ve parametre şeması, her çağrıda modelin önüne konan metnin parçasıdır.
Bunun iki bedeli vardır. Hiç kullanılmayacak araçların tanımları için de her çağrıda ödeme yaparsınız. Bu tanımlar aynı zamanda işinize yarayacak bilgiye ayrılmış yeri işgal eder.
Kalabalık kurulumlarda araç tanımlarının kapladığı yer, kullanıcının yazdığı metinden kat kat büyük olabiliyor. Kimse farkına varmadan her istekte aynı kalabalık yeniden gönderiliyor.
Seçim zorlaşıyor
İkinci sorun daha sinsi. Model doğru aracı seçerken yalnızca adına ve açıklamasına bakar.
Birbirine benzeyen iki araç varsa seçim bulanıklaşır. Ya yanlış araç çağırılır, ya da doğru araç başka bir aracın şemasından ödünç alınmış parametrelerle çağırılır. İkincisi özellikle can sıkıcı, çünkü çağrı başarılı görünüp yanlış sonuç üretiyor.
Ölçülmüş tarafı
Bu konunun artık rakamları da var. Üç yüz yetmiş araçlık bir kayıt üzerinde yapılan bir çalışma, her sorguya sabit bir liste göstermek yerine listeyi sorguya göre daraltmanın sonucu iyileştirdiğini buldu.
Sabit beş araç gösterilen kurulumda araç seçim isabeti yüzde 87,1 iken, listeyi sorguya göre daraltan kurulumda yüzde 93,1'e çıkıyor. Orta zorluktaki sorularda aradaki fark daha da açılıyor, yüzde 60,9'a karşılık yüzde 76,8 (Repantis ve ark., How Many Tools Should an LLM Agent See?).
Çalışmanın asıl vurgusu bir eşik sayısı vermek değil. Sorunun zorluğuna göre gösterilen araç sayısının değişmesi gerektiğini savunuyor ve elli araçlık sabit listeyle neredeyse aynı kapsamaya ortalama yedi araçla ulaşıyor.
Araç eklemenin görünmeyen maliyeti
Kendi tarafımızda başka bir şeyle karşılaştık ve bunun çok konuşulduğunu görmedik.
Dışarıdan bir araç kümesi bağladığımızda bazı sağlayıcılarda araç çağırma tamamen hata vermeye başladı. Sebep araç sayısı değildi, şemaların biçimiydi. Bir alanın birden fazla tip alabilmesi, metin olmayan seçenek listeleri ve tanınmayan biçim etiketleri kabul edilmiyordu.
Çözüm şemaları sadeleştirip yalnızca bütün sağlayıcıların anladığı ortak alt kümeyi göndermek oldu.
Bir araç eklemenin bedeli yalnızca token değil. Her yeni araç uyumluluk yüzeyini de büyütüyor ve bir gün model değiştirmek istediğinizde bu yüzey karşınıza çıkıyor.
"Kaç araç" yanlış soru
Sabit bir sayı aramak yerine listeyi daraltmanın yollarına bakın.
Rolü dar tutun. Bir ajan bir iş yapsın. Her şeyi yapan tek ajan yerine dar rollere bölmek, araç listesini kendiliğinden küçültür.
Benzer araçları birleştirin. Aynı işin üç varyasyonu üç ayrı araç olmak zorunda değil, tek araç ve bir parametre yeterli olabilir.
Adı ve açıklamayı ayırt edici yazın. Model seçimi açıklamadan yapıyor. "Kayıt günceller" ile "kaydı değiştirir" arasında seçim yapmasını beklemeyin.
Kullanılmayanı kapatın. Hangi aracın ne sıklıkla çağırıldığına bakın. Üç ay boyunca hiç çağırılmayan bir araç listede durmasın.
Dar liste aynı zamanda dar yetki
Bu işin bir de güvenlik tarafı var ve genelde ikinci planda kalıyor.
Ajanın araç listesi, ajanın yapabileceği işlerin listesidir. Listeyi daraltmak yalnızca isabeti artırmakla kalmıyor, sistemin dokunabileceği yüzeyi de küçültüyor.
Bu yüzden araç seçimini bir performans ayarı gibi değil, bir tasarım kararı gibi ele almak gerekiyor. Neyi açtığınızı bilerek açın ve gerekçesi kalmayanı kapatın.
Kaynaklar
Repantis ve ark., How Many Tools Should an LLM Agent See? A Chance-Corrected Answer