Microsoft Agent Framework – Building Blocks for AI Part 3解説:.NET開発者が確認すべき変更点

.NETでAIエージェントを作るなら、2026年5月5日時点で確認すべき中心テーマは Microsoft Agent Framework です。Microsoft公式ブログの「Microsoft Agent Framework – Building Blocks for AI Part 3」では、単なるチャットボットではなく、ツール実行・複数ターン会話・記憶・ワークフロー・人間承認を組み合わせたエージェント開発の考え方が整理されています。(Microsoft for Developers)

結論から言うと、既存の.NETアプリにAI機能を追加している開発者、Semantic Kernelのエージェント機能を使っているチーム、RAGやツール呼び出しを本番運用に近づけたいチームは、早めに設計方針を見直すべきです。特に AIAgent、AgentSession、AIContextProvider、グラフベースのワークフローは、今後の.NET向けAIエージェント開発で重要な確認ポイントになります。

目次

Microsoft Agent Framework – Building Blocks for AI Part 3の位置づけ

「Microsoft Agent Framework – Building Blocks for AI Part 3」は、.NETにおけるAI構築要素を整理する連載の第3回です。第1回では Microsoft.Extensions.AI、第2回では Microsoft.Extensions.VectorData によるRAGやセマンティック検索が扱われ、今回の第3回では、それらを使って「行動できるAI」を作るための Microsoft Agent Framework が中心に取り上げられています。(Microsoft for Developers)

ここで重要なのは、Microsoft Agent Frameworkが「チャット応答の便利ライブラリ」ではなく、AIエージェントを構成するためのSDKとして説明されている点です。ブログでは、エージェントを「入力を受けて回答するだけのチャットボット」と区別し、タスクを理解し、必要なツールを選び、結果を評価し、次の行動を判断する存在として整理しています。(Microsoft for Developers)

つまり、今回の情報を読むべきなのは「AIチャットを表示したい人」だけではありません。次のような開発に関わる人ほど影響が大きくなります。

対象者確認すべき理由
.NETでAIアプリを開発している人IChatClient から AIAgent へ拡張する設計が示されている
C#でツール呼び出しを実装している人AIFunctionFactory と Description 属性の使い方が重要になる
Semantic KernelのAgent機能を使っている人名前空間、作成方法、セッション、ツール登録、実行APIの差分確認が必要
RAGを業務システムに組み込んでいる人AIContextProvider と VectorData を組み合わせる設計が見えてくる
本番環境でAIエージェントを運用したい人セッション永続化、承認フロー、ワークフロー制御を設計に入れる必要がある

何が変わったのか:ポイントは「チャット」から「行動するエージェント」への拡張

今回の更新で最も大きな見方の変化は、AI機能を「モデルに質問して回答を返す処理」ではなく、「モデルが判断し、ツールを使い、複数ステップで目的を達成する処理」として設計する流れが明確になったことです。

従来のチャット実装では、開発者が次のような分岐を書きがちでした。

if (userInput.Contains("天気"))
{
    // 天気APIを呼び出す
}
else if (userInput.Contains("予約"))
{
    // 予約処理を呼び出す
}

Microsoft Agent Frameworkでは、エージェントにツールを渡し、モデル側が「どのツールを使うべきか」を判断する構成になります。ブログでは、AsAIAgent() によるエージェント作成、RunAsync() による実行、RunStreamingAsync() によるストリーミング応答が紹介されています。(Microsoft for Developers)

実務上の意味は大きく、AIアプリの設計が次のように変わります。

従来の実装Microsoft Agent Frameworkでの考え方
入力文を条件分岐で判定するエージェントにツールを渡し、モデルが呼び出しを判断する
1回のプロンプトで完結させるセッションで会話履歴を維持する
RAG検索を都度アプリ側で差し込むAIContextProvider で文脈注入を仕組み化する
複数処理を手続き的に並べるワークフローでエージェントや処理単位を接続する
危険な処理をプロンプトで抑止する人間承認フローを組み込む

まず確認すべき変更点

AsAIAgent() によるエージェント化

ブログでは、Azure OpenAIなどのチャットクライアントから .AsAIAgent() を呼び出して AIAgent を作成する例が示されています。これは、IChatClient を中心にしていた実装を、セッション、ツール、メモリを扱えるエージェントへ拡張する入口です。(Microsoft for Developers)

確認すべき点は、既存コードが「チャットクライアントを直接呼ぶだけ」になっているかどうかです。単純なFAQや要約であれば従来の構成でも十分な場合がありますが、業務処理、検索、外部API、複数ステップの判断が必要なら、AIAgent への移行を検討する価値があります。

ツール呼び出しは AIFunctionFactory と説明文が鍵になる

Microsoft Agent Frameworkでは、関数をツールとしてエージェントに渡せます。公式ブログでは AIFunctionFactory.Create() を使い、天気取得関数をツールとして登録する例が紹介されています。(Microsoft for Developers)

ここで見落としやすいのが Description 属性です。ツール名だけでは、モデルが「いつ、どの引数で使うべきか」を正しく判断できない場合があります。説明文は、AIにとっての操作マニュアルに近い役割を持ちます。

悪い例は、次のような曖昧な説明です。

[Description("Get data.")]
static string GetCustomerData(string id) => ...

実務では、次のように用途と制約を明確に書く方が安全です。

[Description("指定された顧客IDに対応する顧客の契約状況を取得します。請求情報や個人情報の更新は行いません。")]
static string GetCustomerContractStatus(
    [Description("社内CRMで使用する顧客ID。メールアドレスではありません。")] string customerId)
    => ...

ツール説明が曖昧だと、不要なタイミングでツールが呼ばれる、引数の解釈を誤る、回答に必要な処理が実行されない、といった問題が起きやすくなります。

複数ターン会話は AgentSession で管理する

AIエージェントを本番で使う場合、1問1答だけでは足りません。ユーザーは「さっきの件を修正して」「別の条件で再計算して」のように、前の会話を前提にした指示を出します。

Microsoft Agent Frameworkでは AgentSession を使って会話の文脈を維持できます。ブログでは CreateSessionAsync() でセッションを作成し、同じセッションを RunAsync() に渡す例が示されています。また、セッションのシリアライズとデシリアライズにも触れられており、ステートレスなサービスでの運用を意識した内容になっています。(Microsoft for Developers)

実務で確認すべきポイントは次の通りです。

確認項目判断基準
セッション保存先WebアプリならDB、分散キャッシュ、ユーザー単位のストレージを検討する
保存期間問い合わせ対応なら短期、パーソナライズなら長期保存の要否を検討する
個人情報名前、メール、顧客ID、契約情報などを保存する場合は社内ルールに合わせる
削除方法ユーザー退会、問い合わせ終了、保存期限切れ時の削除手段を決める
復元テストサーバー再起動後に会話文脈が正しく戻るか確認する

特に注意したいのは、セッションを「便利だから全部保存する」と考えないことです。AIエージェントの文脈保存は便利ですが、個人情報や機密情報を含む可能性があります。保存する情報、保存しない情報、保存期間を開発初期に決めておくべきです。

長期的な記憶は AIContextProvider で扱う

セッションは会話中の文脈を維持する仕組みですが、ユーザーの名前、好み、過去のやり取り、関連ドキュメントなどを継続的に使いたい場合は、より明確な「記憶」の設計が必要です。

公式ブログでは AIContextProvider が紹介されています。StoreAIContextAsync で会話後に情報を保存し、ProvideAIContextAsync で次の実行前に必要な文脈を提供する考え方です。(Microsoft for Developers)

この仕組みは、RAGとの相性が高いのが特徴です。たとえば社内ヘルプデスク用エージェントなら、次のような構成が考えられます。

用途AIContextProvider で注入する情報の例
社内FAQ回答VectorDataで検索した関連FAQ、手順書、規程
営業支援顧客の契約プラン、過去の商談要約、禁止提案事項
開発支援対象リポジトリ、使用フレームワーク、コーディング規約
カスタマーサポート問い合わせ履歴、製品プラン、サポート範囲

ただし、記憶を増やすほど回答品質が上がるとは限りません。古い情報、矛盾した情報、権限外の情報が混ざると、AIの判断を誤らせます。AIContextProvider を使う場合は、取得条件、情報の鮮度、ユーザー権限、監査ログをセットで設計する必要があります。

ワークフロー対応で何ができるようになるのか

Microsoft Agent Frameworkの注目点は、単体エージェントだけでなく、グラフベースのワークフローを扱えることです。公式ブログでは、ExecutorとEdgeを接続し、順次処理、並列処理、条件分岐、フィードバックループ、サブワークフローといったパターンが紹介されています。(Microsoft for Developers)

これは、AIエージェントを「1つの巨大な万能AI」として作るのではなく、役割ごとの処理単位に分けて設計する考え方です。

たとえば、記事作成支援エージェントなら次のような流れが考えられます。

ステップ役割
要件整理エージェントキーワード、読者、制約条件を整理する
調査エージェント指定ソースや社内資料から根拠を集める
執筆エージェント初稿を作成する
レビューエージェント事実誤認、過剰表現、SEO不足を確認する
修正エージェントレビュー結果を反映する
人間レビュー公開可否を判断する

公式ブログでは、writer-critic型のワークフローも例示されています。作成役のエージェントがドラフトを出し、批評役のエージェントが評価し、承認されるまで戻す構成です。(Microsoft for Developers)

実装時の注意点は、ループに上限を設けることです。AI同士のレビューを自動化すると、品質向上に役立つ一方で、条件が曖昧だと同じ修正を繰り返したり、トークン消費が増え続けたりします。承認条件、最大試行回数、失敗時の終了処理を必ず決めてください。

Human-in-the-loopは本番運用で必須の設計要素

AIエージェントがツールを呼び出せるようになると、便利さと同時にリスクも増えます。検索や計算なら影響は小さくても、メール送信、DB更新、決済、権限変更、チケット削除のような操作では、人間の承認が必要です。

公式ブログでは、Microsoft Agent Frameworkがツール承認ワークフローをサポートし、エージェントがツール呼び出しを提案して人間の承認を待つ仕組みが説明されています。特にデータベース書き込み、金融取引、コミュニケーション送信のような機密性の高い操作で重要とされています。(Microsoft for Developers)

実務では、ツールを次の3段階に分けると設計しやすくなります。

ツール種別例承認の要否
読み取りのみFAQ検索、天気取得、在庫確認原則として自動実行しやすい
影響が限定的な書き込み下書き作成、チケットのメモ追加条件付きで自動化を検討
重大な操作メール送信、顧客情報更新、決済、削除人間承認を必須にする

「プロンプトで禁止しているから大丈夫」と考えるのは危険です。実際のシステムでは、コード側で承認、権限、監査ログ、ロールバック手段を用意する必要があります。

Semantic Kernel利用者が確認すべき移行ポイント

Semantic Kernelのエージェント機能を使っている場合、Microsoft Agent Frameworkへの移行可否を早めに確認する価値があります。Microsoft Learnの移行ガイドでは、名前空間、エージェント作成、セッション、ツール登録、実行API、DI、エージェント型の統合など、多くの差分が整理されています。(Microsoft Learn)

特に影響が出やすいのは次の項目です。

項目Semantic Kernel側Agent Framework側確認ポイント
名前空間Microsoft.SemanticKernel などMicrosoft.Agents.AI、Microsoft.Extensions.AIusingの変更だけでなく型の役割も確認する
エージェント作成Kernel 依存が大きいAsAIAgent() などで作成既存のKernel中心設計を見直す
セッション呼び出し側がThread種別を意識AgentSession を作成セッション保存・削除の設計を確認する
ツール登録PluginやKernel経由AIFunctionFactory.Create() で直接登録既存Pluginをどう移すか確認する
非ストリーミング実行InvokeAsync()RunAsync()戻り値とメッセージ構造の違いを確認する
ストリーミング実行InvokeStreamingAsync()RunStreamingAsync()UI表示やログ出力の処理を修正する
DIKernel 登録が中心AIAgent 登録サービス登録とライフサイクルを見直す

移行で失敗しやすいのは、「API名を置き換えるだけ」で済ませようとするケースです。Microsoft Agent Frameworkでは、セッション、ツール、ワークフロー、人間承認を含めたエージェント設計に寄せて考える必要があります。移行時は、既存機能を単純変換するよりも、業務フロー単位で再設計した方が安全です。

設定確認で見落としやすいポイント

Microsoft Agent Frameworkを試すだけなら、公式ブログのサンプルのように環境変数を使ってAzure OpenAIのエンドポイントやデプロイ名を読み込む構成で始められます。ただし、本番環境に近づける場合は設定の扱いを慎重に確認してください。

特に DefaultAzureCredential は開発時には便利ですが、本番利用では意図しない資格情報探索やレイテンシ、セキュリティ上の懸念があるため、Microsoft Learnでは ManagedIdentityCredential など具体的な資格情報の利用を検討するよう注意されています。(Microsoft Learn)

確認すべき設定は次の通りです。

確認項目具体的に見ること
モデル接続Azure OpenAI、OpenAI、GitHub Models、Foundry Local、Ollamaなど、利用先に応じたSDKと認証方式
環境変数エンドポイント、デプロイ名、APIキーをコードに直書きしていないか
認証開発用認証と本番用認証を分けているか
ツール権限エージェントが呼び出せるAPIを最小限にしているか
セッション保存会話履歴の保存先、保存期間、削除方法を決めているか
ログプロンプト、ツール呼び出し、承認結果、エラーを追跡できるか
コストワークフローやループでトークン消費が増えすぎないか
失敗時処理ツール失敗、モデル応答失敗、承認拒否時の動作を定義しているか

すぐ試す場合の最小ステップ

Microsoft Agent Frameworkをまだ触っていない場合は、いきなり複雑なマルチエージェント構成を作るより、次の順番で試すのがおすすめです。

ステップ目的成功条件
1単体エージェントを作るRunAsync() で応答を取得できる
2ストリーミングを試すUIやコンソールに逐次表示できる
31つのツールを追加するユーザー入力に応じて関数が呼ばれる
4セッションを使う直前の会話を参照した回答ができる
5セッションを保存・復元するアプリ再起動後も文脈を戻せる
6AIContextProvider を追加するユーザー情報や検索結果を文脈として注入できる
7ワークフロー化する複数処理を順番・条件分岐・ループで制御できる
8承認フローを入れる重要操作の前に人間が許可・拒否できる

最初の検証では、読み取り専用のツールを使うのが安全です。たとえば「社内FAQを検索する」「商品情報を取得する」「チケット一覧を取得する」といった処理から始めると、エージェントの判断ミスが起きても影響を抑えられます。

対応すべきチームと優先度

すべての.NET開発者がすぐに移行する必要はありません。優先度は、AI機能の使い方によって変わります。

優先度対象対応方針
高Semantic Kernel Agent機能を使っているチーム移行ガイドを読み、API差分とセッション設計を確認する
高ツール呼び出しで業務処理を実行しているチーム承認フロー、権限、ログ、失敗時処理を見直す
中RAGや社内検索をAIに組み込んでいるチームAIContextProvider と VectorData連携を検討する
中複数エージェントやレビュー自動化を考えているチームワークフロー設計とループ上限を検討する
低単純なFAQチャットのみのチームすぐ移行せず、将来の拡張候補として把握する

重要なのは、Microsoft Agent Frameworkを「流行の新SDK」として導入するのではなく、自社アプリのAI機能がどの段階にあるかで判断することです。単純なチャット応答なら過剰設計になる可能性があります。一方で、AIに外部ツールを使わせる、会話をまたいで文脈を保持する、複数工程を自動化するなら、早めに設計を寄せるメリットがあります。

導入時の注意点と失敗しやすいポイント

ツールを増やしすぎない

エージェントに多くのツールを渡すほど便利に見えますが、モデルがどれを使うべきか迷いやすくなります。最初は、用途が明確でリスクの低いツールから始めてください。

悪い設計は、「顧客検索」「顧客更新」「メール送信」「請求処理」「契約解除」などを一気に渡すことです。まずは検索系だけを許可し、更新系は承認付きに分ける方が安全です。

セッションと長期記憶を混同しない

セッションは会話の流れを保つ仕組みです。一方、長期記憶はユーザー属性や過去の行動を再利用する仕組みです。両者を混同すると、不要な個人情報を保存したり、古い文脈で誤った回答をしたりします。

「この会話中だけ必要な情報」と「次回以降も使う情報」を明確に分けてください。

人間承認を後回しにしない

AIエージェントが外部APIを呼ぶ構成では、承認フローを後から追加するのが難しくなる場合があります。特にメール送信、データ更新、課金、削除を扱うなら、最初の設計段階でHuman-in-the-loopを入れるべきです。

ワークフローの成功条件を曖昧にしない

writer-critic型のようなフィードバックループは便利ですが、「何を満たせば承認か」が曖昧だと終わりません。品質基準、最大ループ回数、失敗時の通知先を決めておきましょう。

まず取るべき次の行動

2026年5月5日時点で「Microsoft Agent Framework – Building Blocks for AI Part 3」を読む際は、単なる新機能紹介としてではなく、.NETにおけるAIエージェント設計の確認リストとして見るのが実用的です。

まずは、自社のAI機能を次の3つに分類してください。

分類次にやること
チャット応答のみ既存構成で十分か確認し、将来の拡張候補として把握する
ツール呼び出しありAIFunctionFactory、説明文、権限、承認フローを確認する
複数工程・記憶・RAGありAgentSession、AIContextProvider、ワークフロー設計を検討する

Microsoft Agent Frameworkは、.NETでAIエージェントを本格的に作るための構成要素を整理するものです。今すぐ全面移行するかどうかよりも、既存のAI実装が「単発のチャット」なのか、「行動するエージェント」へ進む段階なのかを見極めることが重要です。まずは小さな検証環境で単体エージェント、ツール呼び出し、セッション管理までを試し、その後にメモリ、ワークフロー、人間承認へ広げていくのが安全な進め方です。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次