? Ce projet en est encore aux premiers stades de développement et nous y travaillons activement. Si vous avez des questions ou des suggestions, veuillez soumettre un problème ou un PR.
EvalGPT est un framework d'interprétation de code, exploitant la puissance de grands modèles de langage tels que GPT-4, CodeLlama et Claude 2. Cet outil puissant permet aux utilisateurs d'écrire des tâches, et EvalGPT les aidera à écrire le code, à l'exécuter et à livrer le code. résultats.
L'architecture d'EvalGPT s'inspire du système Borg de Google. Il comprend un nœud maître, appelé EvalGPT, composé de trois composants : planification, planificateur et mémoire.
Lorsque EvalGPT reçoit une demande, il commence à planifier la tâche à l'aide d'un grand modèle de langage (LLM), divisant les tâches plus importantes en tâches plus petites et gérables. Pour chaque sous-tâche, EvalGPT générera un nouveau nœud appelé EvalAgent.
Chaque EvalAgent est chargé de générer le code en fonction de la petite tâche assignée. Une fois le code généré, l'EvalAgent lance un runtime pour exécuter le code, exploitant même des outils externes si nécessaire. Les résultats sont ensuite collectés par l'EvalAgent.
Les nœuds EvalAgent peuvent accéder à la mémoire à partir du nœud maître EvalGPT, permettant une communication efficace et efficiente. Si un EvalAgent rencontre des erreurs au cours du processus, il signale l'erreur au nœud maître EvalGPT, qui replanifie ensuite la tâche pour éviter l'erreur.
Enfin, le nœud maître EvalGPT rassemble tous les résultats des nœuds EvalAgent et génère la réponse finale à la requête.
evalgpt
Vous pouvez installer evalgpt à l'aide de la commande suivante :
go install github.com/index-labs/evalgpt@latest
Vous pouvez vérifier l'installation en exécutant la commande suivante :
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
Ensuite, vous pouvez le trouver dans le répertoire bin.
Après avoir installé la ligne de commande evalgpt, avant de l'exécuter, vous devez configurer les options ci-dessous :
Configurer la clé API Openai
export OPENAI_API_KEY=sk_ ******
également, vous pouvez configurer la clé API openai par des arguments de commande, mais ce n'est pas recommandé :
evalgpt --openai-api-key sk_ ***** -q < query >
Configurer l'interpréteur Python
Par défaut, l'interpréteur de code utilise l'interpréteur Python du système. Cependant, vous pouvez créer un tout nouvel interpréteur Python à l'aide des outils d'environnement virtuel de Python et le configurer en conséquence.
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 >
Note:
Avant d'aborder des tâches complexes, assurez-vous d'installer les bibliothèques tierces Python nécessaires. Cela permet à votre interpréteur de code de gérer les tâches correspondantes, augmentant ainsi l'efficacité et garantissant un fonctionnement fluide.
Aide
> 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
Note:
N'oubliez pas de configurer la clé API OpenAI et l'interpréteur Python avant d'exécuter l'interpréteur de code. Les exemples suivants ont déjà été configurés avec des variables d'environnement pour la clé API OpenAI et l'interpréteur Python.
Requête simple
Obtenez l'adresse IP publique de la machine :
❯ evalgpt -q ' get the public IP of my computer '
Your public IP is: 104.28.240.133
Calculez le hachage sha256 d'une chaîne :
❯ evalgpt -q ' calculate the sha256 of the "hello,world" '
77df263f49123356d28a4a8715d25bf5b980beeeb503cab46ea61ac9f3320eda
Obtenir le titre d'un site 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
Pipeline
Vous pouvez utiliser le pipeline pour saisir des données contextuelles et interroger celles-ci :
> 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
Interagir avec les fichiers
convertir le fichier png en fichier webp :
> ls
a.png
> evalgpt -q ' convert this png file to webp ' --file ./a.png
created file: a.webp
> ls
a.png a.webp
Dessinez un graphique linéaire basé sur les données du 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
sortir:
Le nœud maître EvalGPT sert de centre de contrôle du framework. Il héberge trois composants essentiels : la planification, le planificateur et la mémoire.
Le composant de planification exploite de grands modèles de langage pour planifier les tâches en fonction de la demande de l'utilisateur. Il décompose les tâches complexes en sous-tâches plus petites et gérables, chacune étant gérée par un nœud EvalAgent individuel.
Le composant planificateur est responsable de la répartition des tâches. Il attribue chaque sous-tâche à un nœud EvalAgent, garantissant une utilisation efficace des ressources et une exécution parallèle des tâches pour des performances optimales.
Le composant mémoire sert d'espace mémoire partagé pour tous les nœuds EvalAgent. Il stocke les résultats des tâches exécutées et fournit une plate-forme d'échange de données entre différents nœuds. Ce modèle de mémoire partagée facilite les calculs complexes et facilite la gestion des erreurs en permettant la replanification des tâches en cas d'erreurs.
En cas d'erreur lors de l'exécution du code, le nœud maître replanifie la tâche pour éviter l'erreur, garantissant ainsi un fonctionnement robuste et fiable.
Enfin, le nœud maître EvalGPT collecte les résultats de tous les nœuds EvalAgent, les compile et génère la réponse finale à la demande de l'utilisateur. Ce contrôle et cette coordination centralisés font du nœud maître EvalGPT un élément crucial du framework EvalGPT.
Les nœuds EvalAgent sont les chevaux de bataille du framework EvalGPT. Générés par le nœud maître pour chaque sous-tâche, ils sont responsables de la génération, de l'exécution et de la collecte des résultats du code.
Le processus de génération de code dans un nœud EvalAgent est guidé par la tâche spécifique qui lui est assignée. À l'aide du grand modèle de langage, il produit le code nécessaire pour accomplir la tâche, en garantissant qu'il est adapté aux exigences et à la complexité de la tâche.
Une fois le code généré, le nœud EvalAgent lance un environnement d'exécution pour exécuter le code. Ce runtime est flexible, capable d'incorporer des outils externes selon les besoins et fournit une plate-forme robuste pour l'exécution de code.
Pendant l'exécution, le nœud EvalAgent collecte les résultats et peut accéder à la mémoire partagée depuis le nœud maître EvalGPT. Cela permet un échange de données efficace et facilite les calculs complexes nécessitant une manipulation importante des données ou un accès à des résultats précédemment calculés.
En cas d'erreurs lors de l'exécution du code, le nœud EvalAgent les signale au nœud maître EvalGPT. Le nœud maître replanifie ensuite la tâche pour éviter l'erreur, garantissant ainsi un fonctionnement robuste et fiable.
Essentiellement, les nœuds EvalAgent sont des unités autonomes au sein du framework EvalGPT, capables de générer et d'exécuter du code, de gérer les erreurs et de communiquer efficacement les résultats.
Le runtime d'EvalGPT est géré par les nœuds EvalAgent. Chaque nœud EvalAgent génère du code pour une tâche spécifique et lance un runtime pour exécuter le code. L'environnement d'exécution est flexible et peut intégrer des outils externes si nécessaire, offrant ainsi un contexte d'exécution hautement adaptable.
Le runtime comprend également des mécanismes de gestion des erreurs. Si un nœud EvalAgent rencontre des erreurs lors de l'exécution du code, il les signale au nœud maître EvalGPT. Le nœud maître replanifie ensuite la tâche pour éviter l'erreur, garantissant ainsi une exécution de code robuste et fiable.
Le runtime peut interagir avec la mémoire du nœud maître EvalGPT, permettant un échange de données efficace et facilitant les calculs complexes. Ce modèle de mémoire partagée permet l'exécution de tâches nécessitant une manipulation importante de données ou un accès à des résultats précédemment calculés.