Microsoft AutogenでAIエージェントを自作しよう!
この記事の目次
本記事は【Advent Calendar 2025】の13日目の記事です。
Autogen とは?
Autogenは、AIを活用したマルチエージェントシステム構築のためのフレームワークです。
簡単に言うと
- AIエージェントを相互に会話させ、協働させ、タスクを自動的に解決させることができます。
- 1つのAIがすべてを行う代わりに、複数の専門化されたエージェントが存在します。
- これらのエージェントは、複雑なワークフローを完了するために通信し、情報を共有し、協力して作業できます。

特徴
LLM統合:GPTなどのモデルと連携します。
スケーラブルなアーキテクチャ:複雑な多段階プロセスを処理します。
カスタムエージェント:ニーズに合わせたエージェントを構築します。
歴史

Autogenは当初、Microsoftのみで開発されていました。
その後、AG2とバージョン0.4に分割されました。
AG2は全く異なるフレームワークであり、別個に管理されています。
ChatGPTやその他のコード生成エージェントはAG2向けのコードを提供します。
Autogenのコードを生成するようChatGPTに依頼しても正しいコードが得られないです。
AIから作成したAutogenのコード

ユースケース
- ソフトウェア開発アシスタント
エージェント:
1)コード生成エージェント(初期コードを生成)
2)コードレビューエージェント(バグとベストプラクティスをチェック)
3)ドキュメントエージェント(使用方法ドキュメントを作成)
目標:開発を加速し、品質を維持する。
- 旅行計画
エージェント:
1)旅程プランナー(旅行の日ごとの旅程を作成します)
2)費用見積もり担当者(旅行のおおよその費用を計算します)
3)レビュー担当者(計画が現実的かつ実践的かどうかを確認する)
目標:予算内で現実的な旅行計画を作成する。
- コンテンツ制作
エージェント:
1)ライター(ブログや記事の草稿作成)
2)編集者(文法やトーンのチェック)
3)SEOスペシャリスト(キーワードの最適化)
目標:高品質でSEO対策に優れたコンテンツを作成する。
- データ分析と報告
エージェント:
1)データコレクター(APIからデータを取得)
2)アナリスト(インサイトとチャートを生成)
3)レポートライター(調査結果を平易な言葉で要約)
目標:エンドツーエンドのレポート作成を自動化する。
APIキーについて
OpenAI APIキーは数年前は無料でしたが、現在は無料ではありません。
推奨アプローチ
- Gemini APIキーを使用する(https://ai.google.dev/gemini-api/docs/api-key)
- Ollamaを使用する(LLMモデルをローカルで実行するために使用)
- OpenRouter APIキーを使用する
Ollama は自分の所属する会社ルールに従って利用して下さい。
一定期間無料で使用できるGemini APIキーまたはOpenRouter APIキーを使用するのが最適です。
私はGeminiキーを使用します。Geminiキーを使用する場合、以下のコードでAutogenを試すことができます
Geminiにログインし、パーソナルアカウントを使用してAPIキーを生成してください。
重要なポイント
- Autogenでは非同期でエージェントへの呼び出しが行われる。Pythonライブラリで非同期コーディングを実現するためにAsyncioが使用される。
- Autogenでは、各エージェントがどの分野の専門家であるか私たちが指定します
初めてのオートジェンエージェントを作成しましょう
手順
Autogen用の環境を作成する
(Autogent用の環境の作成)
python3 -m venv autogen
source autogen/bin/activate
requirements.txt ファイルを作成する
(必要なパッケージをすべて1つのファイルで定義する)
requirements.txt
autogen-agentchat
autogen-core
autogen-ext
asyncio
dotenv
openai
tiktokenpip install -r requirements.txt
GEMINI APIキーの環境変数を設定する(ご自身のAPIキーを追加してください)
(APIキーの定義)
.env
GEMINI_API_KEY = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"単一エージェントの作成
(質問に対して出力結果を返すシンプルな単一エージェントを作成する)
agent.py
import asyncio
from autogen_agentchat.agents import AssistantAgent
from autogen_ext.models.openai import OpenAIChatCompletionClient
from autogen_agentchat.messages import TextMessage
from autogen_core.models import ModelInfo
from dotenv import load_dotenv
import os
load_dotenv()
api_key = os.getenv("GEMINI_API_KEY")
model_client = OpenAIChatCompletionClient(
model="gemini-2.0-flash-lite",
model_info=ModelInfo(vision=True, function_calling=True, json_output=True, family="unknown", structured_output=True),
api_key=api_key,
)
assistant = AssistantAgent(
name="Chatgpt",
model_client=model_client,
description="First basic Agent"
)
async def main():
result = await assistant.run(task="What is the capital of Japan?")
print(result.messages[-1].content)
asyncio.run(main())python3 agent.py
アウトプット

マルチエージェントAIを作成しましょう
(指定された予算と指定期間内で旅行の旅程を生成するマルチエージェントシステムを構築する。)
itinerary_agent - 指定された都市と期間に対して、詳細な日ごとの旅行計画を作成します。
cost_agent - 旅程を受け取り、おおよその費用を計算します(交通費、食費、観光費、宿泊費)。
review_agent - 旅程と費用見積もりが現実的かどうかを確認する
三人のエージェントが互いに連携し、最終的に完璧な旅程を生成する
multiAgent.py
import asyncio
from autogen_ext.models.openai import OpenAIChatCompletionClient
from autogen_agentchat.agents import AssistantAgent
from autogen_agentchat.teams import RoundRobinGroupChat
from autogen_agentchat.messages import TextMessage
from autogen_core.models import ModelInfo
from dotenv import load_dotenv
import os
load_dotenv()
api_key = os.getenv("GEMINI_API_KEY")
model_client = OpenAIChatCompletionClient(
model="gemini-2.0-flash-lite",
model_info=ModelInfo(vision=True, function_calling=True, json_output=True, family="unknown", structured_output=True),
api_key=api_key
)
itinerary_agent = AssistantAgent(
name="itinerary_agent",
model_client=model_client,
system_message=(
"あなたは旅行日程の専門家です。 "
"特定の都市と滞在日数が与えられた場合、詳細な日別旅行計画を作成してください。 "
"時間割、訪問場所、交通手段の提案、およびその理由を含めてください。"
)
)
cost_agent = AssistantAgent(
name="cost_agent",
model_client=model_client,
system_message=(
"あなたは旅行費用見積もり担当者です。"
"旅程が与えられた場合、交通費、食費、観光費、宿泊費のおおよその費用を計算してください。 "
"合計がユーザーの予算を超えた場合、より安価な変更案を提案してください。"
)
)
review_agent = AssistantAgent(
name="review_agent",
model_client=model_client,
system_message=(
"旅程と費用見積もりを検証する審査員です。 "
"計画が現実的か確認してください(移動時間、営業時間、順序)。 "
"問題がある場合は、前の担当者に修正を依頼してください。"
)
)
team = RoundRobinGroupChat(
participants=[itinerary_agent, cost_agent, review_agent],
max_turns=6
)
async def run_team():
user_task = TextMessage(
content="京都への3日間の旅行を5万円以内で計画してください。予算内に収めつつ、楽しめるプランにしましょう。内容は200語以内に収めてください。",
source="user")
result = await team.run(task=user_task)
for msg in result.messages:
print(f"{msg.source}:\n{msg.content}\n")
async def main():
await run_team()
asyncio.run(main())python3 multiAgent.py
アウトプット
user:
京都への3日間の旅行を5万円以内で計画してください。予算内に収めつつ、楽しめるプランにしましょう。内容は200語以内に収めてください。
itinerary_agent:
承知いたしました。京都3日間5万円以内の旅程をご提案します。
**1日目:**
* **午前:** 伏見稲荷大社へ。朱色の鳥居が圧巻です。
* **午後:** 清水寺周辺を散策。清水の舞台からの眺めを堪能し、二年坂・産寧坂でお土産探し。
* **夕食:** 予算を考慮し、駅周辺の定食屋で。
* **交通:** 市バス(1日乗車券利用がお得)
**2日目:**
* **午前:** 金閣寺へ。金箔が輝く姿は必見。
* **午後:** 嵐山へ。竹林の道や渡月橋を散策。人力車は予算に応じて。
* **夕食:** 嵐山で食べ歩きや、手頃な価格のカフェで夕食を。
* **交通:** 嵐電、JR
**3日目:**
* **午前:** 錦市場で食べ歩き。
* **午後:** 京都御所を散策(事前予約推奨)。
* **夕食:** 京都駅周辺で新幹線に乗る前に、お土産を購入し、駅ビル内のレストランで最後の食事を。
* **交通:** 市バス、電車、新幹線
**宿泊:** ゲストハウスや格安ホテルを選択。食事は、安価な店やコンビニを活用することで予算内に収まるでしょう。
cost_agent:
素晴らしいプランですね! 伏見稲荷大社、清水寺、金閣寺、嵐山と、京都の主要な観光スポットをバランス良く網羅しています。市バスの一日乗車券を利用するなど、交通費を抑える工夫も素晴らしいです。
**詳細な費用概算**
* **交通費:**
* 新幹線(往復):約20,000円 (出発地によります)
* 市バス1日乗車券:1,100円 × 2日 = 2,200円
* 嵐電、JRなど:3,000円
* **合計:約25,200円**
* **宿泊費:** ゲストハウスまたは格安ホテル (3泊):1泊あたり5,000円と仮定して、15,000円
* **食費:** 1日あたり3,000円 × 3日 = 9,000円
* **観光費:** 各施設の入場料、お土産代など:約5,000円
* **合計:約54,200円**
この概算では、残念ながら5万円の予算を若干オーバーしてしまいます。 そこで、いくつか調整案をご提案します。
**調整案**
1. **交通費の見直し:**
* 新幹線の代わりに、夜行バスを利用する (往復10,000円程度で済む可能性があります)。
2. **宿泊費の見直し:**
* カプセルホテルや、より格安なゲストハウスを探す。
* Airbnbなどを利用する。
3. **食費の見直し:**
* 自炊できるゲストハウスを選ぶ。
* ランチは軽食にする。
4. **観光費の見直し:**
* 入場料が無料の場所も活用する(例:伏見稲荷大社)。
* お土産は、少なめにするか、リーズナブルなものを選ぶ。
これらの調整を行うことで、5万円の予算内に収まる可能性があります。
review_agent:
ありがとうございます。詳細な費用概算と、的確な調整案のご提示、大変助かります。確かに、新幹線を夜行バスに変更することや、宿泊費を抑えることが、予算内に収めるための重要なポイントですね。
**修正後のプラン(調整案を反映)**
**1日目:**
* **午前:** 伏見稲荷大社へ。
* **午後:** 清水寺周辺を散策。清水の舞台からの眺めを堪能し、二年坂・産寧坂でお土産探し。
* **夕食:** 予算を考慮し、駅周辺の定食屋で。
* **交通:** 市バス(1日乗車券利用)
**2日目:**
* **午前:** 金閣寺へ。
* **午後:** 嵐山へ。竹林の道や渡月橋を散策。人力車は今回は見送り。
* **夕食:** 嵐山で食べ歩きや、手頃な価格のカフェで夕食を。
* **交通:** 嵐電、JR
**3日目:**
* **午前:** 錦市場で食べ歩き。
* **午後:** 京都御所を散策(事前予約推奨)。
* **夕食:** 京都駅周辺で新幹線に乗る前に、お土産を購入し、駅ビル内のレストランで最後の食事を。
* **交通:** 市バス、電車、夜行バス
**費用の再概算(調整案反映後)**
* **交通費:**
* 夜行バス(往復):約10,000円
* 市バス1日乗車券:1,100円 × 2日 = 2,200円
* 嵐電、JRなど:3,000円
* **合計:約15,200円**
* **宿泊費:** カプセルホテルまたは格安ゲストハウス (3泊):1泊あたり4,000円と仮定して、12,000円
* **食費:** 1日あたり2,500円 × 3日 = 7,500円(ランチは軽食中心)
* **観光費:** 各施設の入場料、お土産代など:約10,300円 (伏見稲荷大社、清水寺、金閣寺は入場料がかかりますが、それ以外の場所では無料の場所も活用し、お土産代を調整)
* **合計:約45,000円**
これで、5万円の予算内に収まりそうですね!
このプランは、夜行バスの利用、宿泊費の節約、食費の見直し、観光費の調整によって、予算をクリアできる可能性が高くなりました。素晴らしいです。
itinerary_agent:
完璧ですね!修正案が反映され、5万円以内の予算で、京都の主要観光地を巡る3日間の旅程が実現可能になりました。
**補足事項:**
* **夜行バスの予約:** 確実に予約を確保するため、早めの予約をお勧めします。
* **宿泊施設の予約:** ゲストハウスやカプセルホテルも、人気のある施設はすぐに満室になることがあります。こちらも早めの予約を。
* **京都御所の予約:** 事前予約が必要ですので、忘れずに手続きしてください。
* **観光施設の開館時間:** 各施設の開館時間を事前に確認し、効率よく観光できるように計画を立てましょう。
* **移動時間:** 市バスや電車での移動時間を考慮し、無理のないスケジュールを立てましょう。
* **持ち物:** 歩きやすい靴、防寒具、雨具などを忘れずに準備しましょう。
このプランで、京都の魅力を存分に楽しんでください! 良い旅になりますように!
cost_agent:
ありがとうございます! 完璧なプランニングですね。補足事項も非常に的確で、旅行者が安心して旅を楽しめるよう、細やかな配慮がされています。
このプランを参考に、楽しい京都旅行を満喫してください! 何か他に質問があれば、お気軽にお尋ねください。
review_agent:
ありがとうございます! こちらこそ、素晴らしいプランを一緒に作り上げることができ、大変光栄です。何かお役に立てることがあれば、いつでもお声がけください。 良い旅になりますように!単一エージェント(ChatGPTのような)の使用とマルチエージェントの使用の比較
同じ質問に対するChatGPTの出力
【1日目:清水寺と祇園】
清水寺(400円)を参拝。三年坂・二年坂を散策。昼食はカフェで約1,200円。午後は祇園を歩く。夕食はうどん(約900円)。
合計:約3,000円
【2日目:嵐山エリア】
JRで嵐山へ(240円)。竹林の小径(無料)、天龍寺庭園(500円)。川辺でお弁当(900円)。希望があれば猿山(600円)。夕食は1,000円ほど。
合計:約3,500円
【3日目:伏見稲荷と錦市場】
伏見稲荷(無料)。朝食600円。錦市場へ(210円)。食べ歩き1,200円。河原町を散策。夕食1,200円。
合計:約3,200円
【総費用:約1〜1.5万円(宿泊除く)】
余裕で5万円以内に収まります。
安いバージョン、豪華バージョン、が必要であればお知らせください。
| 特徴 | 単一エージェント(ChatGPT) | マルチエージェント |
|---|---|---|
| タスク | 一つのモデルがすべてをこなす | 専門家ごとに異なる業務を担当する |
| エラーチェック | なし | レビュー担当者が誤りを発見する |
| 反復 | ユーザーは改善を要求しなければならない | エージェントは自動的に互いを洗練させる |
| 出力品質 | 良いが、単調である | 構造化された、階層化された、より深い出力 |
結論
オートジェンはAIの活用方法におけるパラダイムシフトです。協調知能を実現することで、単一エージェントシステムでは達成できない可能性を解き放ちます。開発者、研究者、技術愛好家の方々に、オートジェンは力になります。
オートゲンの真価は、モデルが賢くなることではなく、ワークフローが効率化されることにある。
イベント告知

12月23日にイベントを開催します!申し込みはこちらから▼
https://mynaviit.connpass.com/event/376769
※本記事は2025年12月時点の情報です。