API çağrısı yapmayı biliyorsun. Kuyruk, yeniden deneme, zaman aşımı, yetki; hepsi tanıdık.
Ajanda bir şey değişiyor. Sonraki adımı her zaman senin yazdığın koşul seçmiyor.
Kontrol o noktada el değiştiriyor. Bu yazı elin nereye gittiğini ve sorumluluğun nerede kaldığını anlatıyor.
Tecrüben yük değil
Hata nerede kayda geçiyor, kim hangi işlemi başlatabiliyor, bağlantı kesilince ne oluyor? Bunları zaten soruyorsun.
Ajanla birlikte bu soruların hiçbiri kalkmıyor. Üstüne bir tane ekleniyor: modelin seçtiği adımın sonucunu kim üstleniyor?
Soru yeni gibi duruyor ama cevabı eski. Bir kütüphanenin attığı istisnadan da sen sorumluydun.
Cevap değişmiyor. Tercihi model yapıyor, sonucu uygulayan sistemin sorumluluğu sende kalıyor.
Alıştığın sıranın bir bölümü değişiyor sadece. Eskiden akış diyagramını sen çiziyordun; şimdi diyagramın bir kısmını çalışma anında model çiziyor. Kenarlarını yine sen koyuyorsun.
Döngüyü çıplak kur
Ürün belgelerinde cevap arayan küçük bir yardımcı düşün. Kullanıcı bir özelliği soruyor. Modelin elinde cevap yoksa arama aracını çağırıyor, dönen parçaları okuyor, yanıt veriyor. Kaynak yetersizse tekrar arıyor ya da bilmediğini söylüyor.
Ajan döngüsünü anlaşılır yapan şey bu gözlem ve yeni karar ilişkisi. Tek bir uzun komut o ilişkiyi kurmuyor; prompt ne kadar iyi yazılırsa yazılsın, gözlem olmadan ikinci karar da olmuyor.
İlk örnekte araç sayısını az tut. Belge arama ve belge okuma yeterli. Çıplak kurulumun amacı iyi bir ürün çıkarmak değil; kontrolün nereye geçtiğini kendi gözünle görmek.
Bu kurulum yüz satırı geçmiyor. Bir öğleden sonra yazılıyor ve sonrasında okuduğun her framework belgesinde neyin gizlendiğini biliyorsun.
Turu iz düzeyinde kaydet
Her turda modele hangi mesajları gönderdiğini, hangi araç çağrısının istendiğini ve ne döndüğünü kaydet. Gizli bilgiyi kayda taşımamaya dikkat et.
Bir hata olduğunda yalnız son cevabı değil, o cevaba gelen yolu görebilmelisin. Akıcı bir cümle, başarısız bir aramayı gizleyebiliyor.
İz olmadan yapılan hata ayıklama tahmine dönüyor. Model çıktısını okuyup "iyi görünüyor" demek, bu işte kabul kriteri sayılmıyor.
Kaydı yapılandırılmış tut. Tur numarası, çağrılan araç, argümanlar, dönen boyut, süre. Bu beş alan, sonradan "neden yavaşladı" ve "neden yanlış aracı seçti" sorularının ikisini birden cevaplıyor.
Durma kuralı ilk günden yazılır
Sonuç alamayan ajan aynı aramayı tekrar tekrar deneyebiliyor. Tur sınırı, süre bütçesi ve kullanıcıya geri dönülecek koşul ilk örnekte bile anlamlı.
Bunlar ajanın zekâsını küçülten engeller değil. Çalışmanın ne zaman tamamlandığını ya da başarısız olduğunu uygulamanın anlamasını sağlıyor.
Sonsuz bir süreç yerine işletilebilir bir görev kuruyorsun. Kuyruğa koyabildiğin, izleyebildiğin, iptal edebildiğin bir görev.
Durma koşulunu kullanıcıya da göster. "Bulamadım, şunu denedim" cevabı, sessizce dönen bir çarktan hem daha dürüst hem daha kullanışlı.
Araç tanımı modelin arayüzü
Bir REST uç noktasını bütün parametreleriyle aynen sunmak iyi araç tasarımı olmayabilir. Model, fonksiyon adından ve açıklamasından ne zaman kullanacağını anlamak zorunda.
"search" adıyla birbirinden farklı üç davranışı toplarsan yanlış seçimleri teşhis etmek zorlaşıyor. Araç sözleşmesinde girdiyi, çıktıyı, eksik veri davranışını ve yan etkiyi açıkça göster.
İyi isim burada kozmetik bir iş değil. Adın ve açıklamanın kendisi bir mikro-prompt; modelin okuduğu tek belge o.
Hata mesajlarını da buna göre yaz. Modelin okuyup düzeltebileceği bir hata, bir sonraki turda doğru çağrıya dönüşüyor; anlamsız bir kod dönerse model tahmin etmeye başlıyor.
Okumayı yazmaktan ayır
Belge arayan yardımcıya aynı anda yayın silme yetkisi vermenin öğrenme açısından bir faydası yok. Okuma araçlarıyla kurulan ilk sürüm, yanlış çağrıda yalnız gereksiz bir tur kaybettiriyor.
Yazma gerektiren örneğe geçtiğinde iki soruyu cevapla: hangi eylem onay istiyor, aynı çağrı tekrar gelirse ne oluyor? İkincisi tanıdık bir soru; ajan onu daha sık soruyor çünkü tekrar denemeyi model başlatıyor.
Önceki backend deneyimin tam burada işe yarıyor. Model kararının etrafındaki güvenilir davranışı uygulama kodu ve yetkilerle kuruyorsun.
En az yetki kuralı burada da geçerli. Ajanın kimliğine verdiğin kapsam, tek bir görevin gerektirdiği kadar olsun; genişletmesi kolay, daraltması zor.
MCP bağlantıyı standartlaştırıyor
Model Context Protocol uygulamalarla dış araç ve bağlam sağlayıcıları arasındaki iletişimi ortak bir yapıya oturtuyor. Her entegrasyonu ayrı yazmak yerine bir kez protokole uyuyorsun.
Protokol kullanmak ajanın doğru karar vereceğini göstermiyor. Her sunucunun güvenli olduğunu da göstermiyor.
Hangi araca hangi kapsamda erişildiğini yine incelemen gerekiyor. Bağlantı kurmakla güven ilişkisi kurmak ayrı işler ve ikincisi otomatik gelmiyor.
Pratik bir kural: kimin yazdığını bilmediğin sunucuyu üretim verisine bağlama. Yerel bir süreç senin makinende senin yetkinle çalışıyor; uzak bir sunucuya bağlanırken hangi verini göreceğini bilmek zorundasın.
Zor vakayı önceden yaz
Yardımcıya yalnız cevaplayabildiği kolay soruyu sorma. Belgede cevabı olmayan, iki belgede farklı görünen ve yanlış ürün adı içeren örnekler hazırla.
Beklediğin davranışı önceden yaz. Belirsizlikte açıklama istemesi mi gerekiyor, kaynak göstermesi mi, durması mı?
Yirmi vakalık bir set çoğu iş için yetiyor. Set, araç açıklamasını değiştirdiğinde ya da modeli güncellediğinde aynı gün koşulabilecek kadar küçük olmalı.
Sonucu yalnız başka bir modele puanlatmakla yetinme. Bazı koşulları doğrudan kontrol edebiliyorsun: doğru aracı mı çağırdı, argüman şemaya uyuyor mu, tur sayısı sınırda kaldı mı? Ölçüm olmadan "çalışıyor" bir his, ölçüm değil.
Eski disiplinle yeniden sor
Ajan çalıştıktan sonra bildiğin mühendislik sorularını baştan sor.
Hata nerede kayda geçiyor? Kim hangi işlemi başlatabiliyor? Bağlantı kesilince ne oluyor? Çıktının doğruluğunu neyle sınıyorsun? Maliyet hangi turda büyüyor?
Bu sorulara çalışan bir örnek üzerinden cevap vermek, terim ezberlemekten çok daha kalıcı. Yeni katman eski disiplini geçersiz kılmıyor; onu yeni bir yere uyguluyorsun.
Bir soru daha ekleniyor: özel veri, güvenilmeyen içerik ve dışarı iletişim aynı ajanda buluşuyor mu? Üçü bir araya geldiğinde bir belgenin içine saklanmış talimat ajanı veri göndermeye ikna edebiliyor.
Kim için
Servis yazmış, kuyruk kurmuş, yetki yönetmiş her geliştirici için. Ajan kurmak burada yeni bir meslek değil, tanıdık bir işin yeni bir katmanı.
Kod okuyabilmenin faydası da burada çıkıyor: araç şemasını elle sıkılaştırmak, izi okumak ve durma kuralını yerine koymak derin görev sayılıyor.
Model eğitmek ya da derin çoklu ajan mimarisi kurmak isteyen için değil. Burada anlatılan sıra tek bir ajanı kontrol edilebilir hâle getirmekle bitiyor.
Çoklu ajan, tek ajanın yetmediği kanıtlandıktan sonra gelen bir adım. Tek ajanı ölçemeyen, on ajanda on kat ölçüm sorunu buluyor.
Bu hafta kurulacak ajan
Platform tasarlama. Framework karşılaştırma.
Belirli bir işi bitiren, kararlarını görebildiğin ve gerektiğinde durdurabildiğin küçük bir sistem kur. İki araç ver, izi kaydet, durma kuralını yaz, beş zor vaka hazırla ve koştur.
Sonra hangi tekrar eden ihtiyacın gerçekten daha gelişmiş bir altyapı istediğini gör. Framework'ü o noktada seçmenin sebebi basit: artık neyi sakladığını biliyorsun.
Döngüyü kur, sonra onu mühendis gibi sorgula.