Microsoft Agent Framework 1.0とは|Semantic KernelとAutoGenを統合した.NET/Python共通エージェントSDK

Microsoft Agent Framework(MAF)は、MicrosoftのAIエージェント開発SDKであるSemantic KernelとAutoGenを1本に統合した後継フレームワークです。2026年4月3日にバージョン1.0が正式版(GA)となり、安定APIと長期サポートを備えたプロダクション対応SDKとして提供されています。同じ開発チームが「両者の直接の後継」と位置づけており、Semantic KernelとAutoGenは以後バグ修正とセキュリティ対応のみの保守モードへ移りました。本記事は、C#(.NET)開発者を主対象に、1.0で安定した機能とプレビュー機能の切り分け、最小実装、マルチエージェント設計、旧SDKからの移行を実コードで整理します。

まとめ:Microsoft Agent Framework 1.0の要点

  • 正体:Semantic Kernel(エンタープライズ機能)とAutoGen(マルチエージェント・オーケストレーション)を統合した単一SDK。2026年4月3日に1.0 GA、ライセンスはMIT。
  • 旧SDKの扱い:Semantic KernelとAutoGenは保守モード(新機能の追加なし)。新規開発はMAFが推奨され、既存資産は移行を前提に計画する。
  • C#の基本形IChatClientChatClientAgentでラップしてAIAgentを得る。会話状態はAgentSessionで保持し、agent.CreateSessionAsync()で生成する(プレビュー期のAgentThreadGetNewThread()はGAで改称・廃止された)。
  • 最小実装:NuGetのMicrosoft.Agents.AIを入れ、ChatClientAgentを作ってRunAsync()で動く。逐次出力はRunStreamingAsync()
  • 安定 vs プレビュー:単一/マルチエージェント、ワークフロー、MCP・A2A、YAML宣言定義は安定版。DevUI・Foundryホスト統合・AG-UI/CopilotKitアダプター・Agent Harnessはプレビュー。
  • 言語対応:.NETとPythonが一次対応。Goも公式SDK(agent-framework-go)があるがパブリックプレビュー段階。

Microsoft Agent Framework 1.0の位置づけとSemantic Kernel・AutoGenとの関係

MAFが答える最大の疑問は「Semantic KernelとAutoGenのどちらを使えばよいのか」でした。1.0はこの二択そのものを解消します。Semantic Kernelが持つ型安全性・フィルター・テレメトリ・セッション状態管理といったエンタープライズ機能と、AutoGenが得意とする単一/マルチエージェントの簡潔な抽象化を、同じチームが1つのSDKへ束ね直しました。ここへ、実行経路を明示的に制御するグラフベースのワークフローが加わっています。

重要なのは旧SDKの立ち位置です。Semantic KernelとAutoGenは保守モードに入り、バグ修正とセキュリティパッチは続くものの新機能は追加されません。新しいオーケストレーションやプロバイダー対応はMAF側にのみ入るため、これから作るなら1.0を起点にするのが妥当です。Semantic Kernel自体の概念はSemantic Kernelとは何か?その基本的な概要と特徴についてで押さえられます。

1.0で安定した機能とプレビュー機能の切り分け

「1.0=すべて本番投入可」ではありません。GAで安定APIとなった範囲と、まだ破壊的変更があり得るプレビュー範囲を分けて把握することが、本番採用の前提になります。

安定版(1.0 GA):単一エージェントとサービスコネクタ(Foundry、Azure OpenAI、OpenAI、Anthropic Claude、Amazon Bedrock、Google Gemini、Ollama)、ミドルウェアフック、エージェントメモリとContextProvider、グラフベースのワークフロー、マルチエージェント・オーケストレーション(Sequential・Concurrent・Handoff・GroupChat・Magentic-One)、YAML宣言的定義、A2A・MCP対応。

プレビュー:DevUI、Foundryホステッドエージェント統合、Foundryツール/メモリ/可観測性、AG-UI・CopilotKit・ChatKitアダプター、Skills、GitHub Copilot SDK・Claude Code SDK連携、Agent Harness。

本番システムには安定版の機能で骨格を組み、プレビュー機能は隔離した箇所で段階的に検証するのが安全です。プレビューはマイナー更新でAPIが変わる前提で扱います。

基本アーキテクチャと5行で動く最小C#エージェント

MAFのC#実装は3層で理解すると迷いません。最下層がIChatClient(モデルプロバイダーの抽象。Microsoft.Extensions.AI由来)、中間がChatClientAgentIChatClientをラップし、システム指示の適用・ツール呼び出しループ・会話履歴管理を担うAIAgentの具象実装)、その周囲にリクエスト/レスポンスを差し込むミドルウェアが載ります。プロバイダーを差し替えても上位コードが変わらないのは、このIChatClient抽象のおかげです。

AIAgentとChatClientAgentの関係、最小実装

まずNuGetパッケージを追加します。

dotnet add package Microsoft.Agents.AI

OpenAI(またはAzure OpenAI)のチャットクライアントをIChatClient化し、ChatClientAgentでラップします。変数の型は基底のAIAgentで受けられます。

using Microsoft.Agents.AI;
using Microsoft.Extensions.AI;
using OpenAI;

IChatClient chatClient = new OpenAIClient("your-api-key")
    .GetChatClient("gpt-4o-mini")
    .AsIChatClient();

AIAgent agent = new ChatClientAgent(chatClient, instructions: "あなたは簡潔に答える技術アシスタントです。");

Console.WriteLine(await agent.RunAsync("Microsoft Agent Frameworkとは何ですか?"));

Azure AI Foundryを使う場合は、専用パッケージ(Microsoft.Agents.AI.Foundry)でAIProjectClientからAsAIAgent()拡張で直接エージェント化できます。

using Azure.AI.Projects;
using Azure.Identity;
using Microsoft.Agents.AI;

AIAgent agent = new AIProjectClient(new Uri(endpoint), new DefaultAzureCredential())
    .AsAIAgent(model: "gpt-4o-mini", instructions: "簡潔に答えてください。", name: "HelloAgent");

AgentSessionによる会話状態の保持(RunAsyncとRunStreamingAsyncの違い)

複数ターンの対話では、AgentSessionに会話状態を持たせます。プレビュー期の記事やブログでは「AgentThread」「GetNewThread()」と書かれることがありますが、1.0のGA APIではこれらはAgentSessionagent.CreateSessionAsync()に改称されています。セッションを生成してrun時に渡すと、直前までの文脈を引き継げます。

AgentSession session = await agent.CreateSessionAsync();
await agent.RunAsync("私の名前はタロウです。", session);
Console.WriteLine(await agent.RunAsync("私の名前は?", session)); // 直前の文脈を保持

応答の受け取り方は2通りです。RunAsync()は完全な応答を一括で返し、バッチ処理やAPIレスポンスに向きます。RunStreamingAsync()はトークンを逐次返すため、チャットUIのように「打鍵中」の体感を出したい場面で待ち時間の知覚を下げられます。

await foreach (var update in agent.RunStreamingAsync("一文で豆知識を教えて。"))
{
    Console.Write(update);
}

マルチエージェント・オーケストレーション5パターンの使い分け

MAFは複数エージェントの協調を5つの型で提供します。字面が似ていますが、制御の渡し方と適するタスクが異なります。要件に対して過剰な型を選ぶとトークンコストとレイテンシが無駄に増えるため、最小の型から始めます。

パターン 制御の流れ 向くタスク
Sequential 前段の出力を次段へ直列に渡す 調査→要約→校正の依存工程
Concurrent 同一入力を複数へ並列投入し集約 多視点レビュー・並列生成
Handoff 制御権を別エージェントへ完全移譲 一次受付から専門担当へ振り分け
GroupChat 複数が会話しながら合意形成 設計レビュー・相互批評
Magentic-One マネージャーが動的にタスク計画を更新 手順を固定できない探索的タスク

SequentialとHandoffは静的な役割分担、GroupChatとMagentic-Oneは動的な協調に向きます。Magentic-Oneは実行しながらタスクリストを組み替える点が他の4型と根本的に異なり、柔軟な反面、収束制御とコスト上限の設計が前提になります。まず単一エージェント+ツールで解けないかを確認し、解けない依存関係が明確なときにSequential、役割の切り替えが必要ならHandoff、と段階的に上げるのが安全です。

Semantic Kernel・AutoGenからの移行ポイント

旧SDKの資産は捨てずに移行できます。中心となる置き換えは、Semantic KernelのKernelインスタンス起点の構成をAIAgent抽象へ寄せること、AutoGenのAssistantAgentChatClientAgentへ読み替えることの2点です。

旧SDK MAF 1.0での対応
SK: Kernel + KernelFunction/Plugin AIAgent + AITool(関数はツール登録)
SK: ChatHistory AgentSession(会話状態の保持)
AutoGen: AssistantAgent ChatClientAgent
AutoGen: GroupChat 等の会話 マルチエージェント・オーケストレーション

一度に全面移行せず、既存プロジェクトは保守モードのまま稼働させ、新規開発分からMAFで書くハイブリッド運用が現実的です。判断基準は、その機能に新しいオーケストレーションやプロバイダー対応が必要かどうか。新機能が要るなら移行、安定稼働だけで十分なら据え置き、と切り分けます。移行時はプラグインのツール変換とツール呼び出しの引数スキーマ差異でつまずきやすいため、まず1エージェント分を移して挙動を突き合わせてから広げます。

本番運用を支える拡張機能:MCP・A2A・YAML・Foundryホスティング

1.0では外部連携と運用の要素が安定版に入っています。MCP(Model Context Protocol)対応により、外部ツールをエージェントから動的に発見・呼び出しできます。プロトコル自体の役割はMCPとは何か?その基本概念と役割について解説で確認できます。エージェント間をまたぐ協調にはA2A(Agent2Agent)対応が使え、異なるランタイム間の相互運用を担います(Agent2Agent(A2A)とは何か?次世代エージェント間通信の定義と概要)。

エージェント定義をコードではなくYAMLで宣言する方式も安定版です。定義と実装を分離したい、非エンジニアが定義を調整する、といった運用でコード変更なしに構成を差し替えられます。ホスティングはAzure AI Foundryのマネージド実行やDurable Taskによるチェックポイント保存(長時間ワークフローの障害復旧)と組み合わせられますが、Foundryホステッド統合や可観測性の一部はプレビュー扱いのため、本番導入は段階採用が前提です。フロントエンドへ出力をストリーミングするAG-UI・CopilotKitアダプターもプレビューで、仕組みはAG-UIとは?AIエージェントとフロントエンドをつなぐプロトコルの仕組みと実装が参考になります。

Microsoft Agent Framework 1.0を採用すべき場面・見送るべき場面

他フレームワークと横並びにすると、MAFの強みと弱みははっきりします。C#ネイティブで型安全に書けること、Azure・Foundry・Aspireとの本番デプロイ連携、複数モデルプロバイダーの抽象化が主な優位点です。LangChainはPythonエコシステムが厚くC#では選択肢が限られ、CrewAIは手軽な反面プロバイダー構成の自由度が低い、AutoGen単体はマルチエージェントの実験に強いがエンタープライズ機能が薄い——という位置づけの中で、MAFは.NET中心のチームにとって既定候補になります。

一方で、採用を急ぐべきでない場面もあります。第一に、必要な機能がプレビュー(DevUI依存の運用、Foundryホステッド統合、AG-UIアダプター等)に集中している場合は、APIの破壊的変更を本番で被るリスクがあるため安定版の範囲で組めるまで待つ判断が妥当です。第二に、既存のSemantic Kernel/AutoGenが安定稼働していて新しいオーケストレーションが不要なら、移行工数に見合いません。第三に、Python主体でLangChainやCrewAIの資産が厚いチームでは、C#ネイティブという利点が効きにくく、乗り換え効果は限定的です。選定は「.NET中心か」「必要機能が安定版に含まれるか」「新機能を追う必要があるか」の3点で判断すると外しません。

よくある質問

Microsoft Agent FrameworkはSemantic KernelとAutoGenの後継ですか?

はい。開発した同じチームが「両者の直接の後継」と明言しています。Semantic KernelとAutoGenは保守モード(バグ修正・セキュリティ対応のみ)に移り、新機能はMAFへ集約されます。新規開発はMAFが推奨です。

1.0はいつ正式版になりましたか?

2026年4月3日にバージョン1.0がGA(正式版)となりました。2026年2月にリリース候補(RC)を経ての正式版で、安定APIと長期サポートが約束されています。

ChatClientAgentとは何ですか?

任意のIChatClient実装をラップしてAIAgentとして振る舞わせる具象クラスです。システム指示の適用、関数(ツール)呼び出しループ、会話履歴の管理などを標準で備えます。プロバイダー非依存にエージェントを組む中核で、new ChatClientAgent(chatClient, instructions: "...")のように生成します。

RunAsyncとRunStreamingAsyncはどう使い分けますか?

RunAsync()は応答を一括で返すためバッチ処理やAPI応答向き、RunStreamingAsync()はトークンを逐次返すためチャットUIなど体感速度を重視する場面向きです。AgentSessionを渡せば、どちらも複数ターンの文脈を保持できます。

Magentic-Oneは他のパターンと何が違いますか?

マネージャー役が実行中にタスクリストを動的に組み替える点が特徴です。Sequential・Concurrent・Handoff・GroupChatが事前に決めた流れで動くのに対し、Magentic-Oneは手順を固定できない探索的タスクに向きます。柔軟な反面、収束条件とコスト上限の設計が必須です。

関連記事

資料請求

RELATED POSTS 関連記事