İçeriğe atla
SinaptikLabAI KNOWLEDGE PLATFORM
RehberOrtaAI Agents

İlk ajanı kurmak: döngü, araç ve durma koşulu

Ajan, modelin her turda hangi aracın çağrılacağına kendisinin karar verdiği bir döngüdür: model çağrısı, araç çağrısı, sonucun bağlama yazılması. Kurmadan önce dört şey yazılır: hedefin karşılandığını gösteren bitiş durumu, en dar araç kümesi, tur ve çağrı üst sınırı, sınıra gelindiğinde ne olacağı. Adımların sırası girdiden bağımsız olarak baştan biliniyorsa ajan yazmayın; sabit iş akışı hem ucuz hem hata ayıklaması doğrusaldır. Ajan ancak bir aracın sonucu bir sonraki adımı gerçekten değiştiriyorsa maliyetini karşılar.

ÖNKOŞULLAR

  • Araç çağırmayı destekleyen bir model erişimi ve çağrı kayıtlarını görebildiğiniz bir hesap
  • Ajanın çağıracağı, tek başına çalıştığı doğrulanmış en az bir uç nokta veya fonksiyon
  • Yan etkileri geri alınabilen, üretimden yalıtılmış bir test ortamı
  • İşin bugün elle nasıl yapıldığını adım adım anlatabilecek bir kişi

GEREKEN ARAÇLAR

  • Araç çağırma destekli bir model uç noktası
  • İz kaydı (tracing) toplayıcısı — her tur ve her araç çağrısı ayrı görülebilmeli
  • Zaman aşımı ve yeniden deneme kontrolü olan bir istek istemcisi
  • Sahte (mock) araç yazabileceğiniz bir test çatısı
  • Yapılandırılmış kayıt (log) altyapısı
  1. 01

    Ajan mı iş akışı mı olduğunu sına

    Adımların sırası girdiden bağımsız biliniyorsa sabit iş akışı yazın; ajanı yalnızca bir aracın sonucu bir sonraki adımı değiştiriyorsa kurun.

    Sorulacak soru "model bu işi yapabilir mi" değil, "adımların sırası girdiye göre değişiyor mu". Sıra sabitse her turda bir model çağrısı ödeyip aynı sırayı yeniden keşfetmek, pahalı ve kararsız bir yoldan aynı sonuca varmaktır. Ajanın karşılığını verdiği yer, bir aracın döndürdüğü sonucun bir sonraki adımı gerçekten değiştirdiği işlerdir.

    İşin biçimiDoğru yapıNeden
    Adım sırası her seferinde aynıSabit iş akışıKarar maliyeti yok, hata ayıklaması doğrusal
    Sıra girdiye göre birkaç dala ayrılıyorKoşullu iş akışıDallar sayılabiliyorsa kodda yazmak daha ucuz
    Bir aracın sonucu sonraki adımı belirliyorAjan döngüsüSıra baştan yazılamıyor
    Hedef tek bir model çağrısıyla karşılanıyorTek çağrıDöngü kurmak gereksiz karmaşıklık
    Dört satırın yalnızca birinde ajan gerekiyor; karar bu tabloyla başlamalı.
  2. 02

    Hedefi ve bitiş durumunu tek cümlede yaz

    Ajanın ne zaman bitmiş sayılacağını makinenin kontrol edebileceği bir son durum olarak yazın; "yardımcı ol" türü hedefler hiçbir turda karşılanmaz.

    "Kullanıcıya yardımcı ol" bir hedef değil bir temennidir: hiçbir turda karşılanmış sayılmaz, bu yüzden döngü tur sınırına kadar döner. Hedefi, dışarıdan bakan birinin doğru ya da yanlış diye işaretleyebileceği bir son durum olarak yazın. Aynı belgeye kapsam dışı bırakılanları da yazmak, ilk günde en çok işe yarayan tek satırdır.

    yaml
    hedef: "Gelen destek kaydını sınıflandır ve doğru kuyruğa taşı."
    bitis_durumu:
      kayit_durumu: "siniflandirildi"
      kuyruk: "atandi"
      gerekce_notu: "yazildi"
    kapsam_disi:
      - "Müşteriye mesaj göndermek"
      - "Kaydı kapatmak"
      - "İade veya ödeme işlemi başlatmak"

    Doğrulama adımı: bitiş durumunu okuyan bir kontrol fonksiyonu yazın ve döngüyü onunla sonlandırın. Modelin "tamamladım" demesi bir sinyaldir, kanıt değil; kanıt ortamın son durumudur.

  3. 03

    Araç kümesini en aza indir

    İlk sürümde üç ila beş araçla başlayın ve hepsini yalnızca okuma yetkisiyle kurun; yazma araçları ancak döngü kararlı çalıştıktan sonra eklenir.

    Araç sayısı arttıkça seçim hatası da artıyor; en zararlı durum ise iki aracın işlevinin örtüşmesi. Model "kayit_getir" ile "kayit_ara" arasında sallanmaya başladığında sorun modelin yeteneğinde değil, sizin sınır çizmenizde. Araç kümesi, ajanın karar uzayıdır: onu siz daraltırsınız.

    • İlk sürümü yalnızca okuma yapan araçlarla kurun; döngü kararlı çalışmadan yazma eklemeyin.
    • İki aracın açıklaması birbirine benziyorsa ikisini tek araca indirin veya birinin kapsamını daraltın.
    • Ajanın hiç kullanmadığı aracı kümeden çıkarın; taşınan her şema bağlamdan pay alıyor.
    • Yıkıcı işlemler (silme, gönderme, ödeme) ilk sürümde araç kümesinde hiç bulunmasın.
    • Her aracı ajana bağlamadan önce elle çağırıp tek başına çalıştığını doğrulayın.
  4. 04

    Döngüyü kur ve her turda tek araç çağır

    Model çağrısı, araç çağrısı ve sonucun bağlama yazılması sırasını kendi kodunuzda kurun; ilk sürümde her turda tek araç çağırarak hatayı tek adıma indirgeyin.

    Döngü üç işten oluşur ve üçü de sizin kodunuzda durur: modele bağlamı ver, dönen araç çağrısını çalıştır, sonucu bağlama yaz. Model turlar arasında durum tutmaz; iki tur arasında taşınan her şey sizin yazdığınız şeydir. Bu yüzden "ajan çerçevesi" seçimi, bu üç işi sizin adınıza nasıl yaptığından başka bir şey değildir. Döngüden çıkış da bu kodun işi: modelin araç çağırmayı bırakması tek başına bir çıkış nedeni değil, bitiş durumu kontrol fonksiyonunu çalıştırmak için bir tetikleyicidir.

    python
    def dongu(hedef, araclar, ust_sinir_tur):
        baglam = baslangic_baglami(hedef, araclar)
        tur = 0
        while tur < ust_sinir_tur:
            tur += 1
            cevap = modeli_cagir(baglam, araclar)
            if cevap.arac_cagrisi is None:
                # Araç çağırmayı bırakmak çıkış nedeni değil, denetim tetikleyicisi.
                if bitis_durumu_saglandi():
                    return tamamlandi(tur)
                baglam = baglama_yaz(baglam, "bitis_denetimi", eksik_kalanlar())
                continue
            sonuc = araci_calistir(cevap.arac_cagrisi)   # zaman aşımı burada
            baglam = baglama_yaz(baglam, cevap.arac_cagrisi, sonuc)
            if bitis_durumu_saglandi():
                return tamamlandi(tur)
        return sinira_gelindi(tur)

    İlk sürümde her turda tek araç çağırın. Paralel çağrı gecikmeyi düşürür ama hata ayıklamayı zorlaştırır: iki araç aynı turda çalıştığında "hangisinin sonucu kararı bozdu" sorusunun cevabı izden okunamaz hâle gelir. Paralelliği, tek çağrılı döngü kararlı çalıştıktan sonra ekleyin.

  5. 05

    Dört durma koşulunu birlikte tanımla

    Hedef karşılandı, tur sınırı doldu, bütçe bitti ve kurtarılamaz hata — dördünü ayrı ayrı kodlayın; tek koşula bağlı döngü o koşul gelmediğinde hiç durmaz.

    Tek durma koşuluna bağlı bir döngü, o koşul hiç karşılanmadığında sınırsız döner. Dört koşulu ayrı ayrı kodlayın ve hangisiyle çıkıldığını ize yazın: koşu bittiğinde "neden bitti" sorusunun cevabı tek bir alanda okunabilmeli.

    Durma koşuluNasıl denetlenirDöngü ne yapmalı
    Hedef karşılandıBitiş durumu kontrol fonksiyonuSonucu döndür, kaydı kapat
    Tur sınırı dolduDöngüdeki tur sayacıKısmi sonucu ve planı devret
    Çağrı veya süre bütçesi bittiÇağrı sayacı ve duvar saatiDurdur, bütçe aşımını bildir
    Kurtarılamaz hataAynı hatanın tekrarı, yetki reddiDurdur, hatayı sınıfıyla yaz
    Dördü de ayrı bir çıkış nedeni üretmeli; hepsini "başarısız" diye kaydetmek teşhisi imkânsızlaştırır.
  6. 06

    Tur ve çağrı bütçesini sunucu tarafında zorla

    Üst sınırları isteme değil döngü koduna sayaç olarak yazın; modele söylenen "en fazla beş adım at" bir kural değil bir temennidir.

    İsteme yazılan üst sınır bir kural değildir: model kendi turlarını saymaz ve uzun bağlamda bu cümlenin ağırlığı düşer. Sayaç döngü kodunda durmalı; sınır aşıldığında döngü modele sormadan çıkmalı.

    1. 01Tur sayacı: model kaç kez çağrıldı.
    2. 02Araç başına çağrı sayacı: aynı araç kaç kez çalıştırıldı.
    3. 03Duvar saati: koşunun toplam süresi ve tek bir araç çağrısı için zaman aşımı.
    4. 04Maliyet sayacı: koşu başına toplam belirteç ve çağrı sayısı, kayda yazılır.

    Sınıra gelindiğinde ne olacağı da tasarımın parçası. Sessizce durmak en kötü seçenek: iş yarım kalır ve kimse haberdar olmaz. Kabul edilebilir üç çıkış var — kısmi sonucu bir insana devretmek, kaydı "tamamlanamadı" durumuyla kuyruğa geri koymak, ya da girdiyi daraltıp yeniden denemek.

  7. 07

    Hata ve tekrar davranışını kurala bağla

    Aynı araç aynı parametrelerle ikinci kez hata verdiyse döngüyü durdurun; üçüncü denemeyi modele bırakmak turları tüketir ve asıl hatayı gizler.

    Ajanların en pahalı davranışı, aynı aracı aynı parametrelerle tekrar tekrar çağırmak. Bunun kaynağı çoğunlukla modelin ısrarı değil, hata mesajının yön vermemesi: "İşlem başarısız" cümlesi hangi alanın değiştirileceğini söylemez, model de elindeki tek hamleyi tekrarlar.

    • Geçici hata (zaman aşımı, oran sınırı): döngü kodunda sınırlı sayıda yeniden dene, modele hiç gösterme.
    • Parametre hatası: hangi alanın neden reddedildiğini döndür ve tek bir düzeltme turuna izin ver.
    • Yetki reddi: yeniden deneme yok; döngüyü durdur ve devret.
    • Bulunamadı: sonucun boş olduğunu açıkça söyle — boş liste ile hata farklı şeylerdir.
    • Ön koşul eksik: hangi adımın önce yapılması gerektiğini yaz, model o adıma dönebilsin.
  8. 08

    Her turu ize yaz ve bir koşuyu yeniden oynat

    Her turda istem, seçilen araç, parametreler, sonuç ve süre ayrı alanlar olarak kaydedilsin; iz eksikse ajan hatası tekrar üretilemez.

    Ajan hatası tek bir turun değil bir turlar dizisinin sonucudur; bu yüzden tek bir istem kaydı hiçbir şey anlatmaz. Her tur ayrı alanlarla kaydedilmeli ve bir koşu, izden okunarak baştan kurulabilmeli.

    Kaydedilecek alanNeden gerekli
    Tur numarası ve çıkış nedeniKoşunun neden bittiğini tek alanda okumak
    Seçilen araç ve parametrelerYanlış seçim mi yanlış parametre mi ayırmak
    Araç sonucu ve süresiGecikmenin ve boş sonucun kaynağını bulmak
    Bağlama yazılan içeriğin uzunluğuBağlam taşmasını taşmadan önce görmek
    Hata sınıfıTekrar desenini elle değil sayaçla bulmak

    Doğrulama adımı: rastgele bir koşuyu seçip izden okuyarak aynı araç çağrılarını elle tekrarlayın. Aynı sonuca varamıyorsanız iz eksiktir; bu eksiklik ilk üretim hatasında pahalıya mal olur.

SIK DÜŞÜLEN TUZAKLAR

  • Tur sınırını isteme yazmak

    Model kendi turlarını saymaz; uzun bağlamda bu cümlenin ağırlığı iyice düşer. Sayaç döngü kodunda durmuyorsa sınır yok demektir.

  • Bitişi modelin beyanına bağlamak

    "Görev tamamlandı" bir kontrol değil bir cümledir. Son durumu doğrulamayan bir döngü, yapılmamış işi yapılmış olarak kapatır.

  • Araçları ajana bağlamadan denememek

    Tek başına çalışmayan bir araç, ajan içinde model hatası gibi görünür. Saatler modelin kararını incelemekle geçer, sorun uç noktadadır.

  • Zaman aşımı koymamak

    Asılı kalan tek bir araç çağrısı tüm koşuyu kilitler; tur sınırı devreye girmez çünkü döngü zaten ilerlemiyordur.

  • Bütün araçları ilk gün açmak

    Seçim hatası araç sayısıyla birlikte büyür. Küçük kümede kararlı çalışmayan bir döngü, büyük kümede hiç çalışmaz.

KONTROL LİSTESİ

  • Bitiş durumu yazılı ve makine tarafından kontrol edilebiliyor
  • Araç kümesi dar ve hiçbir iki aracın kapsamı örtüşmüyor
  • Döngü kodu tur, çağrı ve süre sayaçlarını kendisi tutuyor
  • Dört durma koşulu ayrı ayrı sınandı ve çıkış nedeni loglanıyor
  • Sınıra gelindiğinde ne olacağı (devir, kısmi sonuç, iptal) tanımlı
  • Aynı araç aynı parametrelerle ikinci kez hata verdiğinde döngü duruyor
  • Her tur izde ayrı alanlarla kayıtlı ve bir koşu yeniden kurulabiliyor
  • İlk sürümde yıkıcı yetki taşıyan araç yok

Maddelerin tamamı işaretlenmeden kurulum üretime alınmamalı.

Sık sorulan sorular

Ajan mı kurmalıyım yoksa sabit iş akışı mı yeter?

Ölçüt şu: adımların sırası girdiden bağımsız olarak baştan biliniyorsa sabit iş akışı yazın. Sıra sayılabilir birkaç dala ayrılıyorsa dalları kodda yazmak hâlâ daha ucuz. Ajan, ancak bir aracın döndürdüğü sonuç bir sonraki adımı gerçekten değiştiriyorsa — yani sırayı baştan yazamıyorsanız — maliyetini karşılar.

Ajan kaç tur dönmeli?

Evrensel bir sayı yok; sınırı işin kendisinden türetin. İşi bugün elle yapan kişinin attığı adımları sayın, hata ve yeniden deneme payı ekleyin, sınırı oraya koyun. Sonra kendi izlerinizden başarılı koşuların kaç turda bittiğine bakıp güncelleyin. Sınırın amacı işi bitirmek değil, bitmeyeceği anlaşıldığında durmaktır.

Ajan aynı aracı tekrar tekrar çağırıyor, ne yapmalıyım?

Önce hata mesajına bakın: yön vermeyen bir metin modele aynı çağrıyı tekrarlamaktan başka seçenek bırakmaz; hata yanıtına hangi alanın neden reddedildiğini ekleyin. Sonra döngü koduna tekrar denetimi koyun: aynı araç aynı parametre imzasıyla ikinci kez hata verdiğinde koşu dursun.

Tek ajan mı kurmalıyım, birden çok ajan mı?

Tekle başlayın. Birden çok ajan iş bölümünün yanında devir protokolü, ortak durum ve ayrı bütçeler de getiriyor. Tek ajanla kararlı çalışmayan bir akış bölündüğünde kararlı hâle gelmiyor; yalnızca aynı hata daha çok yerde görünüyor.

Kaynaklar

  1. 01Model sağlayıcılarının araç çağırma dokümantasyonları — Model sağlayıcıları · Dokümantasyon
  2. 02Sinaptik Research — ajan uygulama notları — Sinaptik Lab · Teknik rapor

BUILD

Bu rehberi kurumunuzda uygulayalım mı?

Aynı mimariyi kendi verinizle kurmak için discovery oturumundan üretime kadar birlikte ilerliyoruz.