「[[.NET 開発基盤部会 Wiki>http://dotnetdevelopmentinfrastructure.osscons.jp]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -[[戻る>LLMエージェント#v6874125]] --[[OpenAI Agents SDK]] --[[CrewAI]] --[[LangGraph]] --AutoGen *目次 [#ud8cdd6b] #contents *概要 [#e04e988b] エージェント同士の会話を研究・実験する -開発元 / 主導:Microsoft Research発(OSS化) -難易度:高(研究色が強く、抽象度も高い) -強み:研究的自由度・拡張性・分散実行 -弱み:実用より研究寄り、開発難度高 *詳細 [#vf3a7144] -Microsoft Research主導の「エージェント同士の会話」を中心に据えたフレームワーク。 -人間とエージェント、エージェント同士が会話することでタスクを進める:Conversation-driven -研究色が強く、プロダクション利用には制御がやや粗い **特徴 [#x77683e3] -コンセプト:複数エージェント間の「会話ベースの協調」を重視。研究寄りの設計思想で、分散実行にも対応。 -設計思想:研究色が強く、「エージェント間対話」を核にして、動的なタスク分担やツール利用を促進。 -特徴的な機能:Multi-agent conversation / 分散ランタイム対応 / 高度なタスク分割・協調処理 -ユースケース:研究用途、複雑なマルチエージェントシミュレーション、実験的アプリ **実装 [#p8da0049] -https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?The%20Complete%20Agentic%20AI%20Engineering%20Course%20%282025%29#i48413af -https://github.com/OpenTouryoProject/DxCommon/tree/master/Notebook/path/ed-donner_agents/5_autogen ***インストール [#gb3c33d9] 仮想環境に、pipでインストールする。 python3 -m venv .venv source .venv/bin/activate deactivate pip install -U autogenstudio ※ https://microsoft.github.io/autogen/stable/user-guide/autogenstudio-user-guide/installation.html ***エージェント定義 [#e27923e2] -https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?The%20Complete%20Agentic%20AI%20Engineering%20Course%20%282025%29#t7ce4ee5~ https://github.com/OpenTouryoProject/DxCommon/blob/master/Notebook/path/ed-donner_agents/5_autogen/1_lab1_autogen_agentchat_ja.ipynb -https://github.com/OpenTouryoProject/DxCommon/blob/master/Notebook/path/ed-donner_agents/5_autogen/1_lab1_autogen_agentchat_ja.ipynb --定義して from autogen_agentchat.agents import AssistantAgent smart_agent = AssistantAgent( name="smart_airline_agent", model_client=model_client, system_message="You are a helpful assistant for an airline. You give short, humorous answers, including the price of a roundtrip ticket.", model_client_stream=True, tools=[get_city_price], # ★ reflect_on_tool_use=True ) ※ 別途、get_city_price関数をツールとして開発 --実行する response = await smart_agent.on_messages([message], cancellation_token=CancellationToken()) for inner_message in response.inner_messages: print(inner_message.content) response.chat_message.content -https://github.com/OpenTouryoProject/DxCommon/blob/master/Notebook/path/ed-donner_agents/5_autogen/2_lab2_autogen_agentchat_ja.ipynb -https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?The%20Complete%20Agentic%20AI%20Engineering%20Course%20%282025%29#ec214a8a~ https://github.com/OpenTouryoProject/DxCommon/blob/master/Notebook/path/ed-donner_agents/5_autogen/2_lab2_autogen_agentchat_ja.ipynb --マルチモーダル --構造化された出力 --AutogenのLangchainツールを使用 --弱い/疑似的なHITLの例 --チームの相互作用~ 2エージェントによる順番交代方式の協調対話 ---主エージェント(実行役) ---評価エージェント(レビュー役) -https://github.com/OpenTouryoProject/DxCommon/blob/master/Notebook/path/ed-donner_agents/5_autogen/3_lab3_autogen_core_ja.ipynb -https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?The%20Complete%20Agentic%20AI%20Engineering%20Course%20%282025%29#s0f5746c~ https://github.com/OpenTouryoProject/DxCommon/blob/master/Notebook/path/ed-donner_agents/5_autogen/3_lab3_autogen_core_ja.ipynb --AutoGen Coreのスタンドアロン・ランタイムを使用 --ルーティング専用のエージェント(RoutedAgent)を使用。 ---入力されたタスクやメッセージを解析し、適切なエージェントに 振り分けるのが仕事。 ---この、最も簡単なサンプルとして2つのエージェントにジャンケンせさ、結果を判定する。 -https://github.com/OpenTouryoProject/DxCommon/blob/master/Notebook/path/ed-donner_agents/5_autogen/4_lab4_autogen_distributed_ja.ipynb -https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?The%20Complete%20Agentic%20AI%20Engineering%20Course%20%282025%29#ucfd48c6~ https://github.com/OpenTouryoProject/DxCommon/blob/master/Notebook/path/ed-donner_agents/5_autogen/4_lab4_autogen_distributed_ja.ipynb --AutoGen Coreの分散ランタイムを使用 --宣伝・予告目的の“さわり”だけを公開 --エージェント同士がgRPCで会話する。 --内容はシンプルに、RoutedAgentを使用したトレードオフ分析 ---メリット・デメリットの2つの情報収集エージェントを使用 ---メリット・デメリット情報からトレードオフ分析して採用可否の判定 ***ハンズオンのコンセプト [#ueef8729] https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?The%20Complete%20Agentic%20AI%20Engineering%20Course%20%282025%29#b0ee9256~ https://github.com/OpenTouryoProject/DxCommon/blob/master/Notebook/path/ed-donner_agents/5_autogen/5_lab5_autogen_bigEEEpj_ja.ipynb -分散ランタイムへ動的に生成したエージェントを登録し動かしている。 -RoutedAgentとAssistantAgentは1:1で、生成されているのはRoutedAgent -RoutedAgentがRoutedAgentに処理を委譲しているが、協調動作と言える所までは行っていない。 -*.pyファイルの説明 --world.py : エントリ・ポイントと最初の処理 --creator.py : エージェント作成・登録・実行 --agent.py : エージェントの実装テンプレート --agent_commented.py : 上記にコメントを追加したもの(実働しない) --messages.py : Messageクラスとfind_recipient関数 *機能 [#ee191833] **Autogen Core [#ne16b333] Autogenの中心にあるAutogenコアは、主に以下の特徴や役割を持っている。 -LLM 非依存な実行モデル -イベント駆動/非同期実行 -メッセージ駆動/同期実行 -ライフサイクル管理 -エージェント定義 ***ランタイム抽象 [#o925f20c] -「スタンドアロン」や「(実験的)分散」などのランタイムで、エージェントの実行環境を抽象化。 -ローカルやネットワーク越しの通信、プロセス間通信なども統一的に扱える。 -単一エージェントだけでなく「多数のエージェント群」を組み合わせた協調シナリオを想定。 -特徴:実行場所やプロトコルに依存せずエージェントを起動可能。 ***エージェント抽象化 [#e24a1ace] -LLMを「エージェント」として抽象化。 -エージェント間のメッセージ送受信を統一的に扱える。 -例: --AssistantAgent:タスク実行型の標準エージェント。 --RoutedAgent:条件に応じて他のエージェントにメッセージを振り分ける。 ***メッセージ・ハンドリング [#y6bfaa57] -@message_handlerデコレータでメッセージ処理関数を登録可能。 -エージェントが受信した特定タイプのメッセージに対して処理を分岐できる。 -特徴:イベント駆動型で、複雑なタスクフローを簡潔に定義可能。 ***非同期・並列処理 [#nd946ec4] -async/await を活用してエージェント間通信を非同期に処理。 -複数エージェントが同時にメッセージを処理してもブロッキングしない。 -特徴:大規模マルチエージェント環境でも効率的に動作。 ***終了条件やキャンセルのサポート [#d3731d89] -CancellationToken や TerminationCondition といった仕組みで、エージェント間対話を柔軟に停止可能。 -特徴:無限ループや長時間処理の制御が容易。 ***拡張性 [#neaf5e1e] -独自エージェントの追加や、メッセージタイプの定義などが容易。 -将来的なLLMやツールの統合に柔軟。 **AutoGen AgentChat [#j394a0ae] エージェント同士が話す(エージェント対話・協調の標準実装) **AutoGen Extensions [#tbec118c] 外部とつながる、現実世界と接続(外部統合・実運用向け拡張群) -各種 LLM プロバイダ対応 -Tool / Function / MCP 連携 -コード実行(Python, Shell など) -ベクタDB、検索、RAG統合 -ロギング・トレーシング **AutoGen Studio [#yb9d7fdf] 人が触る(GUI・可視化・操作系) -Web UI によるエージェント設計 -ワークフローの視覚的構築 -エージェント会話の可視化・再実行 **AutoGen Bench / Evaluation [#uea0dfc1] 周辺パッケージ(研究・品質保証向けの補助機能群) -エージェントの性能評価 -タスク成功率・協調性能の測定 -再現可能なベンチマーク実行 *参考 [#mc5d3560] -[[The Complete Agentic AI Engineering Course (2025) - Week5>The Complete Agentic AI Engineering Course (2025)#i48413af]] **2つの系統 [#q030a73e] 0.3でMS版とコミュニティ版が分裂。 -0.4以降は大幅に書き直されたMS版で、AG2がコミュニティ版 -その他に、商用のMicrosoft Agent Frameworkと言うモノもある。 ***MS公式 [#k40a6c11] https://microsoft.github.io/autogen/ -Learnからリンクされている0.2系は凝っている~ https://microsoft.github.io/autogen/0.2/docs/topics/llm_configuration/ -最新バージョン(0.75)のマイグレーション情報を見ると0.2系→0.4系~ https://microsoft.github.io/autogen/stable/user-guide/agentchat-user-guide/migration-guide.html ***コミュニティ版 [#nc1987ef] -AgentOS~ https://ag2.ai/ -ag2ai/ag2: AG2 (formerly AutoGen): The Open-Source AgentOS. Join us at: https://discord.gg/pAbnFJrkgZ~ https://github.com/ag2ai/ag2 **IT技術系 [#d58ae6c7] -AutoGen AgentChat : Tutorial : エージェント – ClassCat® Blog~ https://torch.classcat.com/2025/04/22/autogen-agentchat-tutorial-agents/ ***Qiita [#ib3d5a21] -LLMマルチエージェントフレームワークAutoGen入門 #Microsoft~ https://qiita.com/suikabar/items/32c6215d3c0535aba328 -Microsoft AutoGenのマルチエージェント会話パターン #Python~ https://qiita.com/mkuwan/items/3382e3790023b8468bd7 -AutoGenの開発ストリームは2つに分かれている #Python~ https://qiita.com/mkuwan/items/bf11aa2403bd6f7bccb9 ***Zenn [#r91d74c3] -LLMマルチエージェントAutoGenに入門 ~基本設計書の作成とレビューをさせてみる~ https://zenn.dev/nomhiro/articles/autogen-abstract -AutoGen入門:マルチエージェントで自律型AIライターを構築し、記事作成を自動化する方法~ https://zenn.dev/secondselection/articles/ai_articles_generator