このドキュメントでは、Microsoft Agent Framework のワークフローの イベント システムについて詳しく説明します。
概要
ワークフローの実行に可観測性を提供する組み込みイベントがあります。
組み込みのイベントの種類
// 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...
次のステップ
- ワークフローでエージェントを使用して インテリジェントなワークフローを構築する方法について説明します。
- ワークフローをエージェントとして使用する方法について説明します。
- ワークフローで要求と応答を処理する方法について説明します。
- ワークフローで状態を管理する方法について説明します。
- チェックポイントを作成し、そこから再開する方法について説明します。
- ワークフローを監視する方法について説明します。
- ワークフローでの状態の分離について説明します。
- ワークフローを視覚化する方法について説明します。