GPT-Migrate — ИИ-инструмент для миграции с одного языка или фреймворка на другой
GPT-Migrate — это нейросетевой инструмент, который позволяет быстрее переписать весь код с одного языка программирования на другой.
4К открытий7К показов
Миграция – это дорогая, трудоемкая и нетривиальная проблема. GPT-Migrate — это нейросетевой инструмент, который позволяет быстрее переписать весь код с одного языка программирования на другой. У GPT-Migrate уже 6000 звёзд на GitHub.
GPT-Migrate не гарантирует полностью верный код после автоматического перевода на другой язык, однако он позволяет ускорить процесс миграции.
Как работает GPT-Migrate
Для переноса кода из --sourcelang
в --targetlang
:
- GPT-Migrate создает среду Docker для –targetlang, которая автоматически оценивается GPT-Migrate.
- Он рекурсивно оценивает существующий код для определения зависимостей –sourcelang и выбирает соответствующие зависимости –targetlang.
- GPT-Migrate перестраивает новый –targetlang код из существующего кода, начиная с файла –sourceentry. Этот этап может начинаться с помощью опции –step migrate.
- Инструмент запускает среду Docker с новой кодовой базой, которая отображается на –targetport, и по мере необходимости итеративно выполняет отладку.
- ИИ разрабатывает модульные тесты с использованием фреймворка unittest в Python, и при необходимости опционально тестирует их на вашем существующем приложении, если оно запущено и отображается на –sourceport. Этот этап может начинаться с помощью опции –step test.
- Тестирует новый код на –targetport с использованием этих модульных тестов.
- Итеративно выполняет отладку кода для вас, используя контекст из журналов, сообщений об ошибках, соответствующих файлов и структуры каталогов. Если в какой-то момент миграция приостанавливается или пользователь завершает цикл отладки, ИИ выдаст указания к следующему этапу миграции.
Новая кодовая база будет находиться в --targetdir
.
Как использовать GPT-Migrate
Установите Docker и запустите его. Также вам понадобится ключ API для ChatGPT. Лучше всего использовать GPT-4, предпочтительно GPT-4-32k.
Установите ваш ключ API OpenAI и установите требования для python:
export OPENAIAPIKEY=<ваш ключ>
pip install -r requirements.txt
Запустите основной скрипт с выбранным языком, на который вы хотите выполнить миграцию:
python main.py --targetlang nodejs
Если вы хотите, чтобы GPT-Migrate проверял созданные им модульные тесты, убедитесь, что ваше существующее приложение работает и используйте флаг --sourceport
.
Настройка GPT-Migrate
Вы можете настроить поведение GPT-Migrate, передав следующие параметры в скрипт main.py:
- –model: Используемая модель GPT. По умолчанию используется “gpt-4-32k”.
- –temperature: Настройка температуры для модели искусственного интеллекта. По умолчанию значение равно 0.
- –sourcedir: Директория исходного кода, который будет мигрирован. По умолчанию “../benchmarks/flask-nodejs/source”.
- –sourcelang: Язык или фреймворк исходного кода для миграции. Значение по умолчанию отсутствует.
- –sourceentry: Имя файла точки входа для директории исходного кода. Например, это может быть файл app.py или main.py для Python. По умолчанию используется “app.py”.
- –targetdir: Директория, в которой будет находиться мигрированный код. По умолчанию “../benchmarks/flask-nodejs/target”.
- –targetlang: Язык или фреймворк, на который будет проводиться миграция. По умолчанию используется “nodejs”.
- –operating_system: Операционная система для файла Dockerfile. Обычные варианты – ‘linux’ или ‘windows’. По умолчанию “linux”.
- –testfiles: Список файлов, в которых содержатся функции, которые должны быть протестированы. Например, это может быть файл app.py или main.py для приложения на Python, где находятся ваши REST-конечные точки. Включите полный путь к файлу. По умолчанию используется “app.py”.
- –sourceport: (Необязательно) Порт для тестирования файла модульных тестов по отношению к исходному приложению. Значение по умолчанию отсутствует. Если значение не указано, GPT-Migrate не будет пытаться тестировать модульные тесты на основе исходного приложения.
- –targetport: Порт для тестирования файла модульных тестов по отношению к мигрированному приложению. По умолчанию используется 8080.
- –guidelines: Стилистические или небольшие функциональные рекомендации, которые вы хотели бы соблюдать при миграции. Например, “используйте табы, а не пробелы”. По умолчанию используется пустая строка.
- –step: Шаг для выполнения. Варианты: ‘setup’, ‘migrate’, ‘test’, ‘all’. По умолчанию используется ‘all’.
Например, для миграции кодовой базы на Python в Node.js вы можете выполнить следующую команду:
Этот промпт найдёт код на Python в папке .-python-app
, выполнит миграцию на Node.js и запишет полученный код в папку .-nodejs-app
.
Заключение
Миграция приложения с одного языка на другой — непростая задачка. Существует множество мемов о том, как нелюбимый PM или техлид предлагает переписать весь код проекта на модный язык программирования. Теперь, мы надеемся, эта задача станет менее абсурдной и более безболезненной.
Если вам уже удалось протестировать GPT-Migrate, напишите в комментариях, увенчались ли ваши попытки успехом. Нам будет интересно узнать, помог ли инструмент в решении ваших задач. ?
4К открытий7К показов