Microsoft Agent Frameworkを使用してワークフローを作成してみる(AIエージェントを実装)

普段のお仕事に役立つ普遍的なプログラミングTIPSや、業界で注目度が高い最新情報をお届けする「編集部ピックアップ」。
今回はMicrosoft Agent Frameworkを使用してAIエージェントを実装したワークフローを作成する方法についてお届けします。

Microsoft Agent Frameworkとは?

Microsoft Agent Frameworkは、2025年10月1日にプレビュー公開されたAIエージェントとマルチエージェント用のワークフローを構築するためのオープンソース開発キットで、 .NETおよびPythonに対応しています。

また、2026年2月19日にはリリース候補版が公開されています。

Microsoft Agent Frameworkでは、AIアプリケーションに求められる以下の2つの機能を実装できるようになっています。

  • AIエージェント
    LLMを使用してユーザーからの入力を処理し、ツールと MCP サーバーを呼び出してアクションを実行し応答を生成するエージェントを作成
  • ワークフロー
    複数のエージェントと関数を接続して複雑なマルチステップのタスクを実行するワークフローを作成

今まではSemantic Kernel(AIエージェントの開発用フレームワーク)とAutoGen(複数のAIエージェントを連携してタスクを処理するためのオーケストレーションの開発用フレームワーク)が提供されていましたが、Microsoft Agent Frameworkはこの2つを統合したフレームワークという位置付けになっています。

前回の記事では、Microsoft Agent Frameworkを使用して .NETアプリケーションにワークフローを実装する方法について紹介しました。本記事ではワークフローにAIエージェントを実装する方法を紹介します。

ワークフローを作成する

前提条件

  • Microsoft Foundryのリソースとプロジェクトを作成してAIモデルをデプロイしておきます(参考
  • Azure CLIを使用してAzureのサブスクリプションに認証を通しておきます(参考

本記事ではMicrosoft Foundryに作成したプロジェクトにgpt-5.4-miniをデプロイして使用します。

前提条件

アプリケーションの作成

Visual Studioでコンソールアプリケーションを作成します。

アプリケーションの作成

NuGetパッケージマネージャーから以下のパッケージをインストールします。

  • Azure.Identity
  • Microsoft.Agents.AI.AzureAI
  • Microsoft.Agents.AI.Workflows
アプリケーションの作成

Program.csに以下のコードを追加して、Microsoft Foundryのクライアントを作成します。AIProjectClientクラスを使用してクライアントを初期化します。

var endpoint = "Microsoft Foundryで作成したプロジェクトのエンドポイント";
var deploymentName = "gpt-5.4-mini";
var aiProjectClient = new AIProjectClient(new Uri(endpoint), new AzureCliCredential());

上記の「Microsoft Foundryで作成したプロジェクトのエンドポイント」は、作成したプロジェクトの初期ページで確認できます。

アプリケーションの作成

CreateAIAgentAsyncメソッドを使用して、ワークフローに実装するMicrosoft FoundryのAIエージェントを作成します。これらのエージェントは渡されたテキストを、日本語→フランス語→ドイツ語→英語の順序で各言語に翻訳する処理を行います。

AIAgent japaneseAgent = await aiProjectClient.CreateAIAgentAsync(
    "Japanese-Translator",
    deploymentName,
    "あなたは翻訳アシスタントとして、与えられたテキストを日本語に翻訳します。");
AIAgent frenchAgent = await aiProjectClient.CreateAIAgentAsync(
    "French-Translator",
    deploymentName,
    "あなたは翻訳アシスタントとして、与えられたテキストをフランス語に翻訳します。");
AIAgent germanAgent = await aiProjectClient.CreateAIAgentAsync(
    "German-Translator",
    deploymentName,
    "あなたは翻訳アシスタントとして、与えられたテキストをドイツ語に翻訳します。");
AIAgent englishAgent = await aiProjectClient.CreateAIAgentAsync(
    "English-Translator",
    deploymentName,
    "あなたは翻訳アシスタントとして、与えられたテキストを英語に翻訳します。");

次にWorkflowBuilderクラスを使用してシーケンシャルなワークフローを作成します。開始するエグゼキューター(Executor、ワークフロー内の個々の処理単位)として、日本語に翻訳するエージェントjapaneseAgentを指定します。

var workflow = new WorkflowBuilder(japaneseAgent)
    .AddEdge(japaneseAgent, frenchAgent)
    .AddEdge(frenchAgent, germanAgent)
    .AddEdge(germanAgent, englishAgent)
    .Build();

さらにAddEdgeメソッドを使用して、japaneseAgentが処理を完了したらその出力をfrenchAgentの入力として渡す→frenchAgentが処理を完了したらその出力をgermanAgentの入力として渡す→germanAgentが処理を完了したらその出力をenglishAgentの入力として渡す、といった順序で進めるようにエッジ(Edge、ワークフロー内のエグゼキューター間でメッセージがどのように流れるかを定義)を設定します。

最後にワークフローを実行して結果を返すコードを追加します。ワークフローをストリーミングモードで実行して、リアルタイムで各イベントを把握します。以下のようにRunStreamAsyncメソッドを使用します。また、WatchStreamAsyncメソッドでワークフローの実行中に発生するイベントを非同期ストリームで受け取ります。

await using StreamingRun run = await InProcessExecution.RunStreamingAsync(workflow, new ChatMessage(ChatRole.User, "Hello World!"));

await run.TrySendMessageAsync(new TurnToken(emitEvents: true));

await foreach (WorkflowEvent evt in run.WatchStreamAsync())
{
    if (evt is AgentResponseUpdateEvent executorComplete)
    {
        Console.WriteLine($"{executorComplete.ExecutorId}: {executorComplete.Data}");
    }
}

途中にあるTrySendMessageAsyncメソッドですが、こちらはワークフローでエグゼキューターとしてAIエージェントを起動させるために必要なコードになっています。TurnTokenで渡すemitEventsは、エグゼキューターに対してAgentRunEventsを発生させるかどうかを送信します。trueを設定することでAIエージェントが起動します。

実行してみる

作成したワークフローを実行すると、次のような出力が表示されます。最初にワークフローに渡した「Hello World!」が、順番でAIエージェントで設定した言語に翻訳されていることが確認できます。

実行してみる

さいごに

今回はMicrosoft Agent Frameworkを使用してワークフローにAIエージェントを実装する方法を確認してみました。前回とほぼ同じ手順でシンプルなワークフロー(シーケンシャルなワークフロー)にAIエージェントを実装することが可能になっている印象を受けました。Microsoft Agent Frameworkは現時点ではリリース候補版なのでまだ実装方法が更新されていくかと思いますが、正式リリース後にはまたブログ記事で紹介していきたいと思います。

\  この記事をシェアする  /