1. はじめに

Microsoft Foundry Agent Service は、Microsoft Foundry 上でエージェントを構築・運用するための managed サービスです。

エージェントを設計するとき、機能を「Planner(どう考えるか)」「Tool(何を使うか)」「Memory(何を覚えるか)」の 3 軸に分けて捉えると、全体像がつかみやすくなります。本記事ではこの 3 軸でサービスを解説します。

2. サービスの全体像

エージェントは Model・Instructions・Tools で定義され、実行基盤がモデル呼び出しとツール呼び出しのループを回します。会話状態はスレッドとして保持され、すべての判断はトレースとして観測できます。

Foundry Agent Service の全体構成。実行基盤が Model・Instructions・Tools の定義とメモリ・トレース監視を仲介し、ユーザーに応答する図

3. Planner:推論と計画

ユーザー要求を解釈し、どのツールをどの順で呼ぶかを計画する「頭脳」の役割は、エージェントを構成する Model(gpt-4o などの LLM 実体)自身が担います。本記事ではこの推論・計画の役割を Planner と呼びます。Planner は Model と別物ではなく、モデルが果たす機能の呼称です。

Agent Service ではモデルがツール呼び出しを計画し、実行基盤が「考える → 行動する → 観測する」の反復ループを回します。開発者がループ制御を書く必要はありません。

モデルが担う Planner が次の一手を決め、ツールが必要なら実行して結果を観測し、十分になるまで反復してから最終回答を返すループ図

4. Tool:外部データと操作への接続

Tool はエージェントの手足です。組み込みツールに加え、自社 API を呼ぶカスタム関数を定義できます。

ツール 用途
ファイル検索 アップロード文書からの根拠検索(RAG)
コードインタープリター コード実行・データ処理・グラフ生成
Web 検索 最新情報の取得(プレビュー)
MCP サーバ 標準プロトコルで外部ツール群を接続
カスタム関数 自社 API・業務ロジックの呼び出し

カスタム関数は JSON スキーマで引数を厳密に定義します。スキーマが曖昧だとモデルが誤った引数を渡しやすくなるため、説明文と必須項目を丁寧に書くことが重要です。

# カスタム関数ツールの定義例(引数を JSON スキーマで厳密に指定)
tools = [{
    "type": "function",
    "function": {
        "name": "get_weather",
        "description": "指定した都市の現在の天気を返す",
        "parameters": {
            "type": "object",
            "properties": {
                "city": {"type": "string", "description": "都市名(例: 東京)"}
            },
            "required": ["city"],
        },
    },
}]

5. Memory:短期・長期・知識の使い分け

会話の文脈(スレッド)は短期記憶として自動的に保持されます。セッションをまたぐ長期記憶や参照知識は、用途に応じて手段を選びます。

記憶の種類 実現方法
短期(会話) スレッド 直近のやり取り
長期(永続) Memory ツール(プレビュー)/ 外部 DB(AI Search・Cosmos DB) ユーザー嗜好・過去の決定
知識(参照) ファイル検索 / RAG マニュアル・FAQ

6. 要素をつなぐ最小コード

Planner・Tool・Memory は、実際には数行のコードで連動します。ツールを渡してエージェントを作り、スレッドへメッセージを投げて実行するだけです。

agent = project.agents.create_agent(
    model="gpt-4o",
    name="weather-agent",
    instructions="必要なら get_weather ツールを使って答えます。",
    tools=tools,                              # Tool
)
thread = project.agents.threads.create()      # 短期 Memory
project.agents.messages.create(
    thread_id=thread.id, role="user", content="東京の天気は?"
)
run = project.agents.runs.create_and_process(  # Planner が反復
    thread_id=thread.id, agent_id=agent.id
)

7. まとめ

  • Agent Service は Planner・Tool・Memory の 3 軸で捉えると理解が速くなります。
  • Planner は独立した部品ではなく、推論・計画の役割としてモデル自身が担い、実行基盤が反復ループを managed に回します。
  • Tool はカスタム関数のスキーマ設計が品質を左右します。
  • Memory は短期(スレッド)・長期(外部 DB)・知識(RAG)を使い分けます。
  • 次のアクション: 認証設計とメモリの永続化方式を具体化しましょう。

8. 参考リンク


この記事の執筆にあたり、AI の支援を受けています。