📝
[AI Agent Jump Start 基礎編#7] マルチエージェントAPI 実装答え合わせ
✅ マルチエージェントAPI 実装まとめ(答え合わせ編)
このパートでは、前回の課題として提示された4つのエージェントファイルの実装例を紹介し、想定される動作と最終的なゴールを振り返ります。
📂 対象ファイル一覧
agents_core/agents/
├── answer_agent.py # 汎用QAエージェント
├── search_agent.py # Web検索エージェント
├── mcp_agent.py # 翻訳エージェント(MCP経由)
└── router_agent.py # ルーター
🧩 実装のポイントと想定
agents_core/answer_agent.py
🟦 from agents_core.settings import model
from agents import Agent
answer_agent = Agent(
name="Answer Agent",
instructions="あなたは質問に対して簡潔に答えるエージェントです。",
model=model,
)
agents_core/search_agent.py
🟦 from agents import Agent
from agents_core.settings import model
from agents_core.tools.web_search import web_search # Tavily検索ツール
search_agent = Agent(
name="Search Agent",
instructions="""
あなたはWeb検索を活用して、ユーザーの質問に答えるエージェントです。
必要に応じて web_search ツールを使用し、最新情報をもとに簡潔かつ信頼できる回答を返してください。
""",
model=model,
tools=[web_search],
)
agents_core/mcp_agent.py
🟦 from agents import Agent
from agents_core.tools.translate_via_mcp import translate_via_mcp
from agents_core.settings import model
mcp_agent = Agent(
name="MCP Agent",
instructions="""
あなたは翻訳に関するタスクを処理するエージェントです。
必ず translate_via_mcp ツールを使って翻訳してください。
""",
model=model,
tools=[translate_via_mcp],
)
agents_core/router_agent.py
🟦 from agents import RouterAgent, Route
from agents_core.settings import model
from agents_core.agents.answer_agent import answer_agent
from agents_core.agents.search_agent import search_agent
from agents_core.agents.mcp_agent import mcp_agent
router_agent = RouterAgent(
name="Router Agent",
model=model,
instructions="""
あなたは入力文に対して、適切なエージェントにルーティングする役割を担います。
各エージェントの用途は以下の通りです:
- SearchAgent:最近の出来事やWeb検索が必要な内容
- MCPAgent:翻訳や言語変換に関する指示
- AnswerAgent:一般的な知識や質問に対する回答
ユーザーの意図を理解し、最も適したエージェントを1つ選んでください。
選択肢は "search", "mcp", "answer" のいずれかで答えてください。
""",
)
@router_agent.route
async def classify_by_model(input_text: str) -> Route:
choice = await router_agent.classify(
input_text,
options={
"search": "Web検索が必要な質問(例:最近の出来事、調べてなど)",
"mcp": "翻訳や言語変換の依頼(例:英語に訳して、translateなど)",
"answer": "通常の質問や一般知識への回答",
},
)
if choice == "search":
return Route(to=search_agent)
elif choice == "mcp":
return Route(to=mcp_agent)
else:
return Route(to=answer_agent)
📬 想定されるレスポンス例
入力:
{"input": "『私は寿司が好きです』を英語に訳して"}
レスポンス:
{
"response": "『私は寿司が好きです』は英語で『I like sushi.』です。"
}
🔚 最後に
このマルチエージェント構成を通じて、
- ツールを持つエージェントと持たないエージェントの違い
- MCP のような外部呼び出しを仲介する仕組み
- RouterAgent によるエージェント切り替え
- FastAPI を通じた一貫したエンドポイント化
を体験できたと思います。
🎉 ここまでできたら、おめでとうございます!
あなたは 複数のエージェントを統括して動かす基盤 を手に入れました。
この仕組みは社内AIアシスタントや業務支援Botのベースにもなります。
さらなる発展としては、以下のような工夫が可能です:
- Router の LLMベース自動判定化(function-calling)
- エージェント間のマルチターン連携
- ユーザーごとの履歴保存やセッション管理
今後の開発にぜひ活かしてみてください!🚀
Discussion