以下の内容はhttps://blog.generative-agents.co.jp/entry/2025/12/08/162029より取得しました。


「AIエージェントキャッチアップ #60 - Microsoft Agent Framework」を開催しました

ジェネラティブエージェンツの大嶋です。

「AIエージェントキャッチアップ #60 - Microsoft Agent Framework」という勉強会を開催しました。

https://generative-agents.connpass.com/event/377601/generative-agents.connpass.com

アーカイブ動画はこちらです。

www.youtube.com

Microsoft Agent Framework

今回は、Semantic KernelやAutoGenからアイデアをまとめて拡張された「Microsoft Agent Framework」をキャッチアップしました。

Microsoft Agent FrameworkのGitHubリポジトリはこちらです。

github.com

公式ドキュメントはこちらです。

learn.microsoft.com

今回のポイント

Microsoft Agent Frameworkとは

Microsoft Agent Frameworkは、AIエージェントの構築、オーケストレーション、デプロイのためのフレームワーク(パブリックプレビュー)です。

Semantic KernelとAutoGenのアイデアを統合・拡張したもので、同じチームによる後継プロジェクトとのことです。

Microsoft Agent Frameworkでは、「AIエージェント」と「ワークフロー」を実装できます。

PythonとC#/.NETをサポートしており、この記事ではPython版を対象とします。

基本的な使い方

Microsoft Agent Frameworkは、uv add agent-framework --preでインストールできます。

基本的なエージェントの実装は以下のようになります。

import asyncio

from agent_framework.openai import OpenAIChatClient


async def main() -> None:
    async with (
        OpenAIChatClient(model_id="gpt-5-nano").create_agent(
            instructions="You are good at telling jokes.",
        ) as agent,
    ):
        result = await agent.run("Tell me a joke about a pirate.")
        print(result.text)


if __name__ == "__main__":
    asyncio.run(main())

OpenAIChatClientなどのcreate_agentでエージェントを作成し、runメソッドで実行します。 runの代わりにrun_streamメソッドを使用することで、ストリーミングにも対応しています。

create_agentには、「ツール」やLangChain v1のような「ミドルウェア」も設定可能です。

ワークフローの実装

Microsoft Agent Frameworkでは、ワークフローも実装できます。

ワークフローの各ステップは、Executorを継承したクラスか@executorデコレーターを使用して実装します。

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:
        result = text.upper()
        await ctx.send_message(result)
@executor(id="reverse_text_executor")
async def reverse_text(text: str, ctx: WorkflowContext[Never, str]) -> None:
    result = text[::-1]
    await ctx.yield_output(result)

そして、WorkflowBuilderadd_edgeset_start_executorでワークフローを構築します。

upper_case = UpperCase(id="upper_case_executor")

workflow = (
    WorkflowBuilder()
    .add_edge(upper_case, reverse_text)
    .set_start_executor(upper_case)
    .build()
)

ワークフローをrun_streamで実行すると、ワークフロー中のイベントをストリーミングできます。

async def main() -> None:
    async for event in workflow.run_stream("hello world"):
        print(f"Event: {event}")
        if isinstance(event, WorkflowOutputEvent):
            print(f"Workflow completed with result: {event.data}")

Microsoft Agent Frameworkのワークフローは、ステップの並列化や条件分岐にも対応しています。

LangGraphとの違い

LangGraphとの違いとしては、ワークフローのステップ間での値の受け渡し方が挙げられます。

LangGraphでは、ワークフローの中で共有される「ステート」を定義して、ステートを介して値を受け渡すのが基本です。

一方、Microsoft Agent Frameworkのワークフローでは、ステップ中にctx.send_messageとして渡した値が、次のステップの入力になるようになっています。

Human-in-the-Loop機能

Microsoft Agent Frameworkは、Human-in-the-Loopもサポートしています。

ワークフローのステップでctx.request_infoを使うと、一度処理を中断して追加の情報を求めることができます。

        await ctx.request_info(
            request_data=HumanFeedbackRequest(prompt=prompt),
            response_type=str,
        )

詳細は以下の公式ドキュメント・サンプルコードを参照してください。

learn.microsoft.com

github.com

次回のご案内

以上、今回は「Microsoft Agent Framework」をキャッチアップしました。

次回は「AIエージェントキャッチアップ #61 - AG-UI」ということで、AIエージェントをUIに接続する方法を標準化する「AG-UI」がテーマです!

https://generative-agents.connpass.com/event/378311/generative-agents.connpass.com

ご興味・お時間ある方はぜひご参加ください!

また、その次の回以降のテーマも募集しているので、気になるエージェントのOSSなどあれば教えてください!




以上の内容はhttps://blog.generative-agents.co.jp/entry/2025/12/08/162029より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14