? Este proyecto aún se encuentra en las primeras etapas de desarrollo y estamos trabajando activamente en él. Si tiene alguna pregunta o sugerencia, envíe un problema o PR.
EvalGPT es un marco de interpretación de código que aprovecha el poder de grandes modelos de lenguaje como GPT-4, CodeLlama y Claude 2. Esta poderosa herramienta permite a los usuarios escribir tareas, y EvalGPT ayudará a escribir el código, ejecutarlo y entregar el resultados.
La arquitectura de EvalGPT se inspira en el sistema Borg de Google. Incluye un nodo maestro, conocido como EvalGPT, compuesto por tres componentes: planificación, planificador y memoria.
Cuando EvalGPT recibe una solicitud, comienza a planificar la tarea utilizando un modelo de lenguaje grande (LLM), dividiendo las tareas más grandes en otras más pequeñas y manejables. Para cada subtarea, EvalGPT generará un nuevo nodo conocido como EvalAgent.
Cada EvalAgent es responsable de generar el código en función de la pequeña tarea asignada. Una vez que se genera el código, EvalAgent inicia un tiempo de ejecución para ejecutar el código, incluso aprovechando herramientas externas cuando sea necesario. Luego, EvalAgent recopila los resultados.
Los nodos EvalAgent pueden acceder a la memoria desde el nodo maestro EvalGPT, lo que permite una comunicación eficiente y efectiva. Si un EvalAgent encuentra algún error durante el proceso, informa el error al nodo maestro de EvalGPT, que luego vuelve a planificar la tarea para evitar el error.
Finalmente, el nodo maestro EvalGPT recopila todos los resultados de los nodos EvalAgent y genera la respuesta final a la solicitud.
evalgpt
Puede instalar evalgpt usando el siguiente comando:
go install github.com/index-labs/evalgpt@latest
Puede verificar la instalación ejecutando el siguiente 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
Luego podrá encontrarlo en el directorio bin.
Después de instalar la línea de comando evalgpt, antes de ejecutarla, debe configurar las siguientes opciones:
Configurar la clave API de Openai
export OPENAI_API_KEY=sk_ ******
Además, puede configurar la clave API de Openai mediante el comando args, pero no se recomienda:
evalgpt --openai-api-key sk_ ***** -q < query >
Configurar el intérprete de Python
De forma predeterminada, el intérprete de código utiliza el intérprete Python del sistema. Sin embargo, puede crear un intérprete de Python completamente nuevo utilizando las herramientas del entorno virtual de Python y configurarlo en consecuencia.
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
o
evalgpt --python-interpreter /path/evalgpt/venv/bin/python3 -q < query >
Nota:
Antes de abordar tareas complejas, asegúrese de instalar las bibliotecas de terceros de Python necesarias. Esto equipa a su intérprete de código para manejar las tareas correspondientes, aumentando la eficiencia y garantizando un funcionamiento sin problemas.
Ayuda
> 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
Nota:
Recuerde configurar la clave API de OpenAI y el intérprete de Python antes de ejecutar el intérprete de código. Los siguientes ejemplos ya se han configurado con variables de entorno para la clave API de OpenAI y el intérprete de Python.
Consulta sencilla
Obtenga la dirección IP pública de la máquina:
❯ evalgpt -q ' get the public IP of my computer '
Your public IP is: 104.28.240.133
Calcule el hash sha256 de una cadena:
❯ evalgpt -q ' calculate the sha256 of the "hello,world" '
77df263f49123356d28a4a8715d25bf5b980beeeb503cab46ea61ac9f3320eda
Obtener el título de un sitio web:
❯ 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
Tubería
Puede usar la canalización para ingresar datos de contexto y consultarlos:
> 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
Interactuar con archivos
convertir un archivo png a un archivo webp:
> ls
a.png
> evalgpt -q ' convert this png file to webp ' --file ./a.png
created file: a.webp
> ls
a.png a.webp
Dibuja un gráfico lineal basado en los datos del 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
producción:
El nodo maestro EvalGPT sirve como centro de control del marco. Alberga tres componentes críticos: planificación, programador y memoria.
El componente de planificación aprovecha modelos de lenguaje grandes para planificar tareas según la solicitud del usuario. Divide las tareas complejas en subtareas más pequeñas y manejables, cada una de las cuales es manejada por un nodo EvalAgent individual.
El componente del programador es responsable de la distribución de tareas. Asigna cada subtarea a un nodo EvalAgent, lo que garantiza la utilización eficiente de los recursos y la ejecución paralela de tareas para un rendimiento óptimo.
El componente de memoria sirve como espacio de memoria compartida para todos los nodos de EvalAgent. Almacena los resultados de las tareas ejecutadas y proporciona una plataforma para el intercambio de datos entre diferentes nodos. Este modelo de memoria compartida facilita cálculos complejos y ayuda en el manejo de errores al permitir la replanificación de tareas en caso de errores.
En caso de que se produzca un error durante la ejecución del código, el nodo maestro vuelve a planificar la tarea para evitar el error, garantizando así un funcionamiento sólido y fiable.
Finalmente, el nodo maestro EvalGPT recopila los resultados de todos los nodos EvalAgent, los compila y genera la respuesta final a la solicitud del usuario. Este control y coordinación centralizados hacen que el nodo maestro de EvalGPT sea una parte crucial del marco de EvalGPT.
Los nodos EvalAgent son los caballos de batalla del marco EvalGPT. Generados por el nodo maestro para cada subtarea, son responsables de la generación, ejecución y recopilación de resultados del código.
El proceso de generación de código en un nodo EvalAgent está guiado por la tarea específica que se le asigna. Utilizando el modelo de lenguaje grande, produce el código necesario para realizar la tarea, asegurando que se ajuste a los requisitos y la complejidad de la tarea.
Una vez que se genera el código, el nodo EvalAgent inicia un entorno de ejecución para ejecutar el código. Este tiempo de ejecución es flexible, capaz de incorporar herramientas externas según sea necesario y proporciona una plataforma sólida para la ejecución de código.
Durante la ejecución, el nodo EvalAgent recopila los resultados y puede acceder a la memoria compartida desde el nodo maestro EvalGPT. Esto permite un intercambio de datos eficiente y facilita cálculos complejos que requieren una importante manipulación de datos o acceso a resultados previamente calculados.
En caso de algún error durante la ejecución del código, el nodo EvalAgent lo informa al nodo maestro EvalGPT. Luego, el nodo maestro vuelve a planificar la tarea para evitar el error, garantizando una operación sólida y confiable.
En esencia, los nodos EvalAgent son unidades autónomas dentro del marco EvalGPT, capaces de generar y ejecutar código, manejar errores y comunicar resultados de manera eficiente.
El tiempo de ejecución de EvalGPT lo gestionan los nodos EvalAgent. Cada nodo de EvalAgent genera código para una tarea específica e inicia un tiempo de ejecución para ejecutar el código. El entorno de ejecución es flexible y puede incorporar herramientas externas según sea necesario, proporcionando un contexto de ejecución altamente adaptable.
El tiempo de ejecución también incluye mecanismos de manejo de errores. Si un nodo EvalAgent encuentra algún error durante la ejecución del código, lo informa al nodo maestro EvalGPT. Luego, el nodo maestro vuelve a planificar la tarea para evitar el error, garantizando una ejecución de código sólida y confiable.
El tiempo de ejecución puede interactuar con la memoria del nodo maestro EvalGPT, lo que permite un intercambio de datos eficiente y facilita cálculos complejos. Este modelo de memoria compartida permite la ejecución de tareas que requieren una manipulación significativa de datos o acceso a resultados previamente calculados.