BabyAGI is an AI-powered task management system that uses OpenAI and Pinecone APIs to create, prioritize, and execute tasks.
Este script Python é um exemplo de um sistema de gerenciamento de tarefas orquestrado por uma IA. O sistema utiliza as APIs da OpenAI e Pinecone para criar, priorizar e executar tarefas. A ideia principal por trás deste sistema é criar tarefas com base no resultado das tarefas anteriores e em direção a um objetivo predefinido.
O script usa então os recursos de processamento de linguagem natural (NLP) da OpenAI para criar novas tarefas com base no objetivo e o Pinecone para armazenar e recuperar resultados das tarefas para o contexto atual. Esta é uma versão simplificada do original Agente Autônomo Orientado a Tarefas (28 de março de 2023).
Este README abordará os seguintes tópicos:
Quando iniciado, o script executa um loop infinito que realiza as seguintes funçōes:
execution_agent()
é onde a API da OpenAI é utilizada. Ela recebe dois parâmetros: o objetivo e a tarefa. Em seguida, envia um prompt para a API da OpenAI, que retorna o resultado da tarefa. O prompt consiste em uma descrição da tarefa do sistema de IA, o objetivo e a própria tarefa. O resultado é então retornado como uma string.A função task_creation_agent()
é onde a API da OpenAI é usada para criar novas tarefas com base no objetivo e no resultado da tarefa anterior. A função recebe quatro parâmetros: o objetivo, o resultado da tarefa anterior, a descrição da tarefa e a lista de tarefas atual. Em seguida, envia um prompt para a API da OpenAI, que retorna uma lista de novas tarefas como strings. A função retorna as novas tarefas como uma lista de dicionários, onde cada dicionário contém o nome da tarefa.
A função prioritization_agent()
é onde a API da OpenAI é usada para repriorizar a lista de tarefas. A função recebe um parâmetro, o ID da tarefa atual. Envia um prompt para a API da OpenAI, que retorna a lista de tarefas repriorizada como uma lista numerada.
Por fim, o script utiliza o Pinecone para armazenar e recuperar resultados de tarefas para contexto. O script cria um índice Pinecone com base no nome da tabela especificado na variável YOUR_TABLE_NAME
. Pinecone é então usado para armazenar os resultados da tarefa no índice, juntamente com o nome da tarefa e quaisquer metadados adicionais.
Para usar o script, siga estas etapas:
git clone https://github.com/yoheinakajima/babyagi.git
e entre no repositório clonado.pip install -r requirements.txt
cp .env.example .env
. É aqui que você definirá as seguintes variáveis.OPENAI_API_KEY
, OPENAPI_API_MODEL
e PINECONE_API_KEY
.PINECONE_ENVIRONMENT
.TABLE_NAME
.OBJECTIVE
.INITIAL_TASK
.Todos os valores opcionais acima também podem ser especificados na linha de comando.
Este script funciona com todos os modelos da OpenAI, bem como com Llama através do Llama.cpp. O modelo padrão é gpt-3.5-turbo. Para usar um modelo diferente, especifique-o através da variável de ambiente OPENAI_API_MODEL
ou use a linha de comando.
Baixe a versão mais recente do Llama.cpp e siga as instruções para compilá-lo. Você também precisará dos pesos do modelo Llama.
Depois disso, vincule llama/main
ao llama.cpp/main e models
à pasta onde você possui os pesos do modelo Llama. Em seguida, execute o script com OPENAI_API_MODEL=llama
ou argumento -l
.
Este script foi projetado para ser executado continuamente como parte de um sistema de gerenciamento de tarefas. Executar este script continuamente pode resultar em alto uso da API, o que pode acarretar em grandes custos ao usuário, então, por favor, use-o com responsabilidade. Além disso, o script requer que as APIs da OpenAI e Pinecone sejam configuradas corretamente, portanto, certifique-se de ter configurado as APIs antes de executar o script.
Obviamente, o BabyAGI ainda está em sua infância e, portanto, ainda estamos determinando sua direção e as etapas para chegar lá. Atualmente, um objetivo-chave de design para o BabyAGI é ser simples de forma que seja fácil de entender e desenvolver a partir dele. Para manter essa simplicidade, pedimos gentilmente que você siga as seguintes diretrizes ao enviar PRs:
Um recado de @yoheinakajima (5 de abril de 2023):
Eu sei que há um número crescente de PRs, agradeço sua paciência - já que sou novo no GitHub/OpenSource e não planejei adequadamente minha disponibilidade de tempo nesta semana. Re:direction Estive dividido entre manter a simplicidade e expandir - atualmente, estou inclinado a manter um Baby AGI central simples e usar isso como plataforma para apoiar e promover diferentes abordagens para expandir (por exemplo, BabyAGIxLangchain como uma direção). Acredito que existem várias abordagens que valem a pena ser exploradas, e vejo valor em ter um local central para comparar e discutir. Em breve, mais atualizações.
Sou novo no GitHub e no código aberto, então, por favor, seja paciente enquanto aprendo a gerenciar este projeto adequadamente. Eu gerencio uma empresa de capital de risco durante o dia, então geralmente estarei verificando PRs e Issues à noite depois de colocar meus filhos para dormir - o que pode não ser todas as noites. Estou aberto à ideias de trazer apoio, atualizarei esta seção em breve (expectativas, visões, etc). Estou conversando com muitas pessoas e aprendendo - aguarde atualizações!
BabyAGI é uma versão simplificada do original Agente Autônomo Orientado a Tarefas (28 de março de 2023) compartilhado no Twitter. Esta versão está reduzida a 140 linhas: 13 comentários, 22 espaços em branco e 105 de código. O nome do repositório surgiu na reação ao agente autônomo original - o autor não pretende insinuar que isso seja AGI.
Feito com amor por @yoheinakajima, que por acaso é um VC (adoraria ver o que você está construindo!)