見出し画像

AutoGenについて調査してみた

はじめに

はじめまして。R&D部門にて内定者インターンをしている塚田(GitHub:carbscountry)と申します。
その業務の一環として、マルチエージェントを利用したLLMアプリケーションの構築が簡単にできるOSS「AutoGen」についての調査をしたので、
ここで紹介しようと思います。

参考



AutoGenとは

AutoGenとは、2023年の8月にMicrosoftが発表したマルチエージェントLLMアプリ開発用のフレームワークです。
このOSSの特徴は、複数のLLMエージェントを定義してそれらが相互に対話をしてタスクを解決するシステムを簡単に構築できる点です。また、途中で人間のフィードバックを受けることもできます。

引用(Wu et al. (2023) P.6

また、言語モデルはOpenAIのAPIをはじめとして、Azure OpenAPIやオープンソースのLLMも使用できます。しかし、公式のドキュメントはOpenAI APIを使用して書かれています。
さらに、コードの実行や関数を作成して呼び出すこともできます。

参考


主な活用方法

ここでは、公式が発表した論文で紹介されている6つのアプリケーションを引用します。多様なアプリケーションを簡単に構築できる点が、他のフレームと比べてAutoGenが優れている所です。

  • 数学の問題を解く

  • RAGを利用したコード生成と質問回答

  • テキストでの意思決定

  • 複数のLLMエージェントでのコーディング

  • 動的なグループチャット

  • チェスの対局

引用 (Wu et al. (2023) P.6

エコシステム

ドキュメントで紹介されているエコシステムをまとめました。

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 用のオープンソースのベクトル類似性検索です。

・正確かつ近似的な最近傍検索
・単精度、半精度、バイナリ、およびスパース ベクトル
・L2距離、内積、コサイン距離、L1距離、ハミング距離、ジャッカード距離
・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を触ってみるといいと思います。
しかし、できたばかりの技術なので、実運用の事例が見つからないことや運用上の課題などまだまだ発展の余地があります。
ここまでお読みいただきありがとうございました。


▼ワンキャリアのエンジニア組織のことを知りたい方はまずこちら

▼カジュアル面談を希望の方はこちら

▼エンジニア求人票


この記事が参加している募集

この記事が気に入ったらサポートをしてみませんか?