? Этот проект пока находится на ранней стадии разработки, и мы активно над ним работаем. Если у вас есть какие-либо вопросы или предложения, пожалуйста, отправьте вопрос или PR.
EvalGPT — это среда интерпретатора кода, использующая возможности больших языковых моделей, таких как GPT-4, CodeLlama и Claude 2. Этот мощный инструмент позволяет пользователям писать задачи, а EvalGPT поможет в написании кода, его выполнении и доставке результаты.
Архитектура EvalGPT черпает вдохновение из системы Google Borg. Он включает в себя главный узел, известный как EvalGPT, состоящий из трех компонентов: планирования, планировщика и памяти.
Когда EvalGPT получает запрос, он начинает планировать задачу с использованием модели большого языка (LLM), разделяя более крупные задачи на более мелкие и управляемые. Для каждой подзадачи EvalGPT создаст новый узел, известный как EvalAgent.
Каждый EvalAgent отвечает за генерацию кода на основе назначенной небольшой задачи. После генерации кода EvalAgent инициирует среду выполнения для выполнения кода, даже при необходимости используя внешние инструменты. Результаты затем собираются EvalAgent.
Узлы EvalAgent могут получать доступ к памяти из главного узла EvalGPT, что обеспечивает эффективную и действенную связь. Если EvalAgent обнаруживает какие-либо ошибки во время процесса, он сообщает об ошибке главному узлу EvalGPT, который затем перепланирует задачу, чтобы избежать ошибки.
Наконец, главный узел EvalGPT сопоставляет все результаты узлов EvalAgent и генерирует окончательный ответ на запрос.
evalgpt
Вы можете установить evalgpt с помощью следующей команды:
go install github.com/index-labs/evalgpt@latest
Вы можете проверить установку, выполнив следующую команду:
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
Затем вы можете найти его в каталоге bin.
После установки командной строки evalgpt перед ее выполнением необходимо настроить следующие параметры:
Настройка ключа API Openai
export OPENAI_API_KEY=sk_ ******
Кроме того, вы можете настроить ключ API openai с помощью команды args, но это не рекомендуется:
evalgpt --openai-api-key sk_ ***** -q < query >
Настройка интерпретатора Python
По умолчанию интерпретатор кода использует системный интерпретатор Python. Однако вы можете создать совершенно новый интерпретатор Python, используя инструменты виртуальной среды Python, и настроить его соответствующим образом.
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
или
evalgpt --python-interpreter /path/evalgpt/venv/bin/python3 -q < query >
Примечание:
Прежде чем решать сложные задачи, обязательно установите необходимые сторонние библиотеки Python. Это позволяет вашему интерпретатору кода выполнять соответствующие задачи, повышая эффективность и обеспечивая бесперебойную работу.
Помощь
> 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
Примечание:
Не забудьте настроить ключ API OpenAI и интерпретатор Python перед выполнением интерпретатора кода. В следующих примерах уже настроены переменные среды для ключа API OpenAI и интерпретатора Python.
Простой запрос
Получите общедоступный IP-адрес машины:
❯ evalgpt -q ' get the public IP of my computer '
Your public IP is: 104.28.240.133
Вычислите хэш sha256 строки:
❯ evalgpt -q ' calculate the sha256 of the "hello,world" '
77df263f49123356d28a4a8715d25bf5b980beeeb503cab46ea61ac9f3320eda
Получить название сайта:
❯ 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
Трубопровод
Вы можете использовать пользовательский конвейер для ввода контекстных данных и выполнения запросов:
> 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
Взаимодействие с файлами
конвертировать png-файл в webp-файл:
> ls
a.png
> evalgpt -q ' convert this png file to webp ' --file ./a.png
created file: a.webp
> ls
a.png a.webp
Нарисуйте линейный график на основе данных из 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
выход:
Главный узел EvalGPT служит центром управления платформой. Он содержит три важнейших компонента: планирование, планировщик и память.
Компонент планирования использует большие языковые модели для планирования задач на основе запроса пользователя. Он разбивает сложные задачи на более мелкие, управляемые подзадачи, каждая из которых обрабатывается отдельным узлом EvalAgent.
Компонент планировщика отвечает за распределение задач. Он назначает каждую подзадачу узлу EvalAgent, обеспечивая эффективное использование ресурсов и параллельное выполнение задач для оптимальной производительности.
Компонент памяти служит общим пространством памяти для всех узлов EvalAgent. Он хранит результаты выполненных задач и предоставляет платформу для обмена данными между различными узлами. Эта модель общей памяти облегчает сложные вычисления и помогает в обработке ошибок, позволяя перепланировать задачи в случае ошибок.
В случае ошибки во время выполнения кода главный узел перепланирует задачу, чтобы избежать ошибки, тем самым обеспечивая устойчивую и надежную работу.
Наконец, главный узел EvalGPT собирает результаты со всех узлов EvalAgent, компилирует их и генерирует окончательный ответ на запрос пользователя. Такой централизованный контроль и координация делают главный узел EvalGPT важной частью инфраструктуры EvalGPT.
Узлы EvalAgent — это рабочие лошадки платформы EvalGPT. Создаваемые главным узлом для каждой подзадачи, они отвечают за генерацию, выполнение и сбор результатов кода.
Процесс генерации кода в узле EvalAgent определяется конкретной назначенной ему задачей. Используя большую языковую модель, он создает необходимый код для выполнения задачи, гарантируя, что он соответствует требованиям и сложности задачи.
После генерации кода узел EvalAgent инициирует среду выполнения для выполнения кода. Эта среда выполнения является гибкой, способна при необходимости включать внешние инструменты и обеспечивает надежную платформу для выполнения кода.
Во время выполнения узел EvalAgent собирает результаты и может получить доступ к общей памяти с главного узла EvalGPT. Это обеспечивает эффективный обмен данными и облегчает сложные вычисления, требующие значительных манипуляций с данными или доступа к ранее вычисленным результатам.
В случае каких-либо ошибок во время выполнения кода узел EvalAgent сообщает об этом главному узлу EvalGPT. Затем главный узел перепланирует задачу, чтобы избежать ошибки и обеспечить устойчивую и надежную работу.
По сути, узлы EvalAgent — это автономные единицы в рамках EvalGPT, способные генерировать и выполнять код, обрабатывать ошибки и эффективно передавать результаты.
Средой выполнения EvalGPT управляют узлы EvalAgent. Каждый узел EvalAgent генерирует код для конкретной задачи и запускает среду выполнения для выполнения этого кода. Среда выполнения является гибкой и при необходимости может включать внешние инструменты, обеспечивая легко адаптируемый контекст выполнения.
Среда выполнения также включает механизмы обработки ошибок. Если узел EvalAgent обнаруживает какие-либо ошибки во время выполнения кода, он сообщает об этом главному узлу EvalGPT. Затем главный узел перепланирует задачу, чтобы избежать ошибки, обеспечивая устойчивое и надежное выполнение кода.
Среда выполнения может взаимодействовать с памятью главного узла EvalGPT, обеспечивая эффективный обмен данными и упрощая сложные вычисления. Эта модель общей памяти позволяет выполнять задачи, требующие значительных манипуляций с данными или доступа к ранее вычисленным результатам.