Ajan Çağrı Zinciri: A2A İş Devri Gerçekte Nasıl Çalışır?

Ajan Çağrı Zinciri: A2A İş Devri Gerçekte Nasıl Çalışır?

Geçen gün öğrendik: organizasyon şeması ajanları da içermeli, her ajana sahibi (responsible_id) ve politikası olmalı. Bugün ise şu soru: ajanlara yapı verdikten sonra, bir ajan diğerine işi nasıl devreder? Mesela “Bu müşteri sorgusu sen yap” demesi yeterli mi?

Değil. Çünkü ajanlar çalıştıkça birbirlerine iş verir, ama her iş devri bir riski taşır.

Gerçek Bir Senaryo: İçerik Moderation Zinciri

Bir e-ticaret şirketinde üç ajan vardır:

  1. content_reviewer: Müşteri yorumlarını okur, flag atması gerekenleri işaretler (cinsel içerik, tehdit, spam)
  2. policy_classifier: Flagged yorumları sınıflandırır (kategori: “spam”, “offensive”, “suspicious”, “clear”)
  3. removal_executor: Yorum silme işini gerçekleştirir, sistem adminisine bildirir

Günün bir anında bin yorum gelmiş. content_reviewer hepsine bakmaya vaktı yok. Ne yapacak?

content_reviewer: "policy_classifier, şu 100 yorum var, 
                   kategoriye ayır lütfen."

Tamam ama burada denetimi gereken şeyler neler?

1. Yetki Kontrolü: Policy.md

policy_classifier’ın policy.md’sini oku:

classifier_policy.md:
- Beceri: Comment classification
- Sınırlar:
  - Maksimum 500 yorum/gün
  - Sadece İngilizce/Türkçe
  - "removal_decision" çıktısı yapamaz (sadece flag etme)
- Sonuç kontrolü: content_reviewer'ın manual incelemesine gerek

Ajan, 100 yorumu aldı. 500/gün sınırında okay. Yetki de var. Fakat kimin denetleyeceği belirtilmiş: content_reviewer. Yani policy_classifier yapacak işi, sonuç content_reviewer’a dönecek (geri döngü). Aksi takdirde “gölge AI” olur: policy_classifier sessiz sedasız işi yapar, kimse görmez.

2. Kapasite Kontrolü: Yardımcı Sistem

İşi devreden ajan (content_reviewer), alıcının (policy_classifier) şu an ne yaptığını bilmeli. Örneğin:

capacity_check():
  policy_classifier.current_queue_length = 450 comments
  policy_classifier.daily_limit = 500
  available_capacity = 500 - 450 = 50

content_reviewer: "100 yorum var ama capacity sadece 50. 
                   Başka ajana sor yada bekle."

Kapasite olmadığında ne yapılır? Seçenekler:

3. Risk Seviyesi: Yakalama Mekanizması

“Yorum silme” ne seviyede risk vardır? Yüksek. Çünkü müşteri hukuk davası açabilir.

risk_assessment():
  for comment in comments:
    if contains("lawsuit", "legal action"):
      risk_level = HIGH
      required_approvers = [content_officer, legal_reviewer]
    elif contains("personal_data"):
      risk_level = MEDIUM
      required_approvers = [content_officer]
    else:
      risk_level = LOW
      required_approvers = []

Yüksek risk içeriği var ise, policy_classifier bunu yapamaz. Devir başka bir ajana yönlendirilebilir veya insan müdüre eskalatör yapılır:

policy_classifier: "100 yorumun 3'ü legal risk içeriyor. 
                    Bu 3'ü legal_reviewer'a devretti,
                    kalan 97'yi işliyorum."

4. Veto Yetkisi: Alıcı İtiraz Edebilir

Çok önemli kural: Ajan işi kabul etmek zorundalığı yoktur.

policy_classifier, content_reviewer’ın talebine bakıp şöyle diyebilir:

policy_classifier: "Şu 100 yorumun 20'si videodan metin 
                    çıkartması gereken (OCR). Benim policy'mde 
                    videoyla ilgili bir yetkim yok. 
                    video_analyzer'a yönlendirin lütfen."

Bu veto yetkisi nedir? Ajana, iş yapamam diyebildiği alan. Fakat sonuç kaydedilmeli:

Log Entry:
- Request time: 2026-09-09 14:30
- Requester: content_reviewer
- Recipient: policy_classifier
- Task: Classify 100 comments
- Status: PARTIAL_ACCEPTED (20 -> video_analyzer, 80 -> proceeded)
- Reason: Video content falls outside scope
- Next action: content_reviewer redirects video batch to video_analyzer

Bu log olmadığında ne olur? content_reviewer, 20 yorumun kaybını fark etmez, report’ta “100 yorum işlendi” der.

5. Sonuç Bildirimi: Zincir Kapatması

policy_classifier işini bitirdi. Ne olur?

policy_classifier -> content_reviewer:
  "100 comment classification tamamlandı.
   Sonuç: 45 spam, 30 offensive, 15 suspicious, 10 clear.
   Report: attached_results.json
   Processed by: policy_classifier
   Time: 2026-09-09 14:45
   Next step: content_reviewer sonuçları onaylıyor."

content_reviewer -> removal_executor:
  "policy_classifier'ın verdiği 45 spam yorum silsin, 
   30 offensive ise flag'e kalsın (insan karar verecek)."

Burada zincir devam ediyor. Her ajan sonuç alıp log tutup devamını sağlıyor.

A2A Delegasyon Şablonu

Bir ajandan diğerine işi verirken, bu form doldurulmalıdır:

Alan Açıklama Örnek
İş Tipi Ne yapılacak “Comment classification”
Veri Miktarı Kaç item “100 comments”
Deadline Ne zaman hazır “2 saat içinde”
Risk Seviyesi Düşük/Orta/Yüksek “Medium (3 legal risk)”
Alıcının Kapasitesi Yetki ve kapasite kontrol “Approved for 80, escalate 20 to video_analyzer”
Veto Nedeni (eğer reddedilirse) Neden yapamadı “Video content out of scope”
Sonuç Format Nasıl geri dönmeli “JSON with classification labels”
Denetim Cevabı Sonuç kim denetleyecek “content_reviewer manual review”

Özet: Ajan Ekonomisinde Sorumluluk Zinciri

Ajanlara iş devriydi sadece olumlu bir çıktı sağlamaz. İyi bir sistem:

  1. Yetki kontrol: Policy.md’den geçerli mi?
  2. Kapasite kontrol: Şu an gücü var mı?
  3. Risk değerlendirme: Kimin ek onayı lazım?
  4. Veto mekanizması: Ajan itiraz edebilir mi?
  5. Zincir kapatması: Her adım log tutulur, sonuç kaydedilir

Bunlar yazılmadığında “ajan ekonomisi” değil “ajan kaos” olur.