Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Przepływy pracy umożliwiają łączenie wielu kroków — każdy krok przetwarza dane i przekazuje je do następnego.
Definiowanie kroków przepływu pracy (funkcji wykonawczych):
using Microsoft.Agents.AI.Workflows;
// Step 1: Convert text to uppercase
class UpperCase : Executor
{
[Handler]
public async Task ToUpperCase(string text, WorkflowContext<string> ctx)
{
await ctx.SendMessageAsync(text.ToUpper());
}
}
// Step 2: Reverse the string and yield output
[Executor(Id = "reverse_text")]
static async Task ReverseText(string text, WorkflowContext<Never, string> ctx)
{
var reversed = new string(text.Reverse().ToArray());
await ctx.YieldOutputAsync(reversed);
}
Skompiluj i uruchom przepływ pracy:
var upper = new UpperCase();
var workflow = new AgentWorkflowBuilder(startExecutor: upper)
.AddEdge(upper, ReverseText)
.Build();
var result = await workflow.RunAsync("hello world");
Console.WriteLine($"Output: {string.Join(", ", result.GetOutputs())}");
// Output: DLROW OLLEH
Tip
Zapoznaj się z pełnym przykładem kompletnego pliku możliwego do uruchomienia.
Zdefiniuj kroki przepływu pracy (funkcje wykonawcze) i połącz je z krawędziami:
# Step 1: A class-based executor that converts text to uppercase
class UpperCase(Executor):
def __init__(self, id: str):
super().__init__(id=id)
@handler
async def to_upper_case(self, text: str, ctx: WorkflowContext[str]) -> None:
"""Convert input to uppercase and forward to the next node."""
await ctx.send_message(text.upper())
# Step 2: A function-based executor that reverses the string and yields output
@executor(id="reverse_text")
async def reverse_text(text: str, ctx: WorkflowContext[Never, str]) -> None:
"""Reverse the string and yield the final workflow output."""
await ctx.yield_output(text[::-1])
def create_workflow():
"""Build the workflow: UpperCase → reverse_text."""
upper = UpperCase(id="upper_case")
return (
WorkflowBuilder(start_executor=upper)
.add_edge(upper, reverse_text)
.build()
)
Skompiluj i uruchom przepływ pracy:
workflow = create_workflow()
events = await workflow.run("hello world")
print(f"Output: {events.get_outputs()}")
print(f"Final state: {events.get_final_state()}")
Tip
Zapoznaj się z pełnym przykładem kompletnego pliku możliwego do uruchomienia.
Dalsze kroki
Głębiej:
- Omówienie przepływów pracy — omówienie architektury przepływu pracy
- Sekwencyjne przepływy pracy — liniowe wzorce krok po kroku
- Agenci w przepływach pracy — używanie agentów jako kroków przepływu pracy