AutoGenについて調査してみた
はじめに
はじめまして。R&D部門にて内定者インターンをしている塚田(GitHub:carbscountry)と申します。
その業務の一環として、マルチエージェントを利用したLLMアプリケーションの構築が簡単にできるOSS「AutoGen」についての調査をしたので、
ここで紹介しようと思います。
参考
AutoGenとは
AutoGenとは、2023年の8月にMicrosoftが発表したマルチエージェントLLMアプリ開発用のフレームワークです。
このOSSの特徴は、複数のLLMエージェントを定義してそれらが相互に対話をしてタスクを解決するシステムを簡単に構築できる点です。また、途中で人間のフィードバックを受けることもできます。
また、言語モデルはOpenAIのAPIをはじめとして、Azure OpenAPIやオープンソースのLLMも使用できます。しかし、公式のドキュメントはOpenAI APIを使用して書かれています。
さらに、コードの実行や関数を作成して呼び出すこともできます。
参考
主な活用方法
ここでは、公式が発表した論文で紹介されている6つのアプリケーションを引用します。多様なアプリケーションを簡単に構築できる点が、他のフレームと比べてAutoGenが優れている所です。
数学の問題を解く
RAGを利用したコード生成と質問回答
テキストでの意思決定
複数のLLMエージェントでのコーディング
動的なグループチャット
チェスの対局
エコシステム
ドキュメントで紹介されているエコシステムをまとめました。
Composio
Composioは、エージェントがAPI、RPC、ブラウザ、またはその他の方法を介して、エージェントと外部の世界との対話を必要とするタスクを実行できるようになるツール。2024年の5月に発表された出来立てのOSSです。
Databricks
Databricksは、学術界とオープンソースコミュニティに端を発し、Apache Spark™、Delta Lake、MLflow の開発者グループによって 2013 年に創業しました。クラウド上のレイクハウスプラットフォームとして世界初、世界唯一の、データウェアハウスとデータレイク両方の優れた特長を備えたデータと AI のためのオープンな統合プラットフォームを提供しています。(公式HPより引用)
AutoGenは、Databricksが開発したLLM、DBRXのAPIを利用可能です。
MemGPT
MemGPTは、長期記憶/状態管理や外部データソースへの接続、カスタムツールの定義と呼び出しをサポートするLLMエージェントの構築と展開ができるOSSです。
AutoGenのエージェントクラスを模倣した、「MemGPTAgent」をサポートしています。
Microsoft Fabric
Microsoft Fabricは、データ移動からデータ サイエンス、リアルタイム分析、ビジネス インテリジェンスまですべてをカバーする企業向けのオールインワン分析ソリューションです。
Microsoft Fabric上でAutoGenを利用するサンプルコード
Ollama
Ollamaを使用すると、ユーザーは Llama 2 などのオープンソースの大規模言語モデルをローカルで実行できます。 Ollama は、モデルの重み、構成、およびデータを、Modelfile によって定義された単一のパッケージにバンドルしてくれたり、 GPU の使用状況を含む、セットアップと構成の詳細を最適化できるOSSです。
PGVector
PGVector は、Postgres 用のオープンソースのベクトル類似性検索です。
などをサポートしています。
Promptflow
Promptflowは、LLMベースのAIアプリケーションの開発、テスト、評価、デプロイメントを簡素化する包括的なツールスイートです。また、クラウドベースの運用のためのAzure AIとの統合をサポートし、end to endの開発を合理化するように設計されています。
運用上の課題
AutoGen固有の問題ではなく、LLMマルチエージェントシステムを構築する上での課題を説明したいと思います。
ちょうどいい論文があったのでそちらを参考にします。
Planning
マルチエージェントシステム構築を計画するときは、単一エージェントシステムと比較して、タスクを正しく分解し、どのエージェントにどのタスクを割り当てるかの最適化が必要です。それだけでなく、途中でどのように指令を追加で与えるかなどシングルエージェントシステムよりも考慮すべきことが多くなります。
一応、AutoGenはコストを抑えてLLMの推論のパフォーマンスを向上させるチューニングを行えるそうです。
また、費用対効果の高いハイパーパラメータ最適化手法、EcoOptiGenも提供しています。
Memory management
シングルエージェントシステムにおけるメモリとは主に、過去のクエリや外部データソースなどの情報をもとに推論を強化するために、過去のクエリや外部データソースなどの記録、管理、利用をする能力を指します。
しかし、マルチエージェントシステムにおいては複数のエージェントが協働する必要があるため、エージェント間での情報の共有、統合、管理のための高度なメカニズムが必要になります。
AutoGenにおいては、エコシステムとしてMemGPTがあり、メモリ管理においてはこちらを使うといいでしょう。(MemGPTの説明は、エコシステムの項目をご参照ください)
OpenAIのAPIを使用した場合のトークン制限や料金
複数のエージェントが何度もAPIを呼び出すため、料金がかさんだり、トークン制限を受けてしまう可能性がシングルエージェントシステムよりも高いです。この辺の問題は、APIを使っているシステム全てに言えるかもしれないですが…
最後に
今回は、マルチエージェントLLMアプリケーション構築用のフレームワークのAutoGenを紹介しました。やはり、Microsoftが出したこともあり、他のフレームワークよりも容易に構築できて、実現できることが多く、ドキュメントも充実しています。マルチエージェントLLMに興味のある方は、とりあえずAutoGenを触ってみるといいと思います。
しかし、できたばかりの技術なので、実運用の事例が見つからないことや運用上の課題などまだまだ発展の余地があります。
ここまでお読みいただきありがとうございました。
▼ワンキャリアのエンジニア組織のことを知りたい方はまずこちら
▼カジュアル面談を希望の方はこちら
▼エンジニア求人票
この記事が参加している募集
この記事が気に入ったらサポートをしてみませんか?