GPT-Migrate — ИИ-инструмент для миграции с одного языка или фреймворка на другой

GPT-Migrate — это нейросетевой инструмент, который позволяет быстрее переписать весь код с одного языка программирования на другой.

4К открытий7К показов

Миграция – это дорогая, трудоемкая и нетривиальная проблема. GPT-Migrate — это нейросетевой инструмент, который позволяет быстрее переписать весь код с одного языка программирования на другой. У GPT-Migrate уже 6000 звёзд на GitHub.

GPT-Migrate не гарантирует полностью верный код после автоматического перевода на другой язык, однако он позволяет ускорить процесс миграции.

Как работает GPT-Migrate

Для переноса кода из --sourcelang в --targetlang:

  1. GPT-Migrate создает среду Docker для –targetlang, которая автоматически оценивается GPT-Migrate.
  2. Он рекурсивно оценивает существующий код для определения зависимостей –sourcelang и выбирает соответствующие зависимости –targetlang.
  3. GPT-Migrate перестраивает новый –targetlang код из существующего кода, начиная с файла –sourceentry. Этот этап может начинаться с помощью опции –step migrate.
  4. Инструмент запускает среду Docker с новой кодовой базой, которая отображается на –targetport, и по мере необходимости итеративно выполняет отладку.
  5. ИИ разрабатывает модульные тесты с использованием фреймворка unittest в Python, и при необходимости опционально тестирует их на вашем существующем приложении, если оно запущено и отображается на –sourceport. Этот этап может начинаться с помощью опции –step test.
  6. Тестирует новый код на –targetport с использованием этих модульных тестов.
  7. Итеративно выполняет отладку кода для вас, используя контекст из журналов, сообщений об ошибках, соответствующих файлов и структуры каталогов. Если в какой-то момент миграция приостанавливается или пользователь завершает цикл отладки, ИИ выдаст указания к следующему этапу миграции.

Новая кодовая база будет находиться в --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:

  1. –model: Используемая модель GPT. По умолчанию используется “gpt-4-32k”.
  2. –temperature: Настройка температуры для модели искусственного интеллекта. По умолчанию значение равно 0.
  3. –sourcedir: Директория исходного кода, который будет мигрирован. По умолчанию “../benchmarks/flask-nodejs/source”.
  4. –sourcelang: Язык или фреймворк исходного кода для миграции. Значение по умолчанию отсутствует.
  5. –sourceentry: Имя файла точки входа для директории исходного кода. Например, это может быть файл app.py или main.py для Python. По умолчанию используется “app.py”.
  6. –targetdir: Директория, в которой будет находиться мигрированный код. По умолчанию “../benchmarks/flask-nodejs/target”.
  7. –targetlang: Язык или фреймворк, на который будет проводиться миграция. По умолчанию используется “nodejs”.
  8. –operating_system: Операционная система для файла Dockerfile. Обычные варианты – ‘linux’ или ‘windows’. По умолчанию “linux”.
  9. –testfiles: Список файлов, в которых содержатся функции, которые должны быть протестированы. Например, это может быть файл app.py или main.py для приложения на Python, где находятся ваши REST-конечные точки. Включите полный путь к файлу. По умолчанию используется “app.py”.
  10. –sourceport: (Необязательно) Порт для тестирования файла модульных тестов по отношению к исходному приложению. Значение по умолчанию отсутствует. Если значение не указано, GPT-Migrate не будет пытаться тестировать модульные тесты на основе исходного приложения.
  11. –targetport: Порт для тестирования файла модульных тестов по отношению к мигрированному приложению. По умолчанию используется 8080.
  12. –guidelines: Стилистические или небольшие функциональные рекомендации, которые вы хотели бы соблюдать при миграции. Например, “используйте табы, а не пробелы”. По умолчанию используется пустая строка.
  13. –step: Шаг для выполнения. Варианты: ‘setup’, ‘migrate’, ‘test’, ‘all’. По умолчанию используется ‘all’.

Например, для миграции кодовой базы на Python в Node.js вы можете выполнить следующую команду:

			python main.py --sourcedir /path/to/my-python-app --sourceentry app.py --targetdir /path/to/my-nodejs-app --targetlang nodejs
		

Этот промпт найдёт код на Python в папке .-python-app, выполнит миграцию на Node.js и запишет полученный код в папку .-nodejs-app.

Заключение

Миграция приложения с одного языка на другой — непростая задачка. Существует множество мемов о том, как нелюбимый PM или техлид предлагает переписать весь код проекта на модный язык программирования. Теперь, мы надеемся, эта задача станет менее абсурдной и более безболезненной.

Если вам уже удалось протестировать GPT-Migrate, напишите в комментариях, увенчались ли ваши попытки успехом. Нам будет интересно узнать, помог ли инструмент в решении ваших задач. ?

Следите за новыми постами
Следите за новыми постами по любимым темам
4К открытий7К показов