PythonでAIを分業させる技術:microsoft/agent-frameworkで効率化
このフレームワークは、まるでドラマの名探偵チームを結成して、複雑な事件(タスク)を連携して解決していくようなイメージで捉えると分かりやすいですよ!♂
このフレームワークは、AIエージェントを構築、連携、デプロイするための強力なツールキットです。Pythonと.NETに対応しており、複数のAIエージェントが協調して動作するマルチエージェントワークフローを簡単に作成できるように設計されています。
複雑なタスクを、それぞれ専門スキルを持ったAIエージェントに分担させることで、開発が効率的かつ柔軟になります。
| ドラマの配役 | AIエージェントの役割 | エンジニアにとってのメリット |
| 主演・主人公(司令塔) | オーケストレーター | ワークフロー全体を管理し、タスクの進行をスムーズにする。コード量が減り、デバッグが容易に。 |
| 頭脳派の相棒(データ分析官) | リサーチエージェント | 外部データ検索や分析に特化。AIの「考える」部分を特化させ、信頼性を向上。 |
| 現場のエキスパート(実行部隊) | コード実行エージェント | 実際にPythonコードなどを実行。AIの指示を安全かつ確実に実行する仕組みを提供。 |
| 情報通の協力者 | ユーザープロキシ | 人間の指示をエージェントシステムへ橋渡し。ユーザー体験(UX)を向上。 |
つまり、このフレームワークを使うと、複雑なタスク(連続殺人事件の解決など)を専門的なAIチームに任せられるようになり、エンジニアはチーム編成と指示出しに集中できるようになるんです!
「microsoft/agent-framework」は、Pythonのパッケージとして提供されています。一般的なPythonプロジェクトと同様にpipを使って簡単にインストールできます。
Python (推奨バージョンを確認してください)
OpenAI API Key (または同等の大規模言語モデル(LLM)サービス)
ターミナルで以下のコマンドを実行します。
# パッケージのインストール
pip install microsoft-agent-framework
通常、AIエージェントが利用するLLMのAPIキーは環境変数として設定します。
# Linux/macOSの場合
export OPENAI_API_KEY="あなたのAPIキー"
# Windows (コマンドプロンプト)の場合
set OPENAI_API_KEY="あなたのAPIキー"
ここでは、シンプルな2つのエージェント(リサーチャーとアナライザー)が連携して、あるテーマについて調査・要約するワークフローの例を示します。
import os
from microsoft.agent_framework.core.orchestrator import Orchestrator
from microsoft.agent_framework.core.agent import Agent
from microsoft.agent_framework.llm.openai_agent import OpenAIAgent
from microsoft.agent_framework.llm.llm_settings import LLMSettings
# 1. LLMの設定(共通の頭脳)
# 環境変数 OPENAI_API_KEY が設定されていることを前提とします
llm_settings = LLMSettings(model="gpt-4o-mini") # モデルは適宜変更してください
# 2. リサーチャー・エージェントの作成(情報収集担当)
# 外部ツール(Web検索など)を利用できる設定を加えることが多いですが、ここではシンプルに定義します。
researcher_agent = OpenAIAgent(
name="Researcher",
role="あなたは世界中の情報を検索し、事実に基づいた情報を収集する専門家です。",
description="与えられたトピックについて、複数の信頼できる情報源から詳細な情報を集めます。",
llm_settings=llm_settings
)
# 3. アナライザー・エージェントの作成(要約・分析担当)
analyzer_agent = OpenAIAgent(
name="Analyzer",
role="あなたはリサーチャーが集めた情報を受け取り、ユーザーに分かりやすいように要約し、重要な洞察を抽出する専門家です。",
description="情報を論理的に整理し、核心をついた簡潔なレポートを作成します。",
llm_settings=llm_settings
)
# 4. オーケストレーターの作成(主人公・司令塔)
# エージェント間の連携と会話の流れを管理します
orchestrator = Orchestrator(
name="Chief_Investigator",
agents=[researcher_agent, analyzer_agent],
llm_settings=llm_settings
)
# 5. ワークフローの実行(事件の捜査開始!)
task = "2024年のAIの最新トレンドを3つ挙げ、それぞれについて簡潔に説明してください。"
print(f"--- 捜査開始: {task} ---")
# ここでorchestratorが、タスクをエージェントに振り分け、連携させます。
# 例えば、「Researcherに情報を集めさせ、その結果をAnalyzerに渡して要約させる」といった流れを自動で実行します。
final_report = orchestrator.run(task)
print("\n--- 最終報告書(解決!)---")
print(final_report)
分業体制 ResearcherとAnalyzerという異なる役割のエージェントを定義しています。それぞれのroleとdescriptionで専門性を明確にしています。
司令塔 Orchestratorがこれらのエージェントを束ね、タスクを与えると自動的に最適な連携(会話)を行って結果を導き出します。
柔軟性
実際には、エージェントごとに異なるLLMモデルを使ったり、外部のPython関数(ツール)を使えるように設定したりすることで、さらに強力なシステムが構築できます。