Declarative Workflows 1.0: Ajan Orkestrasyonu Artık YAML’da
Çok ajanlı uygulamalarda adımların sırası, dallanmalar ve ajanlar arası devirlerin tamamı çoğu zaman uygulama kodunun içine gömülür. Bu yaklaşım orkestrasyonu okumayı, sürümlemeyi ve değiştirmeyi zorlaştırır. Microsoft, Agent Framework için declarative workflows (bildirimsel iş akışları) yaklaşımını 1.0 sürümüne taşıdı: Python tarafındaki agent-framework-declarative paketi 1.0.0 olarak yayımlandı ve halihazırda kararlı olan.NET tarafındaki Microsoft.Agents.AI.Workflows.Declarative paketine katıldı.
Bildirimsel iş akışı ne anlama geliyor?
Declarative workflows, orkestrasyonu uygulama mantığından ayırır. Ajanların nasıl koordine olduğunu, durumun nasıl değiştiğini, yürütmenin nerede dallandığını ve insan onayının ne zaman devreye gireceğini YAML dosyalarında tanımlarsınız. Agent Framework bu tanımı yükleyip standart bir Workflow nesnesine dönüştürür; sonrasında kodla yazılmış bir iş akışıyla aynı biçimde çalıştırılabilir, akış (stream) verilebilir ve başka iş akışlarıyla birleştirilebilir.
Bu ayrımın pratik faydası şu: İş akışı bir çağrı grafiği yerine bir belge olduğu için ürün sahipleri, çözüm mimarları ve geliştiriciler framework kodunu okumadan davranışı gözden geçirebilir. Yeni bir onay adımı eklemek, ajan devrini değiştirmek ya da dallanma mantığını güncellemek çoğu zaman kod değişikliğinden çıkıp bir YAML değişikliğine dönüşür; ayrı olarak diff alınabilir, incelenebilir ve sürülebilir.
YAML’da yazılan bir yönlendirme örneği
Kaynağın verdiği örnek, gelen destek taleplerini doğru uzmana yönlendiren küçük bir masa üzerine kurulu. Bir triage ajanı isteği sınıflandırıyor; ardından bir koşul, isteği faturalama, satış veya destek ajanına iletiyor.
kind: Workflow
trigger:
kind: OnConversationStart
id: support_router
actions:
# Triage ajanı gelen isteği sınıflandırır.
- kind: InvokeAzureAgent
id: triage
conversationId: =System.ConversationId
agent:
name: TriageAgent
output:
responseObject: Local.Triage
# Kategoriye uyan uzmana yönlendirilir.
- kind: If
id: route
condition: =Local.Triage.Category = "Billing"
then:
- kind: InvokeAzureAgent
id: billing
agent:
name: BillingAgent
else:
- kind: If
condition: =Local.Triage.Category = "Sales"
then:
- kind: InvokeAzureAgent
id: sales
agent:
name: SalesAgent
else:
- kind: InvokeAzureAgent
id: support
agent:
name: SupportAgent
Yönlendirme, uygulamanın kontrol akışında değil tanımın içinde yaşıyor. Yeni bir kategori eklemek veya kontrollerin sırasını değiştirmek için listeyi düzenlemek yeterli; yeniden bağlanacak bir executor yok.
Python ve.NET tarafında yükleme
Python’da YAML tanımını yüklemek ve bir Workflow örneği oluşturmak için WorkflowFactory kullanılıyor:
from agent_framework.declarative import WorkflowFactory
factory = WorkflowFactory()
workflow = factory.create_workflow_from_yaml_path("support_router.yaml")
# workflow standart bir Workflow'dur; herhangi bir iş akışı gibi
# çalıştırılabilir, stream edilebilir veya birleştirilebilir.
.NET tarafında ise iş akışı tanımı DeclarativeWorkflowBuilder ile yükleniyor:
using Microsoft.Agents.AI.Workflows;
using Microsoft.Agents.AI.Workflows.Declarative;
// options nesnesi ajan sağlayıcınızı ve yapılandırmayı taşır.
Workflow workflow = DeclarativeWorkflowBuilder.Build<string>("CustomerSupport.yaml", options);
// Bu noktadan sonra `workflow`, diğer iş akışları gibi çalıştırılabilir veya stream edilebilir.
Bu kod parçaları yalnızca yükleme kısmına odaklanıyor. Biletleme, tırmandırma (escalation) ve insan devrini içeren tam çalıştırılabilir örnek için Microsoft’un müşteri destek örneklerine bakılabilir.
Neler kurulabilir?
Yukarıdaki yönlendirme örneği bilinçli olarak küçük tutulmuş; ama aynı yapı taşları çok ajanlı gerçek işleri kaldırıyor. Her yetenek için depoda çalıştırılabilir bir örnek var:
- Durum ve ifadeler: Değerleri iş akışı durumunda saklama ve Power Fx ifadeleriyle yeni değerler hesaplama (örn.
=If(IsBlank(inputs.name), "World", inputs.name)). - Kontrol akışı: Koşullar, döngüler ve atlamalar ile durum ya da ajan sonuçlarına göre dallanma.
- Ajan çağırma: Ardışık iş hatlarından (marketing örneği) koşullu yönlendirmeye (customer support örneği) kadar ajanları çağırma ve yanıtlarını yönlendirme.
- Fonksiyon, MCP ve HTTP araçları: Bir adımdan uygulama kodunu, MCP araçlarını veya HTTP çağrılarını tetikleme.
- Human-in-the-loop: Girdi veya onay için duraklama ve kişi yanıtladığında devam etme.
- Checkpoint ve resume: İş akışı durumunu kalıcı hale getirip yürütmeyi sonradan sürdürme.
Bildirimsel tanımlar standart Workflow örneği olarak yüklendiği için kod öncelikli iş akışlarıyla birlikte çalıştırılabilir ve birleştirilebilir. YAML’ın uygun olduğu yerlerde YAML, özel davranış gerektiğinde ise daha alt seviyeli API’ler kullanılabiliyor.
Kurulum
Kullandığınız SDK için ilgili paketi kurmanız yeterli:
pip install agent-framework-declarative
dotnet add package Microsoft.Agents.AI.Workflows.Declarative
Değerlendirme
Declarative workflows’un temel önerisi net: Orkestrasyonu kod yerine veri olarak tanımlamak. YAML’da yazıp konfigürasyon gibi gözden geçirebilir, uygulamanızla birlikte sürümleyebilir ve kod öncelikli iş akışlarını çalıştıran aynı çalışma zamanında yürütebilirsiniz. 1.0 sürümü hem Python hem de.NET tarafında geldiği için ekipler, yazım biçimini seçme özgürlüğünü koruyarak üretim seviyesinde çok ajanlı orkestrasyonlar kurmaya başlayabilir.
Kaynaklar ve İleri Okuma
- Move Agent Orchestration/Workflows out of Code with Agent Framework Declarative Workflows 1.0 – Peter Ibekwe, Microsoft DevBlogs
- Declarative Workflows – Microsoft Learn
- Python declarative örnekleri (GitHub)
- Python customer support örneği
- .NET customer support örneği
- Simple workflow örneği
- Conditional workflow örneği
- Marketing ardışık pipeline örneği
- Function tool örneği
- MCP tool örneği
- HTTP request örneği
- Human-in-the-loop örneği
- .NET checkpoint/resume örneği







Yorum gönder