다음을 통해 공유


Microsoft 에이전트 프레임워크 워크플로 핵심 개념 - 이벤트

이 문서에서는 Microsoft 에이전트 프레임워크의 워크플로 이벤트 시스템을 자세히 살펴봅니다.

개요

워크플로 실행에 대한 가시성을 제공하는 기본 제공 이벤트가 있습니다.

기본 제공 이벤트 유형

// Workflow lifecycle events
WorkflowStartedEvent    // Workflow execution begins
WorkflowOutputEvent     // Workflow outputs data
WorkflowErrorEvent      // Workflow encounters an error
WorkflowWarningEvent    // Workflow encountered a warning

// Executor events
ExecutorInvokedEvent    // Executor starts processing
ExecutorCompletedEvent  // Executor finishes processing
ExecutorFailedEvent     // Executor encounters an error
AgentRunResponseEvent   // An agent run produces output
AgentRunUpdateEvent     // An agent run produces a streaming update

// Superstep events
SuperStepStartedEvent   // Superstep begins
SuperStepCompletedEvent // Superstep completes

// Request events
RequestInfoEvent        // A request is issued
# Workflow lifecycle events
WorkflowStartedEvent    # Workflow execution begins
WorkflowOutputEvent     # Workflow produces an output
WorkflowErrorEvent      # Workflow encounters an error
WorkflowWarningEvent    # Workflow encountered a warning

# Executor events
ExecutorInvokedEvent    # Executor starts processing
ExecutorCompletedEvent  # Executor finishes processing
ExecutorFailedEvent     # Executor encounters an error
AgentRunEvent           # An agent run produces output
AgentRunUpdateEvent     # An agent run produces a streaming update

# Superstep events
SuperStepStartedEvent   # Superstep begins
SuperStepCompletedEvent # Superstep completes

# Request events
RequestInfoEvent        # A request is issued

이벤트 소비

using Microsoft.Agents.AI.Workflows;

await foreach (WorkflowEvent evt in run.WatchStreamAsync())
{
    switch (evt)
    {
        case ExecutorInvokedEvent invoke:
            Console.WriteLine($"Starting {invoke.ExecutorId}");
            break;

        case ExecutorCompletedEvent complete:
            Console.WriteLine($"Completed {complete.ExecutorId}: {complete.Data}");
            break;

        case WorkflowOutputEvent output:
            Console.WriteLine($"Workflow output: {output.Data}");
            return;

        case WorkflowErrorEvent error:
            Console.WriteLine($"Workflow error: {error.Exception}");
            return;
    }
}
from agent_framework import (
    ExecutorCompleteEvent,
    ExecutorInvokeEvent,
    WorkflowOutputEvent,
    WorkflowErrorEvent,
)

async for event in workflow.run_stream(input_message):
    match event:
        case ExecutorInvokeEvent() as invoke:
            print(f"Starting {invoke.executor_id}")
        case ExecutorCompleteEvent() as complete:
            print(f"Completed {complete.executor_id}: {complete.data}")
        case WorkflowOutputEvent() as output:
            print(f"Workflow produced output: {output.data}")
            return
        case WorkflowErrorEvent() as error:
            print(f"Workflow error: {error.exception}")
            return

사용자 지정 이벤트

사용자는 향상된 가시성을 위해 워크플로 실행 중에 사용자 지정 이벤트를 정의하고 내보낼 수 있습니다.

using Microsoft.Agents.AI.Workflows;
using Microsoft.Agents.AI.Workflows.Reflection;

internal sealed class CustomEvent(string message) : WorkflowEvent(message) { }

internal sealed class CustomExecutor() : ReflectingExecutor<CustomExecutor>("CustomExecutor"), IMessageHandler<string>
{
    public async ValueTask HandleAsync(string message, IWorkflowContext context)
    {
        await context.AddEventAsync(new CustomEvent($"Processing message: {message}"));
        // Executor logic...
    }
}
from agent_framework import (
    handler,
    Executor,
    WorkflowContext,
    WorkflowEvent,
)

class CustomEvent(WorkflowEvent):
    def __init__(self, message: str):
        super().__init__(message)

class CustomExecutor(Executor):

    @handler
    async def handle(self, message: str, ctx: WorkflowContext[str]) -> None:
        await ctx.add_event(CustomEvent(f"Processing message: {message}"))
        # Executor logic...

다음 단계