10
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Microsoft Agent Framework v1.0.0 で学ぶマルチエージェントハンズオン

10
Last updated at Posted at 2026-04-04

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

4.png

私は 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 ファイルをディレクトリに置くだけ。コード修正は不要です。

image.png

コンテキストエンジニアリングの要素としての Skills の追加。あなたのソリューションにも Agent Skills を!

Agent observability の重要性

エージェントの動作は非決定的です。なぜそのツールを呼んだのか、なぜその回答になったのか。マルチエージェント開発、本番運用では必ずトレーシングが必要になります。

本ワークショップでは、チュートリアル 02 の時点で Jaeger + OpenTelemetry を使ったリクエストトレースが設定されます。後から追加するのではなく、最初から可観測性が組み込まれた状態 でエージェント開発を学べます。

cd jaeger
docker compose up -d
# http://localhost:16686 で Jaeger UI にアクセス

image.png

コンテキストエンジニアリングの観点からも極めて重要

すべての 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

10
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?