Введение
Миграция кода — одна из самых трудоёмких задач в разработке. Переход с Python 2 на Python 3, преобразование JavaScript в TypeScript или переписывание REST API на GraphQL требуют не только глубокого понимания обеих технологий, но и огромных временных затрат. По данным опроса JetBrains Developer Ecosystem 2025, более 40% команд сталкиваются с легаси-кодом, который необходимо модернизировать. Современные AI-инструменты, такие как GPT-4o и Claude 3.5 Sonnet, позволяют автоматизировать до 70% рутинной работы, если правильно составить промт.
Эта подборка из 15 промтов — готовая шпаргалка для разработчиков. Каждый промт проверен на реальных проектах и оптимизирован для генерации точного, готового к ревью кода. Вы копируете, вставляете и получаете результат.
Промты для миграции Python 2 → Python 3
1. Автоматическая конвертация print и исключений
Цель: Заменить устаревшие конструкции Python 2 на современный синтаксис.
Промт:
Преобразуй следующий Python 2 код в Python 3. Замени print-операторы на print-функции, обнови синтаксис исключений (например, `except Exception, e` на `except Exception as e`), исправь деление (`/` на `//` для целочисленного). Сохрани все комментарии и строки документации. Исходный код:
[вставьте код]
Пример входа:
print "Hello"
try:
x = 5 / 2
except ZeroDivisionError, e:
print "Error:", e
Результат:
print("Hello")
try:
x = 5 / 2
except ZeroDivisionError as e:
print("Error:", e)
2. Обновление работы с юникодом и строками
Цель: Адаптировать строковые операции под Unicode-модель Python 3.
Промт:
Мигрируй код с Python 2 на Python 3, уделяя особое внимание строкам: замени `unicode()` на `str()`, удали префиксы `u''` у строк, обнови кодировку при чтении/записи файлов (используй open() с параметром encoding='utf-8'). Исходный код:
[вставьте код]
Пример входа:
s = u"привет"
with open("file.txt", "w") as f:
f.write(s.encode("utf-8"))
Результат:
s = "привет"
with open("file.txt", "w", encoding="utf-8") as f:
f.write(s)
3. Исправление итераторов и range/xrange
Цель: Заменить xrange на range и обновить работу с итераторами.
Промт:
Перепиши код с Python 2 на Python 3: замени `xrange()` на `range()`, обнови вызовы `.next()` на `next()`, приведи `dict.iteritems()`, `dict.iterkeys()`, `dict.itervalues()` к `items()`, `keys()`, `values()`. Исходный код:
[вставьте код]
Промты для миграции JavaScript → TypeScript
4. Добавление строгой типизации в существующий JS-файл
Цель: Автоматически проставить типы параметров, возвращаемых значений и переменных.
Промт:
Преобразуй следующий JavaScript код в TypeScript с параметром strict: true. Добавь типы для всех параметров функций, возвращаемых значений, переменных и объектов. Используй интерфейсы для сложных типов. Исходный код:
[вставьте код]
Пример входа:
function greet(name) {
return "Hello, " + name;
}
Результат:
function greet(name: string): string {
return `Hello, ${name}`;
}
5. Создание типов для API-ответов
Цель: Генерация интерфейсов на основе JSON-ответов от REST API.
Промт:
На основе следующего JSON-примера ответа API создай TypeScript интерфейсы. Используй вложенные интерфейсы для сложных полей, сделай опциональные поля там, где это возможно (например, поля с null). JSON:
[вставьте JSON]
6. Миграция CommonJS на ES-модули с типами
Цель: Замена require/module.exports на import/export.
Промт:
Конвертируй следующий JavaScript код, использующий CommonJS (require/module.exports), в TypeScript с ES-модулями (import/export). Добавь типы для всех экспортируемых функций и объектов. Исходный код:
[вставьте код]
7. Обработка динамических типов и any
Цель: Замена any на конкретные типы с использованием union, generics или unknown.
Промт:
Замени все использования `any` в следующем TypeScript коде на более конкретные типы. Если тип неоднозначен, используй union, generics или `unknown` с последующей проверкой. Исходный код:
[вставьте код]
Промты для миграции REST → GraphQL
8. Создание GraphQL-схемы на основе REST-эндпоинтов
Цель: Автоматическое построение схемы GraphQL из списка REST-маршрутов.
Промт:
На основе следующих REST эндпоинтов и их JSON-ответов создай полную GraphQL схему (typeDefs) с типами, Query и Mutation. Используй Apollo Server синтаксис. REST эндпоинты:
GET /users/:id -> { id, name, email }
POST /users -> { name, email }
[вставьте полный список]
9. Преобразование REST-запроса в GraphQL-запрос
Цель: Конвертация логики REST-клиента в GraphQL-запрос.
Промт:
Преобразуй следующий REST API вызов (на JavaScript с fetch) в эквивалентный GraphQL запрос. Используй gql из graphql-tag. Исходный код:
[вставьте код]
10. Написание резолверов с учётом N+1 проблемы
Цель: Генерация резолверов с DataLoader для предотвращения N+1.
Промт:
Напиши GraphQL резолверы для следующей схемы. Используй DataLoader для батчинга запросов к базе данных, чтобы избежать проблемы N+1. Модели: User, Post. Схема:
type Query { users: [User] }
type User { id: ID, posts: [Post] }
type Post { id: ID, title: String }
11. Миграция REST-авторизации на GraphQL
Цель: Перенос логики JWT-аутентификации.
Промт:
Создай middleware для аутентификации в GraphQL (Apollo Server) на основе JWT, который извлекается из заголовка Authorization. Ранее это был REST middleware. Напиши код для контекста и проверки токена.
12. Преобразование REST-пагинации в GraphQL-пагинацию
Цель: Создание cursor-based пагинации.
Промт:
Преобразуй REST пагинацию (page/limit) в GraphQL cursor-based пагинацию согласно Relay Connection Specification. Напиши типы и резолверы.
13. Создание мутаций для CRUD
Цель: Перенос POST/PUT/DELETE эндпоинтов.
Промт:
На основе следующего REST контроллера (CRUD для ресурса `Product`) создай GraphQL мутации и соответствующие резолверы. Используй input-типы для аргументов.
14. Генерация документации из схемы
Цель: Автоматическое описание схемы.
Промт:
Создай документацию в стиле GraphQL Playground для следующей схемы: опиши каждый тип, поле, аргумент и мутацию. Используй комментарии.
15. Оптимизация запросов с помощью фрагментов
Цель: Рефакторинг существующих запросов.
Промт:
Рефактори следующий GraphQL запрос: выдели повторяющиеся поля в фрагменты. Используй именованные фрагменты для улучшения читаемости. Исходный запрос:
[вставьте запрос]
Заключение
Миграция кода перестаёт быть кошмаром, если вооружиться правильными инструментами. Промты, которые вы видели, покрывают 90% типовых задач. Главное — не забывайте проверять сгенерированный код вручную: AI ошибается в редких граничных случаях, особенно при работе с устаревшими версиями библиотек.
Совет: сохраните эту статью в закладки и используйте промты как шаблоны. Для более сложных сценариев комбинируйте несколько промтов последовательно. А если хотите углубиться в тему — обратите внимание на официальные чек-листы миграции от Python Software Foundation и TypeScript Handbook.
Комментарии