إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
تتيح لك مهام سير العمل تسلسل خطوات متعددة معا — تعالج كل خطوة البيانات وتمررها إلى الخطوة التالية.
تحديد خطوات سير العمل (المنفذون):
using Microsoft.Agents.AI.Workflows;
// Step 1: Convert text to uppercase
Func<string, string> uppercaseFunc = s => s.ToUpperInvariant();
var uppercase = uppercaseFunc.BindAsExecutor("UppercaseExecutor");
// Step 2: Reverse the string and yield output
class ReverseTextExecutor() : Executor<string, string>("ReverseTextExecutor")
{
public override ValueTask<string> HandleAsync(string message, IWorkflowContext context, CancellationToken cancellationToken = default)
{
return ValueTask.FromResult(string.Concat(message.Reverse()));
}
}
ReverseTextExecutor reverse = new();
إنشاء سير العمل وتشغيله:
WorkflowBuilder builder = new(uppercase);
builder.AddEdge(uppercase, reverse).WithOutputFrom(reverse);
var workflow = builder.Build();
await using Run run = await InProcessExecution.RunAsync(workflow, "Hello, World!");
foreach (WorkflowEvent evt in run.NewEvents)
{
if (evt is ExecutorCompletedEvent executorComplete)
{
Console.WriteLine($"{executorComplete.ExecutorId}: {executorComplete.Data}");
}
}
Tip
انظر هنا للحصول على نموذج تطبيق كامل قابل للتشغيل.
تحدد العينة الكاملة منفذين اثنين، وتربطهما بحافة، وتشغل سير العمل:
import asyncio
from agent_framework import WorkflowBuilder, WorkflowContext, executor
from typing_extensions import Never
@executor(id="upper_case")
async def upper_case(text: str, ctx: WorkflowContext[str]) -> None:
await ctx.send_message(text.upper())
@executor(id="reverse_text")
async def reverse_text(text: str, ctx: WorkflowContext[Never, str]) -> None:
await ctx.yield_output(text[::-1])
async def main() -> None:
workflow = WorkflowBuilder(start_executor=upper_case).add_edge(upper_case, reverse_text).build()
result = await workflow.run("hello world")
print(result.get_outputs()[0])
if __name__ == "__main__":
asyncio.run(main())
Tip
راجع نموذج سير عمل الرسم البياني الكامل. للحصول على بدائل وظيفية، راجع سير العمل الوظيفي الأساسيوسير العمل الوظيفي مع الوكلاء.
تحديد خطوات سير العمل (المنفذين) وتوصيلها بالحواف:
package main
import (
"context"
"fmt"
"slices"
"strings"
"github.com/microsoft/agent-framework-go/workflow"
"github.com/microsoft/agent-framework-go/workflow/inproc"
)
func main() {
// Step 1: Convert text to uppercase.
uppercase := workflow.NewExecutor("UppercaseExecutor", func(input string) string {
return strings.ToUpper(input)
}).Bind()
// Step 2: Reverse the string.
reverse := workflow.NewExecutor("ReverseExecutor", func(input string) string {
runes := []rune(input)
slices.Reverse(runes)
return string(runes)
}).Bind()
// Build the workflow by connecting executors sequentially.
wf, err := workflow.NewBuilder(uppercase).
AddEdge(uppercase, reverse).
WithOutputFrom(reverse).
Build()
if err != nil {
panic(err)
}
// Execute the workflow with sample input.
run, err := inproc.Default.Run(context.Background(), wf, "Hello, World!")
if err != nil {
panic(err)
}
for evt := range run.NewEvents() {
if evt, ok := evt.(workflow.ExecutorCompletedEvent); ok {
fmt.Printf("%s: %v\n", evt.ExecutorID, evt.Result)
}
}
}
Tip
راجع النموذج الكامل للملف الكامل القابل للتشغيل.
الخطوات التالية
انتقل إلى أبعد من ذلك:
- مهام سير العمل — فهم بنية سير العمل
- مهام سير العمل المتسلسلة — أنماط خطية خطوة بخطوة
- العوامل في مهام سير العمل — استخدام العوامل كخطوات سير عمل