İçeriğe atla
SinaptikLabAI KNOWLEDGE PLATFORM
RehberİleriÇok Ajanlı Sistemler

Çok ajanlı iş bölümü kurmak

Çok ajanlı yapıya, tek ajan üç sınırdan birine çarptığında geçilir: araç listesi seçim hatası üretecek kadar kabarıksa, iş kolları farklı yetki sınırları gerektiriyorsa ya da alt görevler birbirini beklemeden yürüyebiliyorsa. Bölmeye karar verdiğinizde her devir için yazılı bir sözleşme tanımlayın — girdi şeması, çıktı şeması, bitiş koşulu ve azami tur sayısı; sözleşmesiz devir, döngünün ve öngörülemeyen maliyetin bilinen kaynağıdır. Üç koşuldan hiçbiri yoksa tek ajanı derinleştirmek hem ucuz hem ölçülebilir kalır.

ÖNKOŞULLAR

  • Tek ajanla çalışan ve izleri kaydedilen bir akış
  • Araç şemalarının ve her aracın yetki kapsamının yazılı olduğu bir liste
  • Beklenen son durumu makine tarafından kontrol edilebilen 20 gerçek görev
  • Yan etkileri geri alınabilen, üretimden yalıtılmış bir test ortamı

GEREKEN ARAÇLAR

  • Devir, tur sayacı ve bütçe sınırı uygulayabilen bir ajan çalıştırıcı
  • İz kaydı altyapısı (araç çağrıları ve devir kenarları dâhil)
  • Kimlik ve kapsam yönetimi; ajan başına ayrı servis hesabı
  • Şemalı görev kaydını tutacak bir durum deposu
  • Değerlendirme koşusu için sahte araçlar ve test ortamı
  1. 01

    Bölme gerekçesini yaz

    Tek ajanın hangi sınıra çarptığını tek cümleyle yazın: araç kalabalığı, ayrı yetki sınırı veya gerçek paralellik. Üçü de yoksa bölmeyin.

    Çok ajanlı mimariye geçiş bir tasarım tercihi değil, bir sınır aşımının sonucudur. Önce tek ajanın nerede tıkandığını yazın: hangi görevde, hangi adımda, hangi belirtiyle. Gerekçesi yazılamayan bölme, sistemi yalnızca daha pahalı ve hata ayıklaması daha zor hâle getiriyor.

    BelirtiBölmek çözer mi?Önce denenecek
    Araç listesi uzadıkça yanlış araç seçiliyorEvet — araçları ajanlara dağıtınAraç açıklamalarına seçim ölçütü yazmak
    Tek görevde farklı yetki sınırları gerekiyorEvet — yetki sınırı ajan sınırı olurGörev bazında yetki anahtarlama
    Alt görevler birbirinin çıktısını beklemiyorEvet — paralel yürütme kazanç sağlarTek ajanda toplu araç çağrısı
    Cevap kalitesi düşükHayırGeri getirmeyi ve istemi ayrı ölçmek
    Uzun oturumda kurallar unutuluyorGenellikle hayırKısıtı araç katmanında zorlamak
    İlk üç satır bölmeyi gerekçelendirir; son ikisi bölündüğünde çoğu kez daha da kötüleşir.
  2. 02

    Topolojiyi seç

    Sıralı boru hattı, yönetici-işçi ve eşler arası desenlerden birini seçin; kararı görevlerin bağımlılık grafiğine bakarak verin, alışkanlığa göre değil.

    Topoloji kararı görevlerin bağımlılık grafiğinden çıkar. Adımlar birbirini sırayla besliyorsa boru hattı; merkezî bir karar verici alt görevleri dağıtıp sonucu birleştiriyorsa yönetici-işçi; ajanlar birbirini serbestçe çağırıyorsa eşler arası desen. Üçüncüsü en esnek olanıdır; davranışını önceden kestirmek de en zor onda.

    DesenUygun olduğu durumAna risk
    Sıralı boru hattıAdımlar sabit ve sırası belliErken adımın hatası sona kadar taşınır
    Yönetici-işçiAlt görevler bağımsız, sonuç birleştirilecekYönetici hem darboğaz hem tek hata noktası
    Eşler arasıGörev akışı önceden bilinmiyorDöngü ve öngörülemeyen maliyet
    Tek ajan, çok araçAraç sayısı hâlâ yönetilebilirAraç seçim hatası
    Üretimde en sık işe yarayan iki desen boru hattı ve yönetici-işçi; eşler arası deseni ancak ölçüm ve bütçe koruması hazırken açın.

    Doğrulama adımı: seçtiğiniz deseni kutu-ok çizimiyle tek sayfaya sığdırın. Sığmıyorsa sorun desende değil, henüz netleşmemiş bir görev tanımındadır.

  3. 03

    Devir sözleşmesini şemalaştır

    Her devir için girdi şeması, çıktı şeması, hata biçimi ve bitiş koşulunu yazın; serbest metinle devir yapan bir sistem hata ayıklanamaz.

    Ajanlar arasındaki devir, iki servis arasındaki çağrı gibi ele alınmalı. Serbest metinle devir yapan sistemlerde hata ayıklama, iki modelin birbirini nasıl anladığını tahmin etmeye dönüşüyor; şema ise anlaşmazlığı çağrı anında görünür kılıyor.

    yaml
    devir: arastirmaci -> yazar
    girdi:
      gorev_kimligi: string
      soru: string
      kapsam: { kaynak_turu: [belge, kayit], azami_kaynak: 8 }
    cikti:
      bulgular: [{ iddia: string, kaynak_kimligi: string }]
      eksik_kalan: [string]
      guven: [yuksek, orta, dusuk]
    bitis_kosulu: "bulgular >= 3 veya eksik_kalan yazildi"
    azami_tur: 2
    hata_bicimi: { kod: string, aciklama: string, devam_edilebilir: bool }
    • Çıktı şemasında "eksik kalan" alanı bulunsun: ajanın bilmediğini söyleyebileceği bir yer yoksa uydurmaya yöneliyor.
    • Bitiş koşulu ölçülebilir olsun; "yeterince araştırınca" bir koşul değildir.
    • Hata biçiminde "devam edilebilir mi" alanı olsun; çağıran ajan yeniden deneme kararını buna baksın.
    • Kaynak kimliğini devirde taşıyın; sonraki ajan iddiayı kaynağa bağlayamazsa kaynak zinciri kopar.
  4. 04

    Her ajanın yetkisini kendi işine daralt

    Araçları ajan başına dağıtın ve servis hesaplarını ayırın; her ajan yalnızca kendi adımının gerektirdiği araca erişsin.

    Çok ajanlı yapının en somut güvenlik kazancı, yetkinin doğal biçimde bölünebilmesidir: araştırmacı ajanın yazma yetkisi, yazar ajanın dış ağ erişimi olmak zorunda değil. Bu kazancı elde etmek için yetkiler ajan başına ayrı verilmeli; ortak bir servis hesabı kazancın tamamını geri alıyor.

    1. 01Her ajanın araç listesini yalnızca kendi adımından türetin.
    2. 02Servis hesaplarını ajan başına ayırın; iz kayıtlarında kimin ne yaptığı ancak böyle ayrışır.
    3. 03Yetki denetimini araç fonksiyonunun içinde, sunucu tarafında uygulayın.
    4. 04Dış içerik okuyan ajana yıkıcı araç vermeyin; okuma ve yazma farklı ajanlara düşsün.
  5. 05

    Paylaşılan durumu tek kayıtta topla

    Ajanlar birbirine tam konuşma geçmişini değil şemalı bir görev kaydının alanlarını devretsin; bağlam şişmesi çok ajanlı sistemlerin ilk maliyet kalemidir.

    Ajanlar birbirine tam konuşma geçmişini devrettiğinde her devrin bağlamı bir öncekinin üstüne biner: devir başına taşınan bağlam devir sayısıyla doğrusal, görev başına toplam maliyet ise devir sayısının karesine yakın büyür — görev karmaşıklığı hiç değişmese bile. Bunun yerine ortak bir görev kaydı tutun: ajanlar bu kaydın belirli alanlarını okur ve yazar, geçmişin tamamını taşımaz.

    DevredilenSonucuTercih
    Tam konuşma geçmişiDevir başına bağlam doğrusal, toplam maliyet karesine yakın büyürKaçının
    Yalnızca son mesajKısıt ve gerekçe kaybolurYetersiz
    Şemalı görev kaydıBağlam kaydın boyutuyla sınırlı kalır, alanlar denetlenebilirÖnerilen
    Görev kaydı + gerekli alıntılarKaynak zinciri korunurUzun akışlarda önerilen
    Görev kaydı aynı zamanda hata ayıklama yüzeyidir: hangi alanın hangi devirde bozulduğu görülür.

    Doğrulama adımı: bir görevi koşturup her devirde taşınan bağlamın token sayısını ayrı ayrı yazın. Doğru kurulumda bu sayı devir sırasından bağımsızdır; kaydın boyutunun belirlediği bir tavanda kalır. Sayı devirden devire büyüyor ve tavana oturmuyorsa alan değil geçmiş devrediyorsunuz demektir.

  6. 06

    Döngü ve bütçe korumasını kur

    Azami devir, azami araç çağrısı, süre ve maliyet üst sınırı koyun; aynı devir imzası ikinci kez görülürse akışı durdurup insana devredin.

    Çok ajanlı sistemlerin karakteristik arızası karşılıklı devir döngüsüdür: iki ajan görevi birbirine geri verir, her turda bir şey yapılmış gibi görünür ve akış kendiliğinden durmaz. Koruma modelden değil çalıştırıcı katmandan gelmeli.

    • Azami devir sayısı: akış başına sabit bir üst sınır koyun.
    • Tekrar algısı: aynı ajan çiftinde aynı girdinin ikinci kez görülmesi akışı durdursun.
    • Bütçe: görev başına azami araç çağrısı, azami token ve azami süre tanımlayın.
    • Durdurma davranışı: sınır aşıldığında sessizce kesmeyin; kısmi sonucu ve nedenini insana devredin.
    python
    def devret(kayit, hedef_ajan, sinirlar):
        imza = (kayit.kimlik, hedef_ajan, kayit.ozet_saglama)
        if imza in kayit.gorulen_devirler:
            return durdur(kayit, neden="tekrar_eden_devir")
        if kayit.devir_sayisi >= sinirlar.azami_devir:
            return durdur(kayit, neden="devir_siniri")
        if kayit.harcanan_token >= sinirlar.azami_token:
            return durdur(kayit, neden="butce")
        kayit.gorulen_devirler.add(imza)
        kayit.devir_sayisi += 1
        return calistir(hedef_ajan, kayit)
  7. 07

    İzleri tek korelasyon kimliğiyle bağla

    Tüm ajan adımlarını, araç çağrılarını ve devir kenarlarını tek bir görev kimliğiyle kaydedin; sapmanın hangi devirde başladığı ancak böyle görülür.

    Tek ajanlı bir akışta izler zaten sıralıdır. Çok ajanlı akışta ise aynı görev birkaç süreç, birkaç servis hesabı ve birkaç model çağrısına yayılır; görev kimliği tüm bu adımlara taşınmazsa bir başarısızlığın nerede başladığı yalnızca tahmin edilebilir.

    • Görev kimliği: tüm adımlarda değişmeden taşınır.
    • Devir kenarı: kaynak ajan, hedef ajan, tur numarası.
    • Araç çağrısı: ad, parametre özeti, sonuç durumu, süre.
    • Karar noktası: hangi ajan neden devretti, bitiş koşulu sağlandı mı.
    • Sonlanma: başarı, sınır aşımı veya hata; nedeniyle birlikte.

    Doğrulama adımı: rastgele bir başarısız görevi seçin ve yalnızca izlere bakarak neyin yanlış gittiğini anlatmayı deneyin. Anlatamıyorsanız eksik olan alan izlerdedir, modelde değil.

  8. 08

    Tek ajan taban çizgisiyle karşılaştır

    Aynı görev setini tek ajanla ve çok ajanlı kurulumla koşturun; kalite, adım verimliliği, gecikme, maliyet ve kararlılığı ayrı ayrı raporlayın.

    Çok ajanlı kurulum, tek ajanlı taban çizgisini geçtiğini gösteremiyorsa taşıdığı karmaşıklığı hak etmiyor demektir. Karşılaştırma aynı görev setinde, aynı modelle ve yeterli tekrarla yapılmalı; tek koşuya bakmak kararsız akışlarda hiçbir bilgi vermiyor.

    EksenNasıl okunur
    Görev tamamlamaBeklenen son duruma ulaşma oranı
    Adım verimliliğiGörev başına araç çağrısı ve devir sayısı
    GecikmeUçtan uca süre; paralellik gerçekten kazandırdı mı
    MaliyetTamamlanmış görev başına maliyet, denenen görev başına değil
    KararlılıkAynı görevin tekrarları arasındaki sonuç değişkenliği
    Beş eksen ayrı raporlanır; tek bir skora indirmek kararı gizliyor.

SIK DÜŞÜLEN TUZAKLAR

  • Rol dağıtmayı mimari sanmak

    Ajanlara "araştırmacı", "eleştirmen", "yazar" gibi roller vermek tek başına iş bölümü değildir. Yetki, girdi-çıktı şeması ve bitiş koşulu ayrılmadıkça aynı modeli üç kez çağırmış olursunuz: maliyet katlanır, kalite yerinde kalır.

  • Devri serbest metne bırakmak

    Şemasız devirde bir ajanın "tamamlandı" dediği iş, diğerinin beklediği iş olmayabilir. Hata ancak sonuç yanlış çıktığında fark edilir ve izden geriye doğru okunamaz.

  • Bütçe korumasını modele yazmak

    İsteme "en fazla üç kez dene" yazmak bir sınır değil bir ricadır. Sayaç çalıştırıcı katmanda tutulmuyorsa döngü durmaz.

  • Paralelliği bağımlı adımlara uygulamak

    Birbirinin çıktısını bekleyen adımları eşzamanlı başlatmak gecikmeyi düşürmez; yarım veriyle çalışan bir ajan ve tekrarlanması gereken bir tur üretir.

  • Ortak servis hesabı kullanmak

    Tüm ajanlar aynı kimlikle çalışırsa hem yetki bölünmesi kazancı kaybolur hem de iz kayıtlarında hangi ajanın hangi değişikliği yaptığı ayrıştırılamaz.

KONTROL LİSTESİ

  • Bölme gerekçesi tek cümleyle yazıldı ve üç sınırdan birine dayanıyor
  • Seçilen topoloji tek sayfalık bir şemaya sığıyor
  • Her devir için girdi, çıktı, hata biçimi ve bitiş koşulu şemalı
  • Her ajanın araç listesi ve servis hesabı ayrı
  • Ajanlar tam geçmişi değil şemalı görev kaydını devrediyor
  • Azami devir, bütçe ve tekrar algısı çalıştırıcı katmanda uygulanıyor
  • Tüm adımlar tek bir görev kimliğiyle izlenebiliyor
  • Tek ajan taban çizgisiyle karşılaştırma yapıldı ve beş eksen raporlandı

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

Sık sorulan sorular

Kaç ajan kullanmalıyım?

Sayı bir hedef değil sonuçtur: her ajan yazılı bir gerekçeyle doğmalı. Pratikte iki veya üç ajanla başlayıp ölçmek, baştan beş ajanlı bir şema kurmaktan daha hızlı sonuç veriyor. Gerekçesiz eklenen her ajan devir yüzeyini ve hata olasılığını birlikte büyütüyor.

Çok ajanlı sistem tek ajandan daha mı pahalı?

Genellikle evet, çünkü her devir yeni bir bağlam ve yeni bir model çağrısı demek. Ama maliyeti belirleyen ajan sayısı değil devredilen bağlamın büyüklüğü; tam geçmiş yerine şemalı görev kaydı devreden kurulumlar farkı belirgin biçimde kapatıyor. Kararı tamamlanmış görev başına maliyetle verin.

Ajanlar birbirine ne göndermeli?

Konuşma geçmişini değil, sözleşmede tanımlı alanları: görev kimliği, bulgular, kaynak kimlikleri, eksik kalanlar ve güven seviyesi. Alıcı ajanın kendi işini yapmak için ihtiyaç duymadığı hiçbir alan devre girmemeli.

Ajanlar sonsuz döngüye girerse ne yapmalı?

Döngüyü istemle değil çalıştırıcıyla durdurun: azami devir sayısı, bütçe sınırı ve aynı devir imzasının tekrarını yakalayan bir kontrol. Akış durduğunda kısmi sonucu ve durma nedenini insana devredin; sessiz kesme, teşhis edilemeyen bir arızaya dönüşüyor.

Kaynaklar

  1. 01Sağlayıcı ajan çatısı ve araç çağrısı dokümantasyonları — Model ve altyapı sağlayıcıları · Dokümantasyon
  2. 02Sinaptik Research — çok ajanlı akış 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.