最終更新日:
AutoGenとは、ユーザの代わりに会話をはじめとするさまざまなタスクを遂行するAIエージェントの一種である、プロキシエージェントを組み込んだLLMアプリを可能とするフレームワークを指します。AutoGenを活用すれば、ユーザはプロキシエージェントと協働することで複雑なタスクを遂行できるようになります。こうしたフレームワークを活用したLLMアプリの事例には、以下のようなものが考えられます。
AutoGen活用LLMアプリの事例
AutoGen活用LLMアプリ概要 |
アプリの仕様 |
高度なコード生成 | LLMによるコード生成において、コードの生成とコードの安全性確認を担当するAIエージェントをそれぞれ設定したうえで、これらのタスクをまとめるコマンダー(指揮官)エージェントを活用して安全なコードを生成する。 |
高度なデータ分析 | 人間ユーザがデータ分析に関してLLMに質問した際、データ分析に必要なツールのインストール等を実行するプロキシエージェントを設定して、高度なデータ分析タスクの一部を自動化する。 |
会話型チェス | チェスの指し手に関する会話を担当するプロキシエージェントを設定することで、会話によるチェスの対局を可能とする。このチェスゲームにおけるプレイヤーには、人間、AI、そして人間とAIが協力するハイブリッドが想定されている。 |
高度なグループチャット | マネージャーと呼ばれるプロキシエージェントを設定したうえで、このマネージャーが任意のチャットメンバーに発言を求め、その発言をほかのチャットメンバーに配信する。 |
以上のようなLLMアプリを可能とするAutoGenはPythonパッケージとして無料で利用できます。AutoGenは、2024年に運営が始まるOpen AIのGPTストアで公開されるアプリで多用されるかも知れません。
翻訳記事本文の後に、付録としてAutoGen公式サイトに掲載されている活用事例集と会話パターン集を引用します。
以下の翻訳記事の理解と解釈は、翻訳者およびAINOW編集部の責任において行われたものです。また、翻訳記事の内容は特定の国や地域を代表するものではなく、翻訳者およびAINOW編集部の主義主張を表明したものでもありません。
以下の翻訳記事を作成するにあたっては、日本語の文章として読み易くするために、意訳やコンテクストを明確にするための補足を行っています。
目次
はじめに
「AutoGenのような機能によって、大規模言語モデルの能力が根本的に変革され、拡張する準備が整う。これは、私が最近見たAIのなかで最もエキサイティングな開発のひとつだ。」
Microsoftテクニカルフェロー、ダグ・バーガー(Doug Burger)氏の発言
大規模言語モデル(LLM)の可能性を最大限に活用できるワークフローを設計、実装、最適化するには、多くの労力と専門知識が必要となる。これらのワークフローを自動化することは、非常に大きな価値がある。開発者がますます複雑なLLMベースのアプリケーションを作成し始めると、ワークフローは必然的に複雑になる。そのようなワークフローの潜在的な設計空間は広大かつ複雑になる可能性があるため、ロバストなパフォーマンスで最適なワークフローを編成するという課題がより切実なものとなる。
AutoGenは、LLMワークフローの編成、最適化、自動化を簡素化するフレームワークである。このフレームワークは、カスタマイズと会話が可能なエージェントの提供を通して、GPT-4のような最も先進的なLLMの強力な機能を活用する。そして、自動化されたチャットによる複数のエージェント間の会話によって、人間とツールを統合してLLMの限界に対処する。
AutoGenを使った複雑なマルチエージェント会話システムの構築は、以下のような手順にまとめられる。
- 特殊な能力と役割を持つエージェントのセットを定義する。
- エージェント間のインタラクション動作、すなわちエージェントが他のエージェントからメッセージを受信した場合の返答を定義する。
どちらのステップも直感的でモジュール化されているため、これらのエージェントは再利用可能でコンポーザブル(※訳註1)である。例えば、コードベースの質問応答システムを構築する場合、図2のようにエージェントとそのインタラクションを設計できる。このようなシステムは、サプライチェーン最適化のようなアプリケーションにおいて、手作業が必要なインタラクションの数を3倍から10倍に削減することが示されている。AutoGenを使用することで、コーディングの労力も4倍以上削減される。
有能かつ会話可能、そしてカスタマイズ可能なエージェントであるAutoGen – LLM、人間、そしてツールを統合する
AutoGenエージェントは、LLM、人間、ツール、またはそれらの要素の混合によって実現する機能を持つ。例えば
- (グループチャットによって複雑なタスクを自動解決するような)エージェントに(推論パラメータチューニングによるパフォーマンスの最適化のような)高度な推論機能を持たせて、LLMの活用法とその役割を簡単に設定できる。
- 人間の知性による監視は、さまざまな関与レベルとパターンを持つプロキシエージェントを通して実現できる(例えば、GPT-4と複数の人間ユーザによるタスク自動解決)。
- エージェントは、LLM駆動のコード/関数実行をネイティブにサポートしている(例えばコード生成によるタスク自動解決とデバッグの実行、提供されたツールの関数としての使用)。
AutoGenから組み込みエージェントを使用する1つの簡単な方法は、アシスタントエージェントとユーザプロキシエージェント間の自動チャットを呼び出すことである。例として(図3)、ChatGPT + Code Interpreter + プラグインの拡張バージョンを簡単に構築できる。この場合、カスタマイズ可能な自動化の度合いに応じてカスタム環境で使用できるので、より大きなシステムにも組み込める。また、過去のインタラクションにもとづくパーソナライゼーションや適応性の追加(例えば、自動化された継続学習、エージェントに新しいスキルを教える)など、多様なアプリケーションシナリオをサポートするために動作を拡張することも容易である。
エージェントの会話中心のデザインには、以下のような多くの利点がある。
- 曖昧さ、フィードバック、進捗、コラボレーションを自然に処理する。
- トラブルシューティングで必要となるツールの使用のような、コーディング関連タスクの効率化を可能とする。
- ユーザは、チャット内のエージェントを通じて、シームレスに(何らかの設定の)オプトインまたはオプトアウトできる。
- 複数のスペシャリストの協力により、集団的な目標を達成する。
AutoGenは、自動化されたチャットとの多様なコミュニケーションパターンをサポートしている。それゆえ、複雑で動的なワークフローや汎用的な実験を簡単に編成できる。図4は、AutoGenによって可能になった新しいゲームである会話型チェスを示している。また図5は、AutoGenが「グループチャットマネージャー」と呼ばれる特別なエージェントを使用して、複数のエージェント間のグループチャットをサポートしている様子を示している。
AutoGenを始めるには
AutoGen(プレビュー版)は、Pythonパッケージとして無料で利用できる。インストールするには、以下のPythonコードを実行する。
pip install pyautogen
わずか数行のコードで、すぐにパワフルな体験が可能となる。
import autogen assistant = autogen.AssistantAgent("assistant") user_proxy = autogen.UserProxyAgent("user_proxy") user_proxy.initiate_chat(assistant, message="Show me the YTD gain of 10 largest technology companies as of today.") # This triggers automated chat to solve the task
AutoGen活用LLMアプリに挿入するコードの事例
|
以下のURLリンクより、さまざまなAutoGen活用タスク事例をチェックしよう。
https://microsoft.github.io/autogen/docs/Examples
次のステップ:
- あなたのLLMアプリケーションでAutoGenを使い、Discordでフィードバックを提供する。
- 研究について読む。
◆ AutoGen:マルチエージェント会話フレームワークで次世代LLMアプリケーションを実現する
◆ 大規模言語モデル生成推論のための費用対効果の高いハイパーパラメータ最適化
AutoGenは(自動機械学習とチューニングのための高速ライブラリであるFLAMLからのスピンオフとして)活発な開発が行われており、オープンソースでコミュニティ主導のプロジェクトでもある。それゆえ、あらゆるバックグラウンドの個人からの貢献を奨励している。ペンシルバニア州立大学やワシントン大学のような学界からの貢献者、Microsoft FabricやML.NETのような製品チームなど、Microsoft Research所属の多くの貢献者がこのプロジェクトに多大な貢献をしている。AutoGenでは開発者が次世代アプリケーションを構築するための効果的で使いやすいフレームワークを提供することを目指しており、創造的なアプリケーションの構築とイノベーションのための巨大な空間の提供に関する有望な機会をすでに明らかにしている。
Microsoftに所属する貢献者の名前:
Chi Wang、Gagan Bansal、Eric Zhu、Beibin Li、Li Jiang、Xiaoyun Zhang、Ahmed Awadallah、Ryen White、Doug Burger、Robin Moeur、Victor Dibia、Adam Fourney、Piali Choudhury、Saleema Amershi、Ricky Loynd、Hamed Khanpour、Ece Kamar.
付録1:AutoGen活用アプリ事例集
AutoGen公式GitHubサイトにおける「事例」ページには、多数のAutoGen活用事例が掲載されている。それらをカテゴリー別に列挙すると、以下の通り。なお、各事例のリンク先はそれらのGitHubページとなっている。
コード生成、実行、デバッグ
マルチエージェントコラボレーション(3エージェント以上が参加)
アプリケーション
ツールの使用
人間の関与
エージェントのティーチングと学習
OpenAIのアシスタントをループに入れたマルチエージェントチャット
マルチモーダルエージェント
長いコンテキストの処理
|
- 評価とアセスメント
エージェントの自動構築
付録2:AutoGen活用アプリの会話パターン
AutoGen公式GitHubサイトには、AutoGenアプリにおける会話パターンをまとめた以下のような図を掲載したウェブページがある。
AutoGenアプリにおける典型的な6つの会話パターン
上図における各会話パターンの概要は、以下の通り。
会話パターン概要 |
アーキテクチャ解説 |
A1. 数学の問題を解く | ユーザ(学生)がAIアシスタントに数学の問題に関する解法を質問する。AIアシスタントは、数学の専門家として機能するプロキシエージェントにその解法を質問し、ユーザに回答を返す。 |
A2. 拡張検索チャット | RAGなどで検索機能が拡張されたプロキシエージェントとアシスタントエージェントがチャットする。 |
A3. エージェントの意思決定 | 物理世界を認識したうえでタスクを遂行するALFWorld実行者は、世界を認識するGroundingエージェントとタスク遂行に関する知識を質問できるアシスタントエージェントと連携してタスクを実行する。 |
A4. マルチエージェントコーディング | コードを生成するライター、コードの安全性を確認するセーフガード、これらのエージェントを統合するコマンダーによってコードを生成する。上図2も参照。 |
A5. ダイナミックグループチャット | グループチャットにおいて任意のスピーカーの発言を、マネージャーエージェントがほかのチャット参加者に配信する。上図5も参照。 |
A6. 会話型チェス | 人間あるいはAIエージェント、もしくは人間とAIが協力したハイブリッドなチェスプレイヤーが、プロキシエージェントを仲介者としてチェスを対戦する。上図4も参照。 |
原文
『AutoGen: Enabling next-generation large language model applications』
著者
Microsoft Research
翻訳
吉本幸記(フリーライター、JDLA Deep Learning for GENERAL 2019 #1取得)
編集
おざけん