Yoheina KajimaのBabyagiに触発されました
BabyAgi-chromaリポジトリには、ローカルで実行される無料のベクターストレージソリューションであるChromaがあります。これは、Pineconeなどの他のベクトルストレージオプションに関連する潜在的なコストを回避したいユーザーにとって特に有利です。
このPythonスクリプトは、Langchain、Openai、およびChromaのVectorデータベースを活用して、タスクを作成、優先順位付け、実行するAI搭載のタスク管理システムの例を紹介します。このシステムは、以前のタスクの結果と事前定義された目的に基づいてタスクを作成します。このスクリプトは、LangchainのOpenai Natural Language Processing(NLP)ツールキットと検索機能を使用して、目標に基づいて新しいタスクを作成し、Chromaがコンテキストのタスク結果を保存および取得します。これは、元のタスク駆動型自律剤の単純化されたバージョンです(2023年3月28日)。
このREADMEは、次のトピックをカバーしています。
スクリプトは、以下の手順を無限のループで実行します。
実行チェーンは、目的とコンテキストを考慮することにより、特定のタスクを処理します。 LangchainのLLMChainを利用してタスクを実行します。 execute_task関数は、入力としてのChroma VectorStore、実行チェーン、客観的な情報、およびタスク情報を取得します。目的に基づいてベクトルストアからトップKタスクのリストを取得し、実行チェーンを使用してタスクを実行し、結果をVectorStoreに保存します。関数が結果を返します。
実行チェーンは、このコードブロックで明示的に定義されていません。ただし、 execute_taskのパラメーターとして渡され、コードで個別に定義できます。これは、LangchainのLLMChainクラスのインスタンスであり、プロンプトを受け入れ、提供された入力変数に基づいて応答を生成します。
TaskCreationChainクラスでは、LLMChainを使用して新しいタスクを作成します。 from_llm関数は、LangchainのPromptTemplateを使用してパラメーターを取り、新しいタスクのリストを文字列として返します。次に、カスタム入力変数と指定された動作とともに、TaskCreationChainのインスタンスを作成します。
TaskPrioritizationChainクラスでは、LLMChainを使用してタスクに優先順位を付けます。 from_llm関数は、LangchainのPromptTemplateを介してパラメーターを受け入れ、新しいタスクのリストを文字列として返します。次に、カスタム入力変数と指定された動作とともに、TaskPrioritizationChainのインスタンスを作成します。
スクリプトは、コンテキストのために保存、類似性検索、およびタスクの結果を取得するためにクロマを活用します。 TABLE_NAME変数で指定されたテーブル名に基づいてChromaインデックスを作成します。その後、Chromaはタスク結果をインデックスに保存し、タスク名と追加のメタデータを保存します。
スクリプトを利用するには、次の手順を実行します。
git clone https://github.com/alexdphan/babyagi-chroma.gitとcdにクローニングされたディレクトリに。pip install -r requirements.txt.env.exampleファイルを.env : cp .env.example .envにコピーします。このファイルに次の変数を設定します。OPENAI_API_KEYとSERPAPI_API_KEYでAPIキーを提供します。TABLE_NAME変数に保存されるテーブルの名前を設定します。OBJECTIVE変数にタスク管理システムの目的を設定します。INITIAL_TASK変数にシステムの最初のタスクを設定します。python babyagi-chroma.pyを使用してスクリプトを実行します。上記のすべてのオプション値は、コマンドラインでも指定できます。
このスクリプトは、すべてのOpenAIモデルで動作します。デフォルトモデルはGPT-3.5(Text-Davinci-003)です。別のモデルを使用するには、それに応じてコードを自由に変更してください。
このスクリプトは、タスク管理システムの一部として継続的に実行されるように設計されています。スクリプトを継続的に実行すると、APIの使用量が多い可能性があるため、責任を持って使用してください。さらに、スクリプトでは、OpenAI APIとSERPを正しくセットアップする必要があるため、スクリプトを実行する前にAPIが構成されていることを確認します。
シンプルさを維持するために、PRを提出する際に次のガイドラインを親切に遵守してください。
ベクトルストレージのコストは高価であるため、Babyagiを使用するときに無料のストレージオプションを提供することでした。したがって、このテンプレートの例は、Chromaを使用したBabyagiを使用したことを示しています。
babyagi-chromaは、Babyagiの削除されたバージョンであり、これはTwitterで共有される元のタスク駆動型自律エージェント(2023年3月28日)の単純化されたバージョンでもあります。