? Este projeto ainda está nos estágios iniciais de desenvolvimento e estamos trabalhando ativamente nele. Se você tiver alguma dúvida ou sugestão, envie um problema ou PR.
EvalGPT é uma estrutura de interpretação de código que aproveita o poder de grandes modelos de linguagem, como GPT-4, CodeLlama e Claude 2. Esta ferramenta poderosa permite aos usuários escrever tarefas, e EvalGPT ajudará a escrever o código, executá-lo e entregar o resultados.
A arquitetura do EvalGPT é inspirada no sistema Borg do Google. Inclui um nó mestre, conhecido como EvalGPT, composto por três componentes: planejamento, agendador e memória.
Quando o EvalGPT recebe uma solicitação, ele começa a planejar a tarefa usando um Large Language Model (LLM), dividindo tarefas maiores em tarefas menores e gerenciáveis. Para cada subtarefa, o EvalGPT gerará um novo nó conhecido como EvalAgent.
Cada EvalAgent é responsável por gerar o código com base na pequena tarefa atribuída. Uma vez gerado o código, o EvalAgent inicia um tempo de execução para executar o código, aproveitando até mesmo ferramentas externas quando necessário. Os resultados são então coletados pelo EvalAgent.
Os nós EvalAgent podem acessar a memória do nó mestre EvalGPT, permitindo uma comunicação eficiente e eficaz. Se um EvalAgent encontrar algum erro durante o processo, ele reportará o erro ao nó mestre EvalGPT, que então replanejará a tarefa para evitar o erro.
Finalmente, o nó mestre EvalGPT agrupa todos os resultados dos nós EvalAgent e gera a resposta final para a solicitação.
evalgpt
Você pode instalar o evalgpt usando o seguinte comando:
go install github.com/index-labs/evalgpt@latest
Você pode verificar a instalação executando o seguinte comando:
evalgpt -h
git clone https://github.com/index-labs/evalgpt.git
cd evalgpt
go mod tidy && go mod vendor
mkdir -p ./bin
go build -o ./bin/evalgpt ./ * .go
./bin/evalgpt -h
Então você pode encontrá-lo no diretório bin.
Após instalar a linha de comando evalgpt, antes de executá-lo, você deve configurar as opções abaixo:
Configurar chave de API Openai
export OPENAI_API_KEY=sk_ ******
Além disso, você pode configurar a chave de API openai pelo comando args, mas não é recomendado:
evalgpt --openai-api-key sk_ ***** -q < query >
Configurar o interpretador Python
Por padrão, o interpretador de código usa o interpretador Python do sistema. No entanto, você pode criar um interpretador Python completamente novo usando as ferramentas de ambiente virtual do Python e configurá-lo adequadamente.
python3 -m venv /path/evalgpt/venv
# install third python libraries
/path/evalgpt/venv/bin/pip3 install -r requirements.txt
# config python interpreter
export PYTHON_INTERPRETER=/path/evalgpt/venv/bin/python3
ou
evalgpt --python-interpreter /path/evalgpt/venv/bin/python3 -q < query >
Observação:
Antes de iniciar tarefas complexas, certifique-se de instalar as bibliotecas Python de terceiros necessárias. Isso equipa seu intérprete de código para lidar com as tarefas correspondentes, aumentando a eficiência e garantindo uma operação tranquila.
Ajuda
> evalgpt -h
NAME:
evalgpt help - A new cli application
USAGE:
evalgpt help [global options] command [command options] [arguments...]
DESCRIPTION:
description
COMMANDS:
help, h Shows a list of commands or help for one command
GLOBAL OPTIONS:
--openai-api-key value Openai Api Key, if you use open ai model gpt3 or gpt4, you must set this flag [ $OPENAI_API_KEY ]
--model value LLM name (default: " gpt-4-0613 " ) [ $MODEL ]
--python-interpreter value python interpreter path (default: " /usr/bin/python3 " ) [ $PYTHON_INTERPRETER ]
--verbose, -v print verbose log (default: false) [ $VERBOSE ]
--query value, -q value what you want to ask
--file value [ --file value ] the path to the file to be parsed and processed, eg. --file /tmp/a.txt --file /tmp/b.txt
--help, -h show help
Observação:
Lembre-se de configurar a chave da API OpenAI e o interpretador Python antes de executar o interpretador de código. Os exemplos a seguir já foram configurados com variáveis de ambiente para a chave da API OpenAI e o interpretador Python.
Consulta Simples
Obtenha o endereço IP público da máquina:
❯ evalgpt -q ' get the public IP of my computer '
Your public IP is: 104.28.240.133
Calcule o hash sha256 de uma string:
❯ evalgpt -q ' calculate the sha256 of the "hello,world" '
77df263f49123356d28a4a8715d25bf5b980beeeb503cab46ea61ac9f3320eda
Obtenha o título de um site:
❯ evalgpt -q " get the title of a website: https://arxiv.org/abs/2302.04761 " -v
[2302.04761] Toolformer: Language Models Can Teach Themselves to Use Tools
Gasoduto
Você pode usar o pipeline para inserir dados de contexto e consultá-los:
> cat a.csv
date,dau
2023-08-20,1000
2023-08-21,900
2023-08-22,1100
2023-08-23,2000
2023-08-24,1800
> cat a.csv | evalgpt -q ' calculate the average dau '
Average DAU: 1360.0
Interaja com arquivos
converter arquivo png em arquivo webp:
> ls
a.png
> evalgpt -q ' convert this png file to webp ' --file ./a.png
created file: a.webp
> ls
a.png a.webp
Desenhe um gráfico de linhas com base nos dados do CSV
> cat a.csv
date,dau
2023-08-20,1000
2023-08-21,900
2023-08-22,1100
2023-08-23,2000
2023-08-24,1800
> evalgpt -q ' draw a line graph based on the data from the CSV ' --file ./a.csv
saída:
O nó mestre EvalGPT serve como centro de controle da estrutura. Ele abriga três componentes críticos: planejamento, agendador e memória.
O componente de planejamento aproveita grandes modelos de linguagem para planejar tarefas com base na solicitação do usuário. Ele divide tarefas complexas em subtarefas menores e gerenciáveis, cada uma delas gerenciada por um nó EvalAgent individual.
O componente agendador é responsável pela distribuição de tarefas. Ele atribui cada subtarefa a um nó EvalAgent, garantindo a utilização eficiente de recursos e a execução paralela de tarefas para desempenho ideal.
O componente de memória serve como espaço de memória compartilhada para todos os nós EvalAgent. Ele armazena os resultados das tarefas executadas e fornece uma plataforma para troca de dados entre diferentes nós. Este modelo de memória compartilhada facilita cálculos complexos e auxilia no tratamento de erros, permitindo o replanejamento de tarefas em caso de erros.
Caso ocorra um erro durante a execução do código, o nó mestre replaneja a tarefa para evitar o erro, garantindo assim uma operação robusta e confiável.
Finalmente, o nó mestre EvalGPT coleta os resultados de todos os nós EvalAgent, compila-os e gera a resposta final para a solicitação do usuário. Este controle e coordenação centralizados tornam o nó mestre EvalGPT uma parte crucial da estrutura EvalGPT.
Os nós EvalAgent são os cavalos de batalha da estrutura EvalGPT. Gerados pelo nó mestre para cada subtarefa, eles são responsáveis pela geração de código, execução e coleta de resultados.
O processo de geração de código em um nó EvalAgent é guiado pela tarefa específica atribuída a ele. Utilizando o modelo de linguagem grande, produz o código necessário para realizar a tarefa, garantindo que seja adequado aos requisitos e complexidade da tarefa.
Depois que o código é gerado, o nó EvalAgent inicia um ambiente de tempo de execução para executar o código. Este tempo de execução é flexível, capaz de incorporar ferramentas externas conforme necessário e fornece uma plataforma robusta para execução de código.
Durante a execução, o nó EvalAgent coleta os resultados e pode acessar a memória compartilhada do nó mestre EvalGPT. Isso permite a troca eficiente de dados e facilita cálculos complexos que exigem manipulação significativa de dados ou acesso a resultados previamente computados.
Em caso de erros durante a execução do código, o nó EvalAgent reporta-os ao nó mestre EvalGPT. O nó mestre então replaneja a tarefa para evitar o erro, garantindo uma operação robusta e confiável.
Em essência, os nós EvalAgent são unidades autônomas dentro da estrutura EvalGPT, capazes de gerar e executar código, tratar erros e comunicar resultados de forma eficiente.
O tempo de execução do EvalGPT é gerenciado pelos nós EvalAgent. Cada nó EvalAgent gera código para uma tarefa específica e inicia um tempo de execução para executar o código. O ambiente de tempo de execução é flexível e pode incorporar ferramentas externas conforme necessário, proporcionando um contexto de execução altamente adaptável.
O tempo de execução também inclui mecanismos de tratamento de erros. Se um nó EvalAgent encontrar erros durante a execução do código, ele os reportará ao nó mestre EvalGPT. O nó mestre então replaneja a tarefa para evitar o erro, garantindo uma execução robusta e confiável do código.
O tempo de execução pode interagir com a memória do nó mestre EvalGPT, permitindo a troca eficiente de dados e facilitando cálculos complexos. Este modelo de memória compartilhada permite a execução de tarefas que requerem manipulação significativa de dados ou acesso a resultados previamente computados.