Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu belge, Microsoft Agent Framework İş Akışı sisteminin Edges bileşenine ayrıntılı bir bakış sağlar.
Genel Bakış
Kenarlar, isteğe bağlı koşullarla iletilerin yürütücüler arasında nasıl aktığını tanımlar. İş akışı grafiğindeki bağlantıları temsil eder ve veri akışı yollarını belirler.
Kenar Türleri
Çerçeve çeşitli kenar desenlerini destekler:
- Doğrudan Kenarlar: Yürütücüler arasında basit bire bir bağlantılar
- Koşullu Kenarlar: İletilerin ne zaman akması gerektiğini belirleyen koşullara sahip kenarlar
- Uç uçları: Birden çok hedefe ileti gönderen bir yürütücü
- Fan-in Edges: Tek bir hedefe ileti gönderen birden çok yürütücü
Doğrudan Kenarlar
İki yürütücü arasındaki en basit bağlantı biçimi:
using Microsoft.Agents.AI.Workflows;
WorkflowBuilder builder = new(sourceExecutor);
builder.AddEdge(sourceExecutor, targetExecutor);
from agent_framework import WorkflowBuilder
builder = WorkflowBuilder()
builder.add_edge(source_executor, target_executor)
builder.set_start_executor(source_executor)
workflow = builder.build()
Koşullu Kenarlar
Yalnızca belirli koşullar karşılandığında etkinleşen kenarlar:
// Route based on message content
builder.AddEdge(
source: spamDetector,
target: emailProcessor,
condition: result => result is SpamResult spam && !spam.IsSpam
);
builder.AddEdge(
source: spamDetector,
target: spamHandler,
condition: result => result is SpamResult spam && spam.IsSpam
);
from agent_framework import WorkflowBuilder
builder = WorkflowBuilder()
builder.add_edge(spam_detector, email_processor, condition=lambda result: isinstance(result, SpamResult) and not result.is_spam)
builder.add_edge(spam_detector, spam_handler, condition=lambda result: isinstance(result, SpamResult) and result.is_spam)
builder.set_start_executor(spam_detector)
workflow = builder.build()
Switch-case Kenarları
Koşullara göre iletileri farklı yürütücülere yönlendirin:
builder.AddSwitch(routerExecutor, switchBuilder =>
switchBuilder
.AddCase(
message => message.Priority < Priority.Normal,
executorA
)
.AddCase(
message => message.Priority < Priority.High,
executorB
)
.SetDefault(executorC)
);
from agent_framework import (
Case,
Default,
WorkflowBuilder,
)
builder = WorkflowBuilder()
builder.set_start_executor(router_executor)
builder.add_switch_case_edge_group(
router_executor,
[
Case(
condition=lambda message: message.priority < Priority.NORMAL,
target=executor_a,
),
Case(
condition=lambda message: message.priority < Priority.HIGH,
target=executor_b,
),
Default(target=executor_c)
],
)
workflow = builder.build()
Dağıtım Kenarları
İletileri bir yürütücüden birden çok hedefe dağıtma:
// Send to all targets
builder.AddFanOutEdge(splitterExecutor, targets: [worker1, worker2, worker3]);
// Send to specific targets based on target selector function
builder.AddFanOutEdge(
source: routerExecutor,
targetSelector: (message, targetCount) => message.Priority switch
{
Priority.High => [0], // Route to first worker only
Priority.Normal => [1, 2], // Route to workers 2 and 3
_ => Enumerable.Range(0, targetCount) // Route to all workers
},
targets: [highPriorityWorker, normalWorker1, normalWorker2]
);
from agent_framework import WorkflowBuilder
builder = WorkflowBuilder()
builder.set_start_executor(splitter_executor)
builder.add_fan_out_edges(splitter_executor, [worker1, worker2, worker3])
workflow = builder.build()
# Send to specific targets based on partitioner function
builder = WorkflowBuilder()
builder.set_start_executor(splitter_executor)
builder.add_fan_out_edges(
splitter_executor,
[worker1, worker2, worker3],
selection_func=lambda message, target_ids: (
[0] if message.priority == Priority.HIGH else
[1, 2] if message.priority == Priority.NORMAL else
list(range(target_count))
)
)
workflow = builder.build()
Fanlı Kenarlar
Birden çok kaynaktan gelen iletileri tek bir hedefe toplayın:
// Aggregate results from multiple workers
builder.AddFanInEdge(aggregatorExecutor, sources: [worker1, worker2, worker3]);
builder.add_fan_in_edge([worker1, worker2, worker3], aggregator_executor)
Sonraki Adım
- İş akışları oluşturmayı ve yürütmeyi anlamak için İş Akışları hakkında bilgi edinin.