Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Dokumen ini memberikan tampilan mendalam pada komponen Edges dari sistem Microsoft Agent Framework Workflow.
Gambaran Umum
Tepi menentukan bagaimana pesan mengalir di antara pelaksana dengan kondisi opsional. Mereka mewakili koneksi dalam grafik alur kerja dan menentukan jalur aliran data.
Jenis Tepi
Kerangka kerja mendukung beberapa pola tepi:
- Tepi Langsung: Koneksi satu-ke-satu sederhana antara para eksekutor
- Tepi Bersyarat: Tepi dengan kondisi yang menentukan kapan pesan akan mengalir
- Sisi Fan-out: Satu pemroses mengirim pesan ke beberapa target
- Fan-in Edges: Beberapa eksekutor mengirim pesan ke satu target
Tepi Langsung
Bentuk koneksi paling sederhana antara dua pelaksana:
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()
Simpul Bersyarat
Tepi yang hanya diaktifkan saat kondisi tertentu terpenuhi:
// 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()
Tepi switch-case
Merutekan pesan ke pelaksana yang berbeda berdasarkan kondisi:
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()
Tepi Fan-out
Distribusikan pesan dari satu pelaksana ke beberapa target:
// 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()
Tepi Fan-in
Kumpulkan pesan dari beberapa sumber ke dalam satu target:
// Aggregate results from multiple workers
builder.AddFanInEdge(aggregatorExecutor, sources: [worker1, worker2, worker3]);
builder.add_fan_in_edge([worker1, worker2, worker3], aggregator_executor)
Langkah Berikutnya
- Pelajari tentang Alur Kerja untuk memahami cara membuat dan menjalankan alur kerja.