ジェネラティブエージェンツの大嶋です。
「AIエージェントキャッチアップ #11 - Magentic-One」という勉強会を開催しました。
generative-agents.connpass.com
アーカイブ動画はこちらです。
Magentic-One
今回は、AutoGen上に構築されたマルチエージェントフレームワーク「Magentic-One」について、公式ブログを読んだり動かしたりしてみました。
Magentic-OneのGitHubリポジトリはこちらです。
今回のポイント
Magentic-Oneの概要
Magentic-Oneは、AutoGen上に構築されたマルチエージェントフレームワークです。
ユーザーの入力をOrchestratorがタスク分解し、各タスクをWebSurfer、FileSurfer、Coder、ComputerTerminalという専門家エージェントをアサインしながら進めます。
Magentic-Oneのソースコードは、AutoGenのGitHubリポジトリの中に置かれています。
Magentic-OneのREADME.mdには
This code is currently being ported to AutoGen AgentChat. If you want to build on top of Magentic-One, we recommend waiting for the port to be completed. In the meantime, you can use this codebase to experiment with Magentic-One.
と書かれており、AutoGenのAgentChatに移植中のようです。
Magentic-Oneの動作
GitHubに書かれている手順でexampleのコードを実行してみたところ、Magentic-Oneは実際に動きました。
「AutoGenのアップデートを調べて」と指示すると、OrchestratorがWebSurferをアサインしながらタスクを進めていきました。
実際にMagentic-Oneを使用する際は、以下のexampleを参考に自分でコードを書いていくようです。
Orchestratorの出力
Orchestratorは計画を立てたりしたあと、各専門家エージェントのアサインにあたって以下のJSON形式の出力を出します。
{ "is_request_satisfied": { "reason": "The request to find updates about AutoGen has not been addressed yet.", "answer": false }, "is_in_loop": { "reason": "We have not yet taken any actions that could create a loop.", "answer": false }, "is_progress_being_made": { "reason": "We are just beginning to address the request, and have planned an approach involving WebSurfer.", "answer": true }, "next_speaker": { "reason": "WebSurfer is needed to perform a web search to gather information about AutoGen and its updates.", "answer": "WebSurfer" }, "instruction_or_question": { "reason": "WebSurfer needs to clarify what 'AutoGen' refers to in this context by searching the web.", "answer": "Please perform a web search to identify what 'AutoGen' refers to, as there may be multiple tools or software with this name. Then, search for the latest updates or release notes for AutoGen, potentially from its official website, GitHub repository, or software documentation." } }
この中の
"next_speaker": { "reason": "WebSurfer is needed to perform a web search to gather information about AutoGen and its updates.", "answer": "WebSurfer" },
という箇所から、WebSurferがアサインされたことが分かります。
また、
"is_in_loop": { "reason": "We have not yet taken any actions that could create a loop.", "answer": false }, "is_progress_being_made": { "reason": "We are just beginning to address the request, and have planned an approach involving WebSurfer.", "answer": true },
のように、動作がループしていないか検知したり、進捗が出ているかチェックしていることが分かります。
Magentic-Oneのソースコードを参照すると、一定回数以上ループの検知や進捗が出ないということがあれば、計画を立て直すようになっているようでした。
stalled = ledger_dict["is_in_loop"]["answer"] or not ledger_dict["is_progress_being_made"]["answer"] if stalled: self._stall_counter += 1 # We exceeded our stall counter, so we need to replan, or exit if self._stall_counter > self._max_stalls_before_replan: :
思考のループはLLMエージェントのよくある挙動であり、それをLLMで検知させるというのは面白い例でした。
次回のご案内
以上、今回は「Magentic-One」をキャッチアップしました。
次回は「AIエージェントキャッチアップ #12 - Multi-Agent Orchestrator」ということで、AWSが公開したマルチエージェントフレームワーク「Multi-Agent Orchestrator」がテーマです!
generative-agents.connpass.com
ご興味・お時間ある方はぜひご参加ください!
また、その次の回以降のテーマも募集しているので、気になるエージェントのOSSなどあれば教えてください!