(上の画像をクリックするとこのレッスンの動画をご覧いただけます)
AIエージェントフレームワークは、AIエージェントの作成、展開、管理を簡素化するために設計されたソフトウェアプラットフォームです。これらのフレームワークは、複雑なAIシステムの開発を効率化するためのあらかじめ構築されたコンポーネント、抽象化、およびツールを開発者に提供します。
これらのフレームワークは、AIエージェント開発における共通の課題に対する標準化されたアプローチを提供することで、開発者がアプリケーションのユニークな側面に集中できるよう支援します。スケーラビリティ、アクセシビリティ、効率性を向上させ、AIシステムの構築を促進します。
このレッスンで扱う内容は以下の通りです:
このレッスンの目標は、以下を理解する手助けをすることです:
伝統的なAIフレームワークは、AIをアプリに統合してアプリを改善するのに役立ちます。具体的には次のような点で効果的です:
AIエージェントフレームワークは単なるAIフレームワーク以上のものです。ユーザーや他のエージェント、環境とインタラクションしながら特定の目標を達成する知的エージェントの作成を可能にするために設計されています。これらのエージェントは自律的に振る舞い、意思決定し、変化する状況に適応することができます。以下はAIエージェントフレームワークで可能になる主な機能です:
まとめると、エージェントは自動化を次のレベルに引き上げ、環境から学習し適応できるより知的なシステムを作ることを可能にします。
この分野は急速に変化していますが、ほとんどのAIエージェントフレームワークに共通する要素として、モジュールコンポーネント、協働ツール、リアルタイム学習があります。これらについて詳しく見ていきましょう:
Microsoft Agent FrameworkのようなSDKは、AIコネクター、ツール定義、エージェント管理といったプレ構築コンポーネントを提供します。
チームの活用例: チームはこれらのコンポーネントを素早く組み立て、最初から構築することなく機能的なプロトタイプを作り、迅速な実験や反復が可能です。
実際の使い方: ユーザー入力から情報を抽出する既製のパーサー、データを保存・取得するメモリモジュール、ユーザーと対話するプロンプトジェネレーターを使うことで、これらのコンポーネントを一から作る必要はありません。
コード例: Microsoft Agent FrameworkとFoundryChatClientを使って、モデルがツール呼び出しでユーザー入力に応答する例を見てみましょう:
# マイクロソフトエージェントフレームワーク Python の例
import asyncio
import os
from agent_framework import tool
from agent_framework.foundry import FoundryChatClient
from azure.identity import AzureCliCredential
# 旅行を予約するサンプルのツール関数を定義する
@tool(approval_mode="never_require")
def book_flight(date: str, location: str) -> str:
"""Book travel given location and date."""
return f"Travel was booked to {location} on {date}"
async def main():
provider = FoundryChatClient(
project_endpoint=os.environ["AZURE_AI_PROJECT_ENDPOINT"],
model=os.environ["AZURE_AI_MODEL_DEPLOYMENT_NAME"],
credential=AzureCliCredential(),
)
agent = provider.as_agent(
name="travel_agent",
instructions="Help the user book travel. Use the book_flight tool when ready.",
tools=[book_flight],
)
response = await agent.run("I'd like to go to New York on January 1, 2025")
print(response)
# 出力例: 2025年1月1日のニューヨーク行きのフライトが正常に予約されました。良い旅を! ✈️🗽
if __name__ == "__main__":
asyncio.run(main())
この例からわかるのは、飛行予約リクエストの出発地、目的地、日付などの重要情報を抽出する既製のパーサーをどう活用できるかです。このモジュラーアプローチにより、高レベルのロジックに集中できます。
Microsoft Agent Frameworkのようなフレームワークは、複数エージェントが協力できる環境を提供します。
チームの活用例: チームはエージェントに特定の役割とタスクを設計し、協働ワークフローをテスト、改善し、システム全体の効率化を図れます。
実際の使い方: データ取得、分析、意思決定などの役割を持つ複数エージェントのチームを作成し、これらが通信・情報共有して共通の目標(ユーザーの問い合わせに答える、タスクを完了するなど)を達成します。
コード例(Microsoft Agent Framework):
# Microsoft Agent Frameworkを使用して協力する複数のエージェントを作成する
import os
from agent_framework.foundry import FoundryChatClient
from azure.identity import AzureCliCredential
provider = FoundryChatClient(
project_endpoint=os.environ["AZURE_AI_PROJECT_ENDPOINT"],
model=os.environ["AZURE_AI_MODEL_DEPLOYMENT_NAME"],
credential=AzureCliCredential(),
)
# データ取得エージェント
agent_retrieve = provider.as_agent(
name="dataretrieval",
instructions="Retrieve relevant data using available tools.",
tools=[retrieve_tool],
)
# データ分析エージェント
agent_analyze = provider.as_agent(
name="dataanalysis",
instructions="Analyze the retrieved data and provide insights.",
tools=[analyze_tool],
)
# タスクに対してエージェントを順番に実行する
retrieval_result = await agent_retrieve.run("Retrieve sales data for Q4")
analysis_result = await agent_analyze.run(f"Analyze this data: {retrieval_result}")
print(analysis_result)
前述のコード例では、複数のエージェントによるデータ分析タスクの作成方法が示されています。エージェントそれぞれが特定の機能を実行し、それらを調整して成果をあげます。専門的な役割を持つ専用エージェントを作ることでタスクの効率とパフォーマンスが向上します。
先進的なフレームワークはリアルタイムコンテクスト理解と適応機能を提供します。
チームの活用例: チームはフィードバックループを実装し、エージェントがインタラクションから学習し行動を動的に調整させ、能力を継続的に向上・洗練させることができます。
実際の使い方: エージェントはユーザーのフィードバック、環境データ、タスク結果を分析して知識ベースを更新し、意思決定アルゴリズムを調整し、時間の経過とともにパフォーマンスを改善します。この反復的学習プロセスにより、エージェントは変化する条件やユーザーの好みに適応して全体効果を高めます。
これらのアプローチを比較するには多くの観点がありますが、設計、機能、対象ユースケースの主要な違いを見てみましょう:
Microsoft Agent Frameworkは、FoundryChatClientを使ってAIエージェントを構築するためのシンプルなSDKを提供します。Azure OpenAIモデルを活用し、組み込みのツール呼び出し、会話管理、Azure IDによる企業レベルのセキュリティが利用可能です。
ユースケース: ツール使用、多段階ワークフロー、企業統合シナリオを備えた実運用可能なAIエージェント構築に最適です。
Microsoft Agent Frameworkの重要なコア概念は以下の通りです:
FoundryChatClientで作成され、名前、指示、ツールを設定します。エージェントは:
以下はエージェント作成のコード例です:
import os
from agent_framework.foundry import FoundryChatClient
from azure.identity import AzureCliCredential
provider = FoundryChatClient(
project_endpoint=os.environ["AZURE_AI_PROJECT_ENDPOINT"],
model=os.environ["AZURE_AI_MODEL_DEPLOYMENT_NAME"],
credential=AzureCliCredential(),
)
agent = provider.as_agent(
name="my_agent",
instructions="You are a helpful assistant.",
)
response = await agent.run("Hello, World!")
print(response)
ツール。フレームワークはエージェントが自動的に呼び出せるPython関数としてツール定義をサポートします。ツールはエージェント作成時に登録されます:
def get_weather(location: str) -> str:
"""Get the current weather for a location."""
return f"The weather in {location} is sunny, 72\u00b0F."
agent = provider.as_agent(
name="weather_agent",
instructions="Help users check the weather.",
tools=[get_weather],
)
マルチエージェント協調。異なる専門性を持つ複数のエージェントを作成し、協調させることが可能です:
planner = provider.as_agent(
name="planner",
instructions="Break down complex tasks into steps.",
)
executor = provider.as_agent(
name="executor",
instructions="Execute the planned steps using available tools.",
tools=[execute_tool],
)
plan = await planner.run("Plan a trip to Paris")
result = await executor.run(f"Execute this plan: {plan}")
AzureCliCredential(またはDefaultAzureCredential)を用い、キー管理の必要なく安全な認証を実現します。Microsoft Foundry Agent Serviceは2024年のMicrosoft Igniteで発表されたより新しいサービスです。Llama 3、Mistral、CohereのようなオープンソースLLMを直接呼び出すなど、より柔軟なモデルでAIエージェントの開発と展開を可能にします。
Microsoft Foundry Agent Serviceは強力な企業向けセキュリティ機構とデータ保存手法を提供し、企業アプリケーションに適しています。
Microsoft Agent Frameworkと連携してエージェントの構築と展開が可能です。
このサービスは現在パブリックプレビュー段階で、PythonおよびC#でのエージェント構築をサポートしています。
Microsoft Foundry Agent Service Python SDKを使うと、ユーザー定義のツールを持つエージェントを作成できます:
import asyncio
from azure.identity import DefaultAzureCredential
from azure.ai.projects import AIProjectClient
# ツール関数を定義する
def get_specials() -> str:
"""Provides a list of specials from the menu."""
return """
Special Soup: Clam Chowder
Special Salad: Cobb Salad
Special Drink: Chai Tea
"""
def get_item_price(menu_item: str) -> str:
"""Provides the price of the requested menu item."""
return "$9.99"
async def main() -> None:
credential = DefaultAzureCredential()
project_client = AIProjectClient.from_connection_string(
credential=credential,
conn_str="your-connection-string",
)
agent = project_client.agents.create_agent(
model="gpt-5-mini",
name="Host",
instructions="Answer questions about the menu.",
tools=[get_specials, get_item_price],
)
thread = project_client.agents.create_thread()
user_inputs = [
"Hello",
"What is the special soup?",
"How much does that cost?",
"Thank you",
]
for user_input in user_inputs:
print(f"# User: '{user_input}'")
message = project_client.agents.create_message(
thread_id=thread.id,
role="user",
content=user_input,
)
run = project_client.agents.create_and_process_run(
thread_id=thread.id, agent_id=agent.id
)
messages = project_client.agents.list_messages(thread_id=thread.id)
print(f"# Agent: {messages.data[0].content[0].text.value}")
if __name__ == "__main__":
asyncio.run(main())
Microsoft Foundry Agent Serviceのコア概念は以下の通りです:
エージェント。Microsoft Foundry Agent ServiceはMicrosoft Foundryと統合されます。Microsoft Foundryの中で、AIエージェントは「スマート」マイクロサービスとして機能し、質問応答(RAG)、アクション実行、ワークフローの完全自動化を実現します。これは生成AIモデルの力をツールと組み合わせ、現実世界のデータソースにアクセスし操作することで成し遂げます。エージェントの例は以下です:
agent = project_client.agents.create_agent(
model="gpt-5-mini",
name="my-agent",
instructions="You are helpful agent",
tools=code_interpreter.definitions,
tool_resources=code_interpreter.resources,
)
この例では、モデルgpt-5-mini、名前my-agent、指示You are helpful agentでエージェントを作成。コード解釈タスクを実行するためのツールとリソースが装備されています。
スレッドとメッセージ。スレッドは重要な概念で、エージェントとユーザー間の会話やインタラクションを表します。スレッドは会話の進行を追跡し、コンテクスト情報を保存し、インタラクションの状態を管理します。スレッドの例はこちら:
thread = project_client.agents.create_thread()
message = project_client.agents.create_message(
thread_id=thread.id,
role="user",
content="Could you please create a bar chart for the operating profit using the following data and provide the file to me? Company A: $1.2 million, Company B: $2.5 million, Company C: $3.0 million, Company D: $1.8 million",
)
# エージェントにスレッドで作業を行うよう依頼する
run = project_client.agents.create_and_process_run(thread_id=thread.id, agent_id=agent.id)
# エージェントの応答を見るためにすべてのメッセージを取得してログを取る
messages = project_client.agents.list_messages(thread_id=thread.id)
print(f"Messages: {messages}")
前述のコードではスレッドを作成し、それにメッセージを送信しています。create_and_process_runを呼び出すことで、エージェントにスレッド上で作業を行わせています。最後にメッセージを取得してログに記録し、エージェントの応答を確認します。メッセージは会話の進行を示すもので、テキスト、画像、ファイルなど多様なタイプがあります。開発者は応答をさらに処理したりユーザーに提示したりすることができます。
Microsoft Agent Frameworkとの統合。Microsoft Foundry Agent ServiceはMicrosoft Agent Frameworkとシームレスに連携し、FoundryChatClientでエージェントを構築し、Agent Service経由で本番環境に展開可能です。
ユースケース: Microsoft Foundry Agent Serviceは、安全でスケーラブルかつ柔軟なAIエージェント展開を必要とする企業向けアプリケーションを対象としています。
重なる部分もありますが、設計、機能、ターゲットとするユースケースにおいていくつかの重要な違いがあります:
どちらを選ぶべきか迷っていますか?
一般的なユースケースをいくつか例示してみましょう:
Q: 本番のAIエージェントアプリを作りたいが、素早く始めたい
A: Microsoft Agent Frameworkが良い選択です。
FoundryChatClientを用いたシンプルでPython的なAPIで、数行のコードでツールと指示を含むエージェントを定義できます。
Q: AzureのSearchやコード実行などの統合を含む企業向け展開が必要
A: Microsoft Foundry Agent Serviceが最適です。複数モデル、Azure AI Search、Bing Search、Azure Functionsへの組み込み機能を持つプラットフォームサービスで、Foundryポータルでエージェントを構築し拡張展開できます。
Q: まだ混乱しているので一択だけ教えてほしい
A: まずはMicrosoft Agent Frameworkでエージェントを構築し、本番展開やスケールが必要になった際にMicrosoft Foundry Agent Serviceを利用する方法がおすすめです。これによりエージェントのロジックを迅速に反復開発しつつ、企業展開への明確な道筋を持てます。
主要な違いを表でまとめます:
| フレームワーク | フォーカス | コア概念 | ユースケース |
|---|---|---|---|
| Microsoft Agent Framework | ツール呼び出しを備えたシンプルなエージェントSDK | エージェント、ツール、Azureアイデンティティ | AIエージェント構築、ツール利用、マルチステップワークフロー |
| Microsoft Foundry Agent Service | 柔軟なモデル、企業セキュリティ、コード生成、ツール呼び出し | モジュール化、協働、プロセスオーケストレーション | 安全でスケーラブルかつ柔軟なAIエージェント展開 |
答えはイエスです。既存の Azure エコシステムツールを Microsoft Foundry Agent Service と直接統合できます。特に、これは他の Azure サービスとシームレスに連携するように構築されているためです。例えば、Bing、Azure AI Search、Azure Functions を統合することが可能です。また Microsoft Foundry との深い統合もあります。
Microsoft Agent Framework は FoundryChatClient と Azure アイデンティティを通じて Azure サービスと統合されており、エージェントツールから直接 Azure サービスを呼び出すことができます。
Microsoft Foundry Discord に参加して、他の学習者と交流したり、オフィスアワーに参加して AI エージェントについての質問に答えてもらいましょう。
免責事項: 本書類は AI 翻訳サービス Co-op Translator を使用して翻訳されています。正確性を期していますが、自動翻訳には誤りや不正確な部分が含まれる可能性があることをご承知おきください。原文の原語版が正式な情報源とみなされるべきです。重要な情報については、専門の人間による翻訳を推奨します。本翻訳の利用により生じたいかなる誤解や解釈違いについても、当方は責任を負いかねます。