Microsoft Agent Framework が先日GAされ、安定版がリリースされました。
Agent Framework と Microsoft Foundry を組み合わせると、Foundry 上に存在するエージェントを既存資産として呼び出す構成も取りやすくなります。
本記事では、"Microsoft Foundry にすでに存在するエージェントを、Microsoft Agent Framework の API から呼び出す" 方法に関して記載します。
実行環境
- Python 3.12
- agent-framework==1.0.1
- azure-ai-projects==2.0.1(Agent 一覧確認コードで利用)
環境変数は次を設定します。
- FOUNDRY_PROJECT_ENDPOINT:Microsoft Foundry プロジェクトのエンドポイント
- FOUNDRY_AGENT_NAME:呼び出したい Hosted Agent 名
この記事でやること
Microsoft Foundry 上にすでに存在するエージェントに対して、Microsoft Agent Framework の FoundryAgent を使ってメッセージを送り、応答を受け取ります。
役割分担は次のようになっています。
| 要素 | 役割 |
| Microsoft Foundry Hosted Agent | すでに Foundry 上でホストされている agent |
| FoundryAgent | そのエージェントを Python から呼び出すためのクライアント |
| AzureCliCredential | ローカル開発端末から Foundry へ接続する認証 |
すでに存在しているエージェントを、Agent Framework から利用するための最小実装になっています。
実装
コードは、主に次の公式リファレンスを参照しています。
- Microsoft Agent Framework Python samples: https://github.com/microsoft/agent-framework/tree/main/python/samples
- Foundry Hosted Agent を呼び出す Python sample: https://github.com/microsoft/agent-framework/tree/main/python/samples/02-agents/providers/foundry/foundry_agent_hosted.py
Microsoft Foundry へのエージェント追加方法
Microsoft Foundry へエージェントを追加する方法はいくつかありますが、最も簡単なのは Foundry ポータルから追加する方法です。コードを書かずに追加できるため、最初の検証や動作確認にはこの方法が向いています。

他の選択肢は、Microsoft Agent Framework で実装したエージェントを Hosted Agent として追加する方法です。この方法では、Python でエージェントの振る舞いや tool 呼び出しを実装し、それを Microsoft Foundry に配置して利用します。コードベースで制御したい場合はこちらが向いています。
ただし2026年4月20日時点では、Agent Framework の Hosted Agent は Python パッケージの組み合わせに少し注意が必要です。この環境は agent-framework==1.0.1 を前提にしていますが、Hosted Agent 化で使う azure-ai-agentserver-agentframework 系は preview 版との組み合わせが必要になることがあります。
サンプルコード
このコードは、環境変数から Foundry project endpoint とエージェント名を読み取り、既存のエージェントにメッセージを送って応答を表示します。
from __future__ import annotations import argparse import asyncio import os from agent_framework.foundry import FoundryAgent from azure.identity import AzureCliCredential from dotenv import load_dotenv load_dotenv(override=True) def parse_args() -> argparse.Namespace: parser = argparse.ArgumentParser(description="Call an existing agent from Foundry.") parser.add_argument("--project-endpoint", default=os.getenv("FOUNDRY_PROJECT_ENDPOINT")) parser.add_argument("--agent", default=os.getenv("FOUNDRY_AGENT_NAME")) parser.add_argument("--message", default="東京の天気を教えて") return parser.parse_args() async def main() -> None: args = parse_args() if not args.project_endpoint: raise ValueError("FOUNDRY_PROJECT_ENDPOINT が未設定です。") if not args.agent: raise ValueError("FOUNDRY_AGENT_NAME が未設定です。") agent = FoundryAgent( project_endpoint=args.project_endpoint, agent_name=args.agent, credential=AzureCliCredential(), ) result = await agent.run(args.message) print(result) if __name__ == "__main__": asyncio.run(main())
Microsoft Foundry 上の既存エージェント一覧を取得するコード
呼び出し前に対象のエージェント名を確認したい場合は、Microsoft Foundry の公式 Python SDK である azure-ai-projects の AIProjectClient からエージェント一覧を取得できます。
特に、FoundryAgent で呼び出そうとしてエージェントが見つからない場合や、FOUNDRY_AGENT_NAME に設定すべき名前を確認したい場合の切り分け用コードとして使う想定です。
このコードは、FOUNDRY_PROJECT_ENDPOINT を使ってプロジェクトに接続し、エージェント一覧を取得したうえで Hosted Agent とそれ以外を分けて表示します。
import os from dotenv import load_dotenv from azure.ai.projects import AIProjectClient from azure.identity import DefaultAzureCredential load_dotenv() def print_agents(title: str, agents: list[object]) -> None: print(title) if not agents: print("- none") return for agent in agents: kind = getattr(agent, "kind", "unknown") name = getattr(agent, "name", "unknown") version = getattr(agent, "version", "latest") print(f"- kind={kind}, name={name}, version={version}") with ( DefaultAzureCredential() as credential, AIProjectClient(endpoint=os.environ["FOUNDRY_PROJECT_ENDPOINT"], credential=credential) as project_client, ): all_agents = list(project_client.agents.list(limit=100, order="desc")) hosted_agents = [agent for agent in all_agents if getattr(agent, "kind", "") == "hosted"] other_agents = [agent for agent in all_agents if getattr(agent, "kind", "") != "hosted"] print(f"Total Agents: {len(all_agents)}") print_agents("Hosted Agents:", hosted_agents) print() print_agents("Other Agents:", other_agents)
この一覧取得コードは Agent Framework の FoundryAgent そのものではなく、Microsoft Foundry プロジェクト内のエージェントメタデータを確認するための補助コードです。事前に FOUNDRY_AGENT_NAME を確定したいときに使いやすく、Hosted Agent だけでなく prompt agent など他のエージェントが存在するかもあわせて確認できます。
参照元:
- Azure AI Projects client library for Python: https://learn.microsoft.com/en-us/python/api/overview/azure/ai-projects-readme?view=azure-python
- AIProjectClient API reference: https://learn.microsoft.com/en-us/python/api/azure-ai-projects/azure.ai.projects.aiprojectclient?view=azure-python
- AgentsOperations.list API reference: https://learn.microsoft.com/en-us/python/api/azure-ai-projects/azure.ai.projects.operations.agentsoperations?view=azure-python
最後に
今回は、GA された Microsoft Agent Framework で Microsoft Foundry 上の既存エージェントを呼び出す方法を紹介しました。
FoundryAgent で既存エージェントを安全に呼べる状態を作り、そのあと必要に応じて orchestration や tool 呼び出しへ広げるのが進めやすいと考えています。
Agent Framework で実装したエージェントを Hosted Agent として作成、公開する流れについては、preview 版パッケージとの依存関係が GA 版でより素直に扱えるようになったタイミングで、改めて再検証したいと考えています。