Microsoft Agent Framework のバージョンが 1.0.0 を迎えましたので、このタイミングで一気に重要な機能を学べるハンズオンを用意しています。GitHub Codespaces を使用することで、極限まで事前環境構築時間を削減していますので、すぐに本質的なハンズオンに進むことができます。
このワークショップの全体像
本ワークショップは、4 つのフェーズに分かれた 11 本のハンズオンチュートリアルで構成されています。
基礎編(01–04):単一エージェントの "正しい作り方"
| # | テーマ | 習得する技術要素 |
|---|---|---|
| 01 | ツールを持つエージェント | Python 関数 → ツール自動変換、Annotated + Field による型安全なパラメータ定義 |
| 02 | マルチターン会話 |
AgentThread によるステート管理、OpenTelemetry + Jaeger 分散トレーシング |
| 02b | Foundry Agent Service 版 |
FoundryChatClient によるクラウドネイティブ実装 |
| 03 | コンテキストとメモリ |
ContextProvider のライフサイクル(before_run / after_run)、セッション横断パーソナライゼーション |
| 04 | Middleware と Filters | リクエスト/レスポンスパイプライン、レート制限、PII マスキング、コンテンツセーフティ |
マルチエージェント編(05–09):5 つのオーケストレーションパターン
| # | テーマ | パターン |
|---|---|---|
| 05 | ワークフロー基礎 |
SequentialBuilder(順次)/ ConcurrentBuilder(並行) |
| 06 | 協調型 RoundRobin |
GroupChatBuilder + MCP 統合 — LLM 駆動のスピーカー選択 |
| 07 | Handoff パターン |
HandoffBuilder — ドメイン特化エージェントへの委譲と自律モード |
| 08 | 高度なワークフロー |
WorkflowBuilder(カスタム DAG)/ MagenticBuilder(AI 駆動の動的オーケストレーション) |
| 09 | Human-in-the-Loop | 承認ゲート、インタラクティブリファインメント、予算ベース条件付き承認 |
エンタープライズ編(10):本番で必要なもの
| # | テーマ | 内容 |
|---|---|---|
| 10 | Foundry MCP 認証 | 4 つの認証パターン(Unauthenticated / Key / Agentic Identity / OAuth) |
追加要素(11):Agent Skills
| # | テーマ | 内容 |
|---|---|---|
| 11 | Agent Skills | Progressive Disclosure による効率的な知識管理 |
このワークショップで学べる事
マルチエージェントに 6 つの Builder パターンがある
| Builder | 制御フロー | 最適なユースケース |
|---|---|---|
SequentialBuilder |
A の出力 → B の入力 → C の出力 | レビュー・校正チェーン |
ConcurrentBuilder |
同一入力を並行処理 → 集約 | 多角的分析、ブレスト |
GroupChatBuilder |
LLM がスピーカーを動的選択 | 創発的ディスカッション |
HandoffBuilder |
明示的なエッジ定義 + 自律モード | カスタマーサポート(ドメイン委譲) |
WorkflowBuilder |
カスタム DAG(Fan-out / Fan-in) | 複雑なビジネスプロセス |
MagenticBuilder |
LLM 自身が実行計画を動的に生成 | 解法のない課題、Deep Research |
私は AutoGen 時代からこれらのデザインパターンを詳細に技術解析してきましたが、最終的には上記にまとめられました。
これを試したパートナー様の声:
AI Agent 案件対応のための引き出しが一気に増えました。
新機能:Agent Skills による Progressive Disclosure
チュートリアル 11 で学ぶ Agent Skills は、Agent Skills 仕様 に基づく知識管理パターンです。
従来のアプローチでは、エージェントのすべてのドメイン知識を instructions(システムプロンプト)に詰め込みます。スキルが 5 つ、10 つと増えるとコンテキストウィンドウを圧迫し、精度が劣化します。
Agent Skills は 3 段階の Progressive Disclosure でこれを解決します:
Phase 1: Advertise(広告)— スキル名 + 説明だけ注入(~100 トークン/スキル)
↓ ユーザーの質問がスキルに関連すると判断
Phase 2: Load(ロード)— SKILL.md 本文を取得(~2000 トークン)
↓ さらに詳細が必要な場合
Phase 3: Read Resources(参照)— FAQ やテンプレートを取得
エージェント自身が 会話の文脈から必要なスキルを判断し、load_skill() ツールで動的にロードします。スキルの追加は SKILL.md ファイルをディレクトリに置くだけ。コード修正は不要です。
コンテキストエンジニアリングの要素としての Skills の追加。あなたのソリューションにも Agent Skills を!
Agent observability の重要性
エージェントの動作は非決定的です。なぜそのツールを呼んだのか、なぜその回答になったのか。マルチエージェント開発、本番運用では必ずトレーシングが必要になります。
本ワークショップでは、チュートリアル 02 の時点で Jaeger + OpenTelemetry を使ったリクエストトレースが設定されます。後から追加するのではなく、最初から可観測性が組み込まれた状態 でエージェント開発を学べます。
cd jaeger
docker compose up -d
# http://localhost:16686 で Jaeger UI にアクセス
コンテキストエンジニアリングの観点からも極めて重要
すべての Azure OpenAI コールをトレースして、シーケンシャル処理/並列処理を可視化する。ツールコールのタイミングを可視化する、そしてコンテキストに何が含まれているのかを可視化する。
実行したら、トレース確認。この作業を習慣にしましょう。
今回は、GitHub Codespaces だけで完結するように作ってしまっていますが、エンタープライズでは Azure Monitor Application Insights 内で OpenTelemetry ベースのデータ収集を行って可視化することを検討してください。
これを試したパートナー様の声:
トレースをちゃんとやってなかったので、感動しました。デバッグがめちゃくちゃ捗ります!
Thread(会話履歴)と Memory(ユーザー記憶)の明確な分離
チュートリアル 02 と 03 で学ぶ AgentThread と ContextProvider は概念的に異なるものです:
| Thread(AgentThread) | Memory(ContextProvider) | |
|---|---|---|
| 保持するもの | 「You: 〇〇とは?、Assistant: ××です」 | 「このユーザーはビーチが好きで予算は中程度」 |
| 寿命 | 単一の会話セッション | セッションをまたいで永続化 |
| 用途 | 直近の文脈を維持 | パーソナライゼーション |
この分離を 設計レベル で理解しているかどうかが、エージェントの品質を大きく左右します。
もちろん Microsoft Foundry の Managed Memory とも連携できます。
フレームワークの思想を "体験" できる
多くのワークショップは「Hello World → デモ」で終わります。このワークショップは、フレームワークの設計思想(ミドルウェアパイプライン、Builder パターン、Progressive Disclosure)を段階的に体験させます。思想を理解すれば、API が変わっても応用できます。
マルチエージェントの "選択基準" が身につく
6 つの Builder パターンを全て体験したうえで「このユースケースにはどのパターンが最適か」を判断できるようになります。これは座学では得られない、ハンズオンならではの学びです。
GitHub


