Ajanlar için Oyuncu Modülü Async Mesajlar ve Tiplenen Çalışma Zamanları
Type: Learn + Build
Languages: Python (stdlib)
Prerequisites: Phase 14 · 01 (Agent Loop), Phase 14 · 12 (Workflow Patterns)
Time: ~75 minutes
Öğrenme Hedefleri
- Aktör modelini açıkla: ajanlar aktör olarak, mesajlar tek IPC olarak, aktör başına başarısızlık izolyasyonu.
- AutoGen v0.4'in üç API katmanının adını verin Core, AgentChat, Ekstensiyonlar ve her biri ne için.
- Mesaj teslimatını manipülasyondan ayırmanın neden hata izolesi ve doğal eşzamanlılık sağladığını açıklayın.
- Python'da bir stdlib aktör çalıştırma zamanını uygulayın ve iki ajan kod değerlendirmesi akışını ona aktarın.
Sorun
Çoğu ajan çerçeve sinkron: bir ajan üretir, bir ajan tüketir, bir çağrı yığınında. Başarısızlıklar yığın çöküyor. Eşzamanlılık bağlanır. dağıtım yeniden yazılmayı gerektirir.
AutoGen v0.4'in cevabı: oyuncu modeli. Her ajan özel bir posta kutusuna sahip bir oyuncu. Mesajlar tek etkileşimdir. Çalışma zamanı teslimatı manipülasyondan ayırır. Başarısızlıklar tek bir oyuncuya izole edilir. Eşleşme doğaldır. dağıtım sadece farklı bir nakledir.
Anlaşım
Oyuncular
Bir aktörün:
- Özel bir devlet (birden hiç dokunmamıştır).
- Bir posta kutusu (eğitim kuyrusu).
- Bir yöneticisi:
receive(message) -> effectsEfektleri " yanıt " , " başka bir aktörüne gönder " , " yeni aktör yarat " , " güncelleme durumu " , " kendisini durdur " .
İki oyuncu hafızayı paylaşamaz, sadece mesaj gönderebilirler.
Üç API katmanı
AutoGen v0.4 yüzeyini üç bölüme ayırır:
- Core.Düşük düzeyde aktörler çerçevesini.
AgentRuntime- Evet .Agent- Evet .Message- Evet .Topic- Asynk mesaj değişimi, olay yönlendirici. - AgentChat.Görev yönlendirici yüksek düzeyde API (v0.2'nin ConversableAgent'inin yerine geçiyor).
AssistantAgent- Evet .UserProxyAgent- Evet .RoundRobinGroupChat- Evet .SelectorGroupChat- Evet . - Extensions.Entegre: OpenAI, Anthropic, Azure, araçlar, bellek.
Neden kopartma önemli?
V0.2 modelinde, arama yapılıyor.agent_a.chat(agent_b)Agent_b'nin geri dönmesine kadar ajan_a'yı sinkron olarak bloke eder.send(agent_b, msg)Agent_b'nin posta kutusuna mesajı koyar ve geri gönderir.
- Fault isolation.A. A. çalıştırma zamanı B'nin yöneticisinde başarısızlığı yakalar ve ne yapılması gerektiğine karar verir (log, yeniden denemek, ölü harf).
- Natural concurrency.Bir seferde birçok mesaj uçuyor; aktörler posta kutusunu aynı anda işliyor.
- Distribution-ready.Posta Kutusu + nakliye, oyuncunun işlem içinde ya da başka bir ev sahibi üzerinde olmasına rağmen aynı soyutlama.
Topolojiler
- RoundRobinGroupChat.Ajanlar bir sırada sırayla döner.
- SelectorGroupChat.Seçim ajanı, konuşma bağlamına göre kimden sonra gideceğini seçer.
- Magentic-One.Web tarama, kod işleme, dosya işleme için referans çoklu ajan ekibi AgentChat'te inşa edilmiş.
Gözlemsellik
OpenTelemetry desteği yerleştirilmiştir. Her mesaj bir uzantı yayar; araç çağrıları taşıyor gen_ai.*2026 OTel GenAI semantik sözleşmelerine göre özellikler (Desin 23).
Durum: Bakım modusu
2026'un başlarında: AutoGen v0.7.x araştırma ve prototip oluşturmak için istikrarlıdır. Microsoft, aktif gelişimini Microsoft Agent Framework'e, üretim halefi (halk ön izlemesi 1 Ekim 2025; 1.0 GA'nın 2026'ın ilk çeyreğinin sonuna yöneliktir) değiştirdi.
Yapın
code/main.pySTDlib aktör çalıştırma zamanını uyguluyor:
Messageile yazılmış yararlı yüksender- Evet .recipient- Evet .topic- Evet .body- Evet .Actorsoyut olarakreceive(message, runtime)- Evet .Runtimeortak bir kuyruk, teslimat, başarısızlık izolyasyonu ile olay döngüsü.- İki oyuncuyla bir demo:
ReviewerAgentinceleme kodu,ChecklistAgentbir kontrol listesini yürütürler. Bir anlaşma olana kadar mesajları değiştirirler.
Çek şunu:
python3 code/main.pyİz mesaj teslimatını, diğerini çarpmayan bir aktörde simülasyon bir başarısızlığı ve ortak bir hüküm üzerine birleştiğini gösterir.
Kullan
- AutoGen v0.4/v0.7Araştırma, prototip oluşturma, çoklu ajanlı modeller için sabit.
- Microsoft Agent Framework üretim varisi (toplu ön izleme Ekim 2025); aynı oyuncu model fikirleri yenilenmiş bir API'de.
- LangGraph swarm topology(Daahi 13) Ortak araçlar ile paylaşılmış el uzatma yoluyla benzer bir model.
- Custom actor runtime belirli bir nakliye ihtiyacınız olduğunda (NATS, RabbitMQ, gRPC).
Gönder
outputs/skill-actor-runtime.mdverilen bir çok ajanlı görev için minimum bir oyuncu çalıştırma süresi ve bir takım şablonu (RoundRobin veya Selector) oluşturur.
Egzersizler
- Bir ölü harf sırası ekleyin: bir işçi kaldırdığında, başarısız mesajı insan denetimi için park edin. DLQ oyuncakınıza ne sıklıkla vurulur?
- Uygulama
SelectorGroupChat: bir seçiciler oyuncusu, konuşma durumuna göre bir sonraki mesajı işleyenleri seçer. - dağıtılmış taşımacılığı ekle: işlem içindeki kuyrukları JSON-over-HTTP sunucusu için değiştirin, böylece aktörler ayrı süreçlerde çalışabilir.
- Mesaj başına bir OTel uzantısı (veya bir no-op stand-in) gönderin.
gen_ai.agent.name- Evet .gen_ai.operation.name23. Ders için. - AutoGen v0.4'in mimarlık yazısını okuyun. Oyuncaklarınızı gerçeklere taşıyin.
autogen_coreÜretim sırasında neyi atlattın ki?
Anahtar Terimler
| Term | What people say | What it actually means |
|---|---|---|
| Actor | "Agent" | Private state + inbox + handler; no shared memory |
| Message | "Event" | Typed payload; the only way actors interact |
| Inbox | "Mailbox" | Per-actor queue of pending messages |
| Runtime | "Agent host" | Event loop that routes messages and isolates failures |
| Topic | "Channel" | Named publish-subscribe route between actors |
| Fault isolation | "Let it crash" | One actor failing does not crash others |
| RoundRobinGroupChat | "Fixed-rotation team" | Agents take turns in order |
| SelectorGroupChat | "Context-routed team" | Selector picks who goes next |
| Magentic-One | "Reference team" | Multi-agent squad for web + code + files |
Daha Fazla Okumak
- AutoGen v0.4, Microsoft Research Yeniden tasarlanmış bir görev
- LangGraph overview Grafik şeklinde alternatif
- OpenTelemetry GenAI semantic conventions AutoGen'in varsayılan olarak yaydığı alanlar
This free lesson is part of the AI Engineering from Scratch curriculum. Read the full explanation, run the lesson code, and verify the result in the interactive reader or from the repository source.
Browse the complete course catalog or open this lesson on GitHub.