Inspiré par Babyagi de Yoheina Kajima
Le référentiel babyagi-chroma propose une solution de stockage vectorielle gratuite, le chroma, qui est exécuté localement. Cela est particulièrement avantageux pour les utilisateurs qui souhaitent éviter les coûts potentiels associés aux autres options de stockage vectorielles telles que PineCone.
Ce script Python présente un exemple de système de gestion des tâches alimenté en AI qui exploite la base de données vectorielle de Langchain, OpenAI et Chroma pour créer, hiérarchiser et exécuter des tâches. Le système crée des tâches basées sur les résultats des tâches précédentes et un objectif prédéfini. Le script utilise ensuite la boîte à outils et les capacités de recherche sur le traitement du langage naturel de Langchain (NLP) pour créer de nouvelles tâches basées sur l'objectif, tandis que Chroma stocke et récupére les résultats des tâches pour le contexte. Il s'agit d'une version simplifiée de l'agent autonome axé sur les tâches d'origine (28 mars 2023).
Cette lecture couvre les sujets suivants:
Le script effectue les étapes suivantes dans une boucle infinie:
La chaîne d'exécution traite une tâche donnée en considérant l'objectif et le contexte. Il utilise le llmchain de Langchain pour exécuter la tâche. La fonction execute_task prend un chroma vectorstore, une chaîne d'exécution, un objectif et des informations de tâche en entrée. Il récupère une liste des tâches K Top K à partir du VectorStore en fonction de l'objectif, puis exécute la tâche à l'aide de la chaîne d'exécution, stockant le résultat dans le VectorStore. La fonction renvoie le résultat.
La chaîne d'exécution n'est pas explicitement définie dans ce bloc de code. Cependant, il est passé comme un paramètre à execute_task et peut être défini séparément dans le code. Il s'agit d'une instance de la classe LLMChain de Langchain, qui accepte une invite et génère une réponse basée sur des variables d'entrée fournies.
La classe TaskCreationChain utilise llmchain pour créer de nouvelles tâches. La fonction from_llm prend des paramètres à l'aide de promptemplate de Langchain, renvoyant une liste de nouvelles tâches sous forme de chaînes. Il crée ensuite une instance de TaskCreationChain avec des variables d'entrée personnalisées et un comportement spécifié.
La classe TaskPrioritisationChain utilise LLMChain pour hiérarchiser les tâches. La fonction from_llm accepte les paramètres via PromptTemplate de Langchain, renvoyant une liste de nouvelles tâches sous forme de chaînes. Il crée ensuite une instance de TaskPrioritisationChain avec des variables d'entrée personnalisées et un comportement spécifié.
Le script exploite le chrome pour stocker, la recherche de similitude et récupérer les résultats des tâches pour le contexte. Il crée un index de chroma basé sur le nom de la table spécifié dans la variable TABLE_NAME . Chroma stocke par la suite les résultats de la tâche dans l'index, ainsi que le nom de la tâche et les métadonnées supplémentaires.
Pour utiliser le script, effectuez les étapes suivantes:
git clone https://github.com/alexdphan/babyagi-chroma.git et cd dans le répertoire cloné.pip install -r requirements.txt.env.example sur .env : cp .env.example .env . Définissez les variables suivantes dans ce fichier.OPENAI_API_KEY et SERPAPI_API_KEY .TABLE_NAME .OBJECTIVE .INITIAL_TASK .python babyagi-chroma.py .Toutes les valeurs facultatives ci-dessus peuvent également être spécifiées sur la ligne de commande.
Ce script fonctionne avec tous les modèles OpenAI. Le modèle par défaut est GPT-3.5 (Text-Davinci-003) . Pour utiliser un modèle différent, n'hésitez pas à modifier le code en conséquence.
Ce script est conçu pour être exécuté en continu dans le cadre d'un système de gestion des tâches. L'exécution du script en continu peut entraîner une utilisation élevée de l'API, veuillez donc l'utiliser de manière responsable. De plus, le script nécessite que l'API OpenAI et le SERP soient correctement configurés, assurez-vous donc que les API soient configurées avant d'exécuter le script.
Pour maintenir la simplicité, adhérez aux directives suivantes lors de la soumission de PRS:
Les coûts du stockage vectoriel étant coûteux, l'objectif était de fournir une option de stockage gratuite lors de l'utilisation de babyagi. Par conséquent, cet exemple de modèle démontre l'utilisation de babyagi avec chroma.
Babyagi-Chroma est une version épurée de Babyagi, qui est également une version simplifiée de l'agent autonome axé sur les tâches original (28 mars 2023) partagé sur Twitter.