Inspirado en el babyagi de Yoheina Kajima
El repositorio de babyagi-chroma ofrece una solución de almacenamiento vectorial libre, Chroma, que se ejecuta localmente. Esto es particularmente ventajoso para los usuarios que desean evitar los costos potenciales asociados con otras opciones de almacenamiento vectorial, como Pinecone.
Este script de Python muestra un ejemplo de un sistema de gestión de tareas con IA que aprovecha la base de datos Vector de Langchain, OpenAI y Chroma para crear, priorizar y ejecutar tareas. El sistema crea tareas basadas en los resultados de tareas anteriores y un objetivo predefinido. Luego, el script utiliza el kit de herramientas de procesamiento de lenguaje natural de OpenAI (NLP) de Langchain y las capacidades de búsqueda para crear nuevas tareas basadas en el objetivo, mientras que Chroma almacena y recupera los resultados de las tareas para el contexto. Esta es una versión simplificada del agente autónomo impulsado por la tarea original (28 de marzo de 2023).
Este readMe cubre los siguientes temas:
El script lleva a cabo los siguientes pasos en un bucle infinito:
La cadena de ejecución procesa una tarea dada considerando el objetivo y el contexto. Utiliza LLMChain de Langchain para ejecutar la tarea. La función execute_task toma una tienda de vectores de Chroma, una cadena de ejecución, un objetivo e información de tareas como entrada. Recupera una lista de las principales tareas K de Vectorstore en función del objetivo, y luego ejecuta la tarea utilizando la cadena de ejecución, almacenando el resultado en VectorStore. La función devuelve el resultado.
La cadena de ejecución no se define explícitamente en este bloque de código. Sin embargo, se pasa como un parámetro para execute_task y se puede definir por separado en el código. Es una instancia de la clase LLMChain de Langchain, que acepta un aviso y genera una respuesta basada en variables de entrada proporcionadas.
La clase TaskCreationChain emplea a LLMChain para crear nuevas tareas. La función from_llm toma parámetros utilizando TIrticTeMplate de Langchain, devolviendo una lista de nuevas tareas como cadenas. Luego crea una instancia de TaskCreationChain junto con variables de entrada personalizadas y comportamiento especificado.
La clase TaskprioritizationChain usa LLMChain para priorizar las tareas. La función from_llm acepta parámetros a través de la placa apurida de langchain, devolviendo una lista de nuevas tareas como cadenas. Luego crea una instancia de TaskprioritizationChain junto con variables de entrada personalizadas y comportamiento especificado.
El script aprovecha el croma para almacenar, buscar similitud y recuperar los resultados de la tarea para el contexto. Crea un índice de croma basado en el nombre de la tabla especificado en la variable TABLE_NAME . Posteriormente, Chroma almacena la tarea en el índice, junto con el nombre de la tarea y cualquier metadato adicional.
Para utilizar el script, realice los siguientes pasos:
git clone https://github.com/alexdphan/babyagi-chroma.git y cd en el directorio clonado.pip install -r requirements.txt.env.example a .env : cp .env.example .env . Establezca las siguientes variables en este archivo.OPENAI_API_KEY y SERPAPI_API_KEY .TABLE_NAME .OBJECTIVE .INITIAL_TASK .python babyagi-chroma.py .Todos los valores opcionales anteriores también se pueden especificar en la línea de comando.
Este script funciona con todos los modelos OpenAI. El modelo predeterminado es GPT-3.5 (Text-Davinci-003) . Para usar un modelo diferente, no dude en modificar el código en consecuencia.
Este script está diseñado para ejecutarse continuamente como parte de un sistema de gestión de tareas. Ejecutar el script continuamente puede dar como resultado un alto uso de API, así que úselo de manera responsable. Además, el script requiere que la API de OpenAI y SERP se configuren correctamente, por lo tanto, asegúrese de que las API estén configuradas antes de ejecutar el script.
Para mantener la simplicidad, adhiera amablemente a las siguientes pautas al enviar PR:
Con los costos de almacenamiento vectorial, el objetivo era proporcionar una opción de almacenamiento gratuita al usar Babyagi. Por lo tanto, este ejemplo de plantilla demuestra usar babyagi con croma.
Babyagi-Chroma es una versión reducida de Babyagi, que también es una versión simplificada del agente autónomo basado en tareas original (28 de marzo de 2023) compartida en Twitter.