Aracınız Satırları Döndürdü, Model Yanlış Saydı
Kaynak: dev.to

İçindekiler 4 başlık
Bir yapay zekâ ajanına bir listedeki kayıtları saymasını söyleyip dönen yanıta koşulsuz güvendiğiniz oldu mu? Çoğu geliştirici yanıtı doğrulamadan kabul eder; ta ki aracın kendi döndürdüğü ham veri ile modelin ürettiği metni karşılaştırana kadar. Yapılan bir testte, araç çıktısındaki listede eşleşen tam 322 ID yer alırken, model aynı çalıştırmada 321 cevabını verdi. Üstelik çalıştırmanın geri kalanında hiçbir anormallik ya da hata mesajı görünmüyordu.
Bu çalışma, popüler ajan kütüphanelerinin gerçek davranışını sübjektif hisler yerine somut izleme kayıtlarıyla ölçmek amacıyla kurgulandı. Aynı model, aynı araçlar ve yerel bir kayıt proxy'si arkasında Strands, LangGraph ve CrewAI ile 408 kayıtlı çalıştırma gerçekleştirildi.
Görev ve Çalıştırma Kurgusu#
Deneyde üç kütüphanede de aynı teknoloji haberleri özeti ajanı oluşturuldu:
fetch_headlinesaracıyla 5 adet haber başlığı toplamak,- Yaklaşık 100 kelimelik bir haber özeti metni üretmek,
word_countaracıyla kelime sayısını doğrulamak ve aralık dışındaysa metni revize etmek.
Çalıştırma ortamında izole Python sanal ortamları (uv venv ve uv pip) kullanıldı. Tüm LLM trafiği araya giren yerel bir kayıt proxy'si üzerinden yakalandı; böylece framework'lerin kendi raporları yerine ağ seviyesindeki ham trace logları kıyaslandı.
Araç Tasarımındaki Tek Değişiklik: Ham Veri mi, İstatistik mi?#
Kurguda test edilen yegâne parametre, aracın modele ne teslim ettiğiydi:
- Mod A (
ids): Araç yalnızca ID listesini döndürür; sayma işi modele bırakılır ([3, 7, 11, … 330 ids]-> model 321 saydı, gerçek sayı 322). - Mod B (
stats): Araç sayımı önceden hesaplar ve sonucu doğrudan modele teslim eder ({count: 322, min, max}-> model doğrudan okur ve doğru yanıt olan 322'yi verir).
Deney matrisi; 3 framework, 2 araç modu, 3 farklı liste boyutu (11, 110 ve 330 ID), 7 farklı eşik ifadesi (id = 9, id 9, no less than 9) ve 3 tohum değeri ile toplam 408 çalıştırmayı kapsadı (407'si başarıyla sıfır koduyla sonlandı).
330 Satırda Sonuçlar ve Framework Davranışları#
330 satırlık veri kümesinde şu çarpıcı veriler elde edildi:
- Model Saydığında (
idsmodu): Her üç framework de tam olarak %92.3 başarı oranında kaldı (CrewAI ve Strands 2'şer çalıştırmada bir-iki farkla hatalı saydı; LangGraph 2 çalıştırmayı eksik bıraktı). - Araç Saydığında (
statsmodu): Her üç framework de %100 (26/26) doğruluk sağladı. - Token Tüketimi: Sayım araca yaptırıldığında token tüketimi dramatik biçimde düştü. LangGraph'ta soru başına token 8.574'ten 143'e inerken; Strands'te 11.528'den 1.418'e, CrewAI'da ise 14.600'den 12.565'e geriledi.
Yazılım Geliştirme Açısından Pratik Çıkarımlar#
- Deterministik Hesaplamaları Koda Bırakın: Sayma, filtreleme veya toplama gibi algoritmik mantıkları LLM'in dikkat katmanlarına bırakmayın. İstatistikleri araç içinde hesaplayıp modele hazır verin.
- Observability ile Ham Veriyi Denetleyin: Kütüphanelerin konsol çıktılarına değil, proxy seviyesinde kaydedilen ham LLM çağrılarına ve payload'lara bakın.
- Maliyet ve Doğruluk Optimizasyonu Sağlayın: Araç çıktısını doğru yapılandırmak, hem halüsinasyon riskini sıfıra indirir hem de bağlam penceresini gereksiz satırlarla doldurmayarak token maliyetlerini düşürür.
Bu konuyu derinlemesine öğrenmek isterseniz: Production'da Agent Güvenilirliği modülüne göz atın.
Kaynak ve atıf
Bu yazı, dev.to üzerinde yayımlanan içerikten yararlanılarak Edumints tarafından yapay zekâ desteğiyle Türkçe hazırlandı. Ayrıntılar ve yazarların kendi anlatımı için orijinaline bakabilirsin:
- dev.to/sunnydachs/your-tool-returned-the-rows-the-model-counted-them-wrong-11ii