MicrosoftのAI Agent「Magentic-One」を理解する
2024年11月4日にMicrosoftから「Magentic-One: A Generalist Multi-Agent System for Solving Complex Tasks」(複雑なタスクを解決するための汎用マルチエージェントシステム)という記事が公開され、話題となっているようなので読んでみました。
※本記事の画像や内容はこの記事を元に作成/引用しています。ぜひ本家ドキュメントを読んでください。
Magentic-Oneとは
Magentic-Oneは、複雑なタスクを効率的に解決するために設計された高性能な汎用マルチエージェントシステムです。
概要
Orchestratorと呼ばれるリードエージェントが中心となり、4つの専門エージェントを指揮・統括します。各エージェントは特定の機能(Webブラウジング、ファイル操作、Pythonコード実行など)に特化しています。
Orchestratorが計画立案、進捗管理、エラー時の再計画を担当します
主な特長
- AutoGenフレームワークをベースに構築されており、複数の難しいエージェントベンチマークでも競争力のある性能を発揮
- モジュール式の設計により、必要に応じてエージェントの追加・削除が容易
- 各エージェントのスキルがカプセル化されており、開発と再利用が簡単
利点
- モノリシックなシングルエージェントシステムと比較して、柔軟性と拡張性に優れている
- システム全体を再構築することなく、新しい機能を追加できる
- 各エージェントが専門分野に特化することで、効率的なタスク処理が可能
仕組み
Magentic-Oneの核となる仕組みは、Orchestratorによる2つのループ構造にあります。これらのループは、タスクの管理と実行を効率的に進めるために設計されています。
Orchestrator: 2つのループ構造
大きくTask Ledger
とProgress Ledger
の2つから構成され、Task Ledgerでタスクに対する計画を立て、Progress Ledgerでその進捗を管理します。
Agentsがエラーを出す→修正→またエラーを出す...のようにループしている場合はProgress Ledgerがそれを検知し、Task Ledgerでタスクの立て直しを行います。
1. 外側のループ(実線の矢印)
- タスク台帳(Task Ledger) を管理するループです
- 事実、予測、計画などの情報が記録されます
- 全体的なタスクの計画立案と見直しに使用されます
2. 内側のループ(点線の矢印)
- 進行状況台帳(Progress Ledger) を管理するループです
- 現在の進捗状況とエージェントへのタスク割り当て状況を追跡します
- リアルタイムの進捗管理に活用されます
Orchestrator: 処理フロー
Orchestratorは以下のような流れでタスクを管理・実行します。
- タスクの計画を立案し、必要な情報を収集します
- 計画の各ステップで進捗状況を確認します
- 未完了のタスクがある場合、適切なエージェント(WebSurfer、FileSurfer、Coder、ComputerTerminal)にサブタスクを割り当てます
- 割り当てられたエージェントがサブタスクを完了すると、進捗台帳を更新します
- 進捗が不十分な場合は、計画を見直し、必要に応じて再計画を行います
このように、Orchestratorがタスクとリソースを効率的に管理することで、Magentic-One全体のパフォーマンスを最適化しています。マルチエージェントシステムの利点を活かし、複雑なタスクを効率的に処理することを可能にしています。
Agentsの紹介
Magentic-Oneには現在、以下の5つのエージェントが含まれています。
1. Orchestrator(オーケストレーター)
タスクを指揮・統括するリードエージェントです。タスクの分解、計画立案、他のエージェントへの指示出し、進捗管理などを行います。
問題が発生した場合は是正措置も実施します。
2. WebSurfer(ウェブサーファー)
ChromiumベースのWebブラウザを制御・管理するLLMベースのエージェントです。以下のようなWeb関連のタスクを実行できます。
- URLの訪問やWeb検索の実行などのナビゲーション
- クリックや入力などのページ操作
- Webページの要約や質問への回答などの読み取り
3. FileSurfer(ファイルサーファー)
ローカルファイルを扱うLLMベースのエージェントです。マークダウンベースのファイルプレビューアプリケーションを使って以下のような操作が可能です。
- ファイルの読み取り
- ディレクトリ内容の一覧表示
- ディレクトリ間の移動
4. Coder(コーダー)
コーディングに特化したLLMベースのエージェントで、以下のような作業を行います。
- コードの記述
- 他エージェントから収集した情報の分析
- 新しい成果物の作成
5. ComputerTerminal(コンピューターターミナル)
コンソールシェルへのアクセスを提供するエージェントです。主に以下の操作を担当します。
- プログラムの実行
- 新しいライブラリのインストール
評価
AutoGenBenchで評価を行っており、単独で動作するGPT-4に比べると圧倒的に高いスコアを獲得し、既存の最高性能のシステムに匹敵するレベルとなっていることが確認できます。
ただしHuman
と比べるとまだまだだな...と感じます。
(ここで包み隠さずHumanを入れてくれたことが個人的には嬉しいです)
動かしてみる
ここまで概要を記述してきましたが、ソースコードが公開されているので実際に動かしてみようと思います。
(ソースコードは以下のリンクに公開されています。)
(READMEを日本語訳しています)
1. 環境構築
リポジトリをクローンし、uv
を使用して仮想環境を構築します。
(uvが入っていない方は以下URLからインストールしてください)
$ git clone https://github.com/microsoft/autogen.git
$ cd autogen/python
$ uv sync --all-extras
$ source .venv/bin/activate
次にmagentic-one
,playwright
をインストールします。
$ cd packages/autogen-magentic-one
$ pip install -e .
$ playwright install --with-deps chromium
環境変数を設定します。
LLMはOpenAIを使用します。
現在、Magentic-One は基盤となる LLM として OpenAI の GPT-4o のみをサポートしています。
今回はweb検索をさせるため、Bing API Keyも設定します。(optional)
$ export CHAT_COMPLETION_PROVIDER='openai'
$ export CHAT_COMPLETION_KWARGS_JSON='{"api_key": "<REPLACE_WITH_YOUR_API>", "model": "gpt-4o-2024-05-13"}'
$ export BING_API_KEY=<REPLACE_WITH_YOUR_API_KEY>
2. web検索させてみる
Agentが見ているスクリーンショットを保存しながら実行するには--save_screenshots
のオプションをつけて実行します。
$ python examples/example.py --logs_dir ./logs --save_screenshots
実行し、プロンプトを入力します。
今回はビットコインの価格を取得してもらいます。
User input ('exit' to quit): 今のbitcoinの価格を教えて。
3. 結果を確認
スクリーンショットが./logs
に吐き出されるので確認すると、Bingの画面の次にビットコインの価格を検索している様子が確認できます。
検索が終わると、コンソールに結果が出力されました。
まとめ・感想
まだブラウザ操作させたくらいですが、一応エラーなく期待した結果を返してくれました。
「Agentが人間の仕事を奪う」かどうかはまだ精度的に分かりませんが、人間の一部の作業を代替するくらいにはなってきていると思います。
browser-use, MCPなどブラウザやPCを直接操作するようなAgentはたくさん出てきているので、2025年はこの辺に注目していきたいと思っています。
参考
にゃんたさんの動画はとても分かりやすく解説されていて勉強になりました。ありがとうございます。
Discussion