Многие разработчики смотрят на нейросети с надеждой, но часто сталкиваются с разочарованием. Вместо полезного помощника получают генератор нерабочего или банального кода. Проблема не в технологии, а в подходе. Качественные промпты для написания кода – это не магия, а навык, который превращает ИИ из игрушки в мощный инструмент, экономящий часы работы.
Эта статья – практическое руководство. Здесь нет абстрактной теории. Только конкретные, проверенные шаблоны запросов, которые решают реальные задачи программиста. Материал создан, чтобы вы перестали бороться с нейросетью и начали получать от нее предсказуемый и качественный результат.
Вы увидите, как правильно ставить задачи ИИ для решения таких проблем, как:
- Генерация функций и классов с нуля.
- Рефакторинг и улучшение существующего кода.
- Написание и оптимизация SQL-запросов.
- Создание регулярных выражений.
- Отладка и поиск ошибок.
- Написание юнит-тестов.
Цель – дать вам готовый набор инструментов, который можно сразу применять в работе, а не просто еще один список «полезных» советов, которые и так все знают. Пора заставить ИИ работать на вас, а не наоборот.
Типичные ошибки при составлении запросов для ИИ
Прежде чем переходить к готовым решениям, важно понять, что обычно делают не так. Большинство неудачных попыток получить код от нейросети – это следствие одних и тех же просчетов. Избегая их, вы уже повысите качество результатов в несколько раз.
- Просить написать все приложение целиком. Это самая частая и наивная ошибка. Нейросеть не сможет создать сложный проект за один раз, потому что у нее ограничен объем памяти (контекста), и она не видит всей картины.
- Не предоставлять контекст. Запрос «напиши функцию для сортировки» без указания языка, структуры данных, существующих зависимостей и стиля кода приведет к созданию универсального, но бесполезного в вашем проекте кода.
- Использовать расплывчатые формулировки. Фразы вроде «сделай красиво» или «оптимизируй код» ничего не значат для машины. Ей нужны четкие критерии: «уменьши вложенность циклов», «используй стиль именования camelCase», «сократи количество запросов к базе данных».
- Не указывать формат желаемого ответа. Если не попросить явно, ИИ может выдать код вместе с длинными объяснениями, без комментариев или в виде сплошного текста. Всегда уточняйте, как должен выглядеть результат: «только код», «код с подробными комментариями», «в формате JSON».
- Слепо доверять сгенерированному коду. Нейросеть может «галлюцинировать» – придумывать несуществующие функции, использовать устаревшие библиотеки или генерировать код с тонкими логическими ошибками. Любой результат требует проверки и тестирования.
- Не разбивать сложную задачу на подзадачи. Вместо того чтобы просить «создать систему аутентификации», разделите запрос на этапы: «создай структуру таблицы пользователей в базе данных», «напиши функцию регистрации», «напиши функцию входа». Так вы контролируете процесс и получаете более качественный результат на каждом шаге.
- Забывать про ограничения и исключения. Не указав, чего делать НЕ нужно, вы рискуете получить код, использующий нежелательные библиотеки или подходы. Всегда добавляйте ограничения: «не используй библиотеку X», «избегай рекурсии», «решение должно работать без внешних зависимостей».
Сравнение слабых и сильных промптов для типовых задач
Наглядная разница между запросом, который ведет к разочарованию, и запросом, который дает результат. Посмотрите, как несколько деталей меняют все дело.
| Задача | Слабый промпт (ведет к ошибкам) | Сильный промпт (дает результат) | Почему сильный промпт лучше |
| Написать функцию | Напиши функцию на Python для валидации email. | Ты – старший Python-разработчик. Напиши функцию is_valid_email(email_string) на Python 3.9. Функция должна возвращать True, если строка является валидным email, и False в противном случае. Используй встроенную библиотеку `re` для проверки. Не используй сторонние пакеты. Добавь комментарии к регулярному выражению. Обработай случай, когда на вход подается не строка. | Задана роль, версия языка, конкретное имя функции, указаны инструменты (библиотека `re`) и ограничения (без сторонних пакетов), а также требования к обработке ошибок и документированию. |
| Найти ошибку в коде | Мой код не работает. Вот он: [код]. Исправь. | Ты – опытный отладчик. Проанализируй этот код на JavaScript: [вставьте код]. Он должен делать [опишите, что код должен делать], но вместо этого выдает ошибку [вставьте текст ошибки] или ведет себя так: [опишите неправильное поведение]. Найди причину ошибки, объясни ее и предложи исправленный вариант кода. Поясни, почему твое исправление решает проблему. | Предоставлен полный контекст: что код должен делать, как он себя ведет на самом деле, текст ошибки. Запрос не просто «исправь», а «проанализируй, объясни и исправь», что ведет к более глубокому и полезному ответу. |
| Оптимизировать SQL-запрос | Оптимизируй этот SQL-запрос: [запрос]. | Ты – эксперт по оптимизации баз данных PostgreSQL. Проанализируй следующий SQL-запрос: [вставьте запрос]. Он выполняется слишком долго на таблицах `users` (примерно 1 млн строк) и `orders` (10 млн строк). Структура таблиц: [опишите ключевые поля и индексы]. Предложи оптимизированную версию запроса. Объясни, какие изменения ты внес (например, добавил JOIN вместо подзапроса, изменил условия WHERE) и почему это ускорит выполнение. | Задана роль и конкретная СУБД (PostgreSQL). Указан контекст проблемы (медленное выполнение) и масштаб данных (размеры таблиц), а также структура таблиц. Это позволяет ИИ дать не общие, а конкретные рекомендации по оптимизации. |
| Написать юнит-тесты | Напиши тесты для моей функции. | Ты – QA-инженер. Напиши набор юнит-тестов для следующей функции на TypeScript: [вставьте код функции]. Используй фреймворк Jest. Покрой следующие случаи: позитивный сценарий, передача некорректных данных (null, undefined), граничные значения, обработка ошибок. Формат ответа: готовый файл с тестами, который можно сразу запустить. | Указан фреймворк (Jest) и язык (TypeScript). Четко перечислены сценарии, которые нужно протестировать, что гарантирует полное покрытие кода. Требование к формату («готовый файл») экономит время на копирование и вставку. |
Готовые промпты для написания кода: 30 шаблонов для ваших задач
Ниже – коллекция из 30 детализированных промптов. Они разбиты по типовым задачам, с которыми сталкивается каждый разработчик. Скопируйте, вставьте свои данные и получите результат. Это не волшебство, а системный подход к общению с нейросетью.
1. Генерация функции с нуля
Проблема:
Нужно быстро написать стандартную функцию, но не хочется тратить время на поиск синтаксиса или вспоминать детали реализации.
Решение:
Промпт, который четко определяет все требования к функции: от названия до обработки крайних случаев.
Текст промпта:
*****
Ты – опытный [укажите язык, например, «Python-разработчик»]. Твоя задача – написать функцию с нуля.
Задача: Создай функцию с названием [укажите название функции, например, "calculate_factorial"].
Язык программирования: [укажите язык и версию, например, «Python 3.10»].
Входные параметры: функция должна принимать [опишите параметры, их типы и названия, например, «один параметр n типа integer»].
Возвращаемое значение: функция должна возвращать [опишите тип и суть возвращаемого значения, например, «целое число – факториал числа n«].
Логика работы: [опишите по шагам, что должна делать функция, например, «1. Проверить, что n – неотрицательное целое число. 2. Если n=0, вернуть 1. 3. В противном случае, вычислить факториал рекурсивно или итеративно»].
Обработка ошибок: Если на вход поданы некорректные данные (например, отрицательное число или не число), функция должна [укажите поведение, например, «вызвать исключение ValueError с сообщением ‘Входное значение должно быть неотрицательным целым числом'»].
Стиль кода: Следуй официальному руководству по стилю [укажите стайл-гайд, например, «PEP 8»].
Комментарии: Добавь к функции строку документации (docstring), объясняющую ее назначение, параметры и возвращаемое значение.
Формат ответа: Только код функции, без лишних пояснений.
*****
Почему это работает:
Промпт не оставляет ИИ пространства для домыслов. Он содержит исчерпывающую информацию: роль, язык, сигнатуру функции, логику, обработку ошибок и требования к стилю. Это заставляет нейросеть сгенерировать точный и готовый к использованию код.
2. Рефакторинг существующего кода
Проблема:
Есть работающий, но «грязный» код: сложный, запутанный, трудный для чтения. Его нужно улучшить, но нет времени делать это вручную.
Решение:
Запрос, который фокусирует ИИ на конкретных целях рефакторинга: читаемость, производительность или соответствие стандартам.
Текст промпта:
*****
Ты – эксперт по чистому коду и рефакторингу. Твоя задача – улучшить предоставленный фрагмент кода.
Исходный код на [укажите язык, например, «JavaScript ES6»]:
[вставьте ваш код]
Цели рефакторинга:
- Повысить читаемость: [укажите, что именно улучшить, например, «заменить вложенные тернарные операторы на
if-else, дать переменным более осмысленные имена»]. - Улучшить производительность: [укажите конкретную цель, например, «уменьшить количество итераций цикла, избежать повторных вычислений»].
- Привести к стандартам: [укажите стайл-гайд, например, «привести код в соответствие с руководством по стилю Airbnb»].
- Упростить логику: [укажите, что можно упростить, например, «избавиться от лишних флагов, использовать встроенные методы массива»].
Ограничения: Не изменяй публичный интерфейс (названия функций и их параметры). Функциональность должна остаться прежней.
Формат ответа:
- Предложи исправленный вариант кода.
- Под кодом, в виде списка, кратко объясни каждое внесенное изменение и почему оно улучшает код.
*****
Почему это работает:
Вместо абстрактного «улучши код», промпт задает конкретные векторы для улучшения (читаемость, производительность). Указание на то, что нельзя менять, предотвращает поломку зависимого кода, а требование объяснить изменения помогает понять логику ИИ.
3. Объяснение фрагмента кода
Проблема:
Вы столкнулись с чужим или сложным кодом (например, с использованием продвинутых техник или регулярных выражений) и не можете быстро понять, как он работает.
Решение:
Промпт, который заставляет ИИ выступить в роли наставника и разложить сложный код «по полочкам».
Текст промпта:
*****
Ты – опытный наставник для программистов. Твоя задача – объяснить, как работает следующий фрагмент кода, простым и понятным языком.
Код для анализа на [укажите язык, например, «Python»]:
[вставьте сложный код]
Что нужно объяснить:
- Общая цель: Что этот код делает в целом? Какую задачу решает?
- Пошаговая логика: Опиши работу кода строка за строкой или по логическим блокам.
- «Магические» места: Объясни любые неочевидные части, например, сложные алгоритмы, битовые операции, синтаксический сахар или специфические функции библиотек.
- Вход и выход: Что этот код ожидает на входе и что производит на выходе?
- Возможные улучшения или риски: Есть ли в этом коде потенциальные проблемы или способы сделать его лучше?
Стиль объяснения: Говори как с начинающим коллегой, избегая излишне сложного жаргона. Используй аналогии, если это поможет пониманию.
*****
Почему это работает:
Промпт структурирует ответ. Он требует не просто пересказать код, а дать многоуровневое объяснение: от общей цели до разбора «магических» строк. Это превращает ответ ИИ в полноценный урок.
4. Написание SQL-запроса
Проблема:
Нужно получить данные из базы, но для этого требуется сложный SQL-запрос с объединениями, группировками или подзапросами, писать который долго и можно ошибиться.
Решение:
Запрос, который предоставляет ИИ всю необходимую информацию о структуре базы данных и желаемом результате.
Текст промпта:
*****
Ты – аналитик данных, эксперт по SQL. Напиши SQL-запрос для получения нужных данных.
Диалект SQL: [укажите диалект, например, «PostgreSQL 14»].
Структура таблиц:
- Таблица
[название таблицы 1, например, "users"]:-
[колонка 1, например, "id"](INT, PRIMARY KEY) -
[колонка 2, например, "name"](VARCHAR) -
[колонка 3, например, "registration_date"](DATE)
-
- Таблица
[название таблицы 2, например, "orders"]:-
[колонка 1, например, "id"](INT, PRIMARY KEY) -
[колонка 2, например, "user_id"](INT, FOREIGN KEY to users.id) -
[колонка 3, например, "amount"](DECIMAL) -
[колонка 4, например, "created_at"](TIMESTAMP)
-
Задача: Напиши запрос, который [опишите, что нужно получить, например, «выводит имена всех пользователей, зарегистрированных в прошлом месяце, и общую сумму их заказов. Выводить только тех, у кого сумма заказов больше 1000»].
Требования к результату:
- Колонки в результате:
[название колонки 1, например, "user_name"],[название колонки 2, например, "total_amount"]. - Сортировка: [укажите, как сортировать, например, «по убыванию общей суммы заказов»].
Формат ответа: Только SQL-код.
*****
Почему это работает:
Промпт содержит три ключевых элемента успеха для SQL-запросов: диалект SQL, точную схему данных (таблицы, колонки, связи) и четкое описание желаемого результата. Это исключает двусмысленность и позволяет ИИ построить корректный и эффективный запрос.
5. Генерация регулярного выражения
Проблема:
Регулярные выражения – мощный, но сложный и неочевидный инструмент. Создание «регулярки» для нетривиальной задачи может занять много времени и нервов.
Решение:
Промпт, который описывает задачу для регулярного выражения с помощью конкретных примеров того, что должно и не должно совпадать.
Текст промпта:
*****
Ты – эксперт по регулярным выражениям. Создай регулярное выражение (regex) для [укажите диалект, например, «PCRE (PHP/Python)»].
Задача: Мне нужно регулярное выражение для [опишите, что нужно найти или проверить, например, «проверки корректности имени пользователя»].
Требования к строке:
- [укажите требование 1, например, «Длина от 3 до 16 символов»].
- [укажите требование 2, например, «Может содержать только латинские буквы в нижнем регистре, цифры и символ подчеркивания»].
- [укажите требование 3, например, «Должна начинаться с буквы»].
Примеры строк, которые должны совпасть:
-
[пример 1, например, "user_name1"] -
[пример 2, например, "test3"]
Примеры строк, которые НЕ должны совпасть:
-
[пример 1, например, "1user"](не начинается с буквы) -
[пример 2, например, "us"](слишком короткое) -
[пример 3, например, "user-name"](содержит недопустимый символ)
Формат ответа:
- Само регулярное выражение.
- Подробное объяснение каждой части выражения (что означает
^,[],+и т.д.).
*****
Почему это работает:
Обучение на примерах (few-shot learning) – один из самых эффективных способов работы с ИИ. Предоставляя конкретные примеры совпадений и несовпадений, вы даете нейросети четкие критерии для создания идеального регулярного выражения, а требование объяснить результат помогает вам самим понять его логику.
6. Написание юнит-тестов
Проблема:
Написание тестов – рутинная, но критически важная задача. Хочется автоматизировать этот процесс, чтобы обеспечить покрытие кода без лишних усилий.
Решение:
Запрос, который предоставляет код функции и четкие указания, какие сценарии необходимо протестировать.
Текст промпта:
*****
Ты – QA-инженер, специализирующийся на автоматизированном тестировании. Твоя задача – написать юнит-тесты.
Тестируемая функция на [укажите язык, например, «TypeScript»]:
[вставьте код функции, которую нужно протестировать]
Инструменты:
- Фреймворк для тестирования: [укажите фреймворк, например, «Jest»].
- Библиотеки для моков (если нужны): [укажите, например, «jest.fn()»].
Сценарии для тестирования:
- Позитивный сценарий: Проверить работу с корректными типичными данными.
- Граничные значения: Проверить работу с [опишите граничные значения, например, «пустыми строками, нулевыми значениями, максимальными/минимальными числами»].
- Некорректные входные данные: Проверить, как функция обрабатывает [опишите некорректные данные, например, «null, undefined, данные неправильного типа»].
- Сценарий ошибки: Проверить, что функция корректно выбрасывает исключение, когда [опишите условия для ошибки].
Формат ответа: Предоставь полный код файла с тестами (например, myFunction.test.ts), готовый к запуску. Не включай ничего, кроме кода.
*****
Почему это работает:
Промпт не просто просит «написать тесты», а дает исчерпывающий план тестирования. Перечисление конкретных сценариев (позитивные, граничные, негативные) гарантирует, что ИИ создаст полный набор тестов, покрывающий все важные аспекты работы функции.
7. Конвертация кода с одного языка на другой
Проблема:
Нужно перенести логику из существующего проекта на одном языке в новый проект на другом. Ручной перенос – это долго и чревато ошибками.
Решение:
Промпт, который четко указывает исходный и целевой языки, а также просит учесть идиомы и лучшие практики целевого языка.
Текст промпта:
*****
Ты – полиглот-программист, эксперт в миграции кода между языками. Твоя задача – перевести код с одного языка на другой.
Исходный код на [укажите исходный язык, например, «Python»]:
[вставьте исходный код]
Целевой язык: [укажите целевой язык, например, «JavaScript (Node.js)»].
Требования к конвертации:
- Сохрани всю исходную логику и функциональность.
- Используй идиоматичный код и стандартные практики целевого языка. Например, [укажите пример, «вместо циклов
forиспользуй методы массивовmap,filter,reduceв JavaScript»]. - Если в исходном коде используются специфичные для языка библиотеки, найди их наиболее близкие аналоги в экосистеме целевого языка. Например, [укажите аналог, «библиотеку
requestsиз Python можно заменить наaxiosв Node.js»]. - Сохрани комментарии и структуру кода, насколько это возможно.
Формат ответа: Предоставь только сконвертированный код на целевом языке.
*****
Почему это работает:
Ключевое требование здесь – «использовать идиоматичный код». Это заставляет ИИ не просто механически переводить синтаксис, а адаптировать логику под стиль и лучшие практики нового языка, что делает результат более качественным и естественным для новой среды.
8. Создание документации для кода
Проблема:
Код написан, но на создание качественной документации (например, docstrings или JSDoc) не хватает времени или сил.
Решение:
Промпт, который просит ИИ проанализировать код и сгенерировать документацию в заданном формате.
Текст промпта:
*****
Ты – технический писатель, который специализируется на документировании кода. Твоя задача – сгенерировать документацию для функции/класса.
Код для документирования на [укажите язык, например, «Java»]:
[вставьте ваш код без документации]
Формат документации: [укажите стандарт, например, «Javadoc»].
Что нужно включить в документацию:
- Краткое описание назначения функции/класса.
- Описание каждого входного параметра (тег
@param): его тип, название и что он означает. - Описание возвращаемого значения (тег
@return): что и в каком случае возвращается. - Описание возможных исключений (тег
@throws): какие исключения и при каких условиях могут быть выброшены. - Пример использования в блоке
@seeили@example.
Формат ответа: Предоставь исходный код, но уже с добавленными блоками документации.
*****
Почему это работает:
Промпт задает строгий стандарт документирования (Javadoc, JSDoc, reStructuredText и т.д.) и перечисляет все обязательные разделы. Это гарантирует, что сгенерированная документация будет полной, структурированной и соответствующей общепринятым нормам.
9. Генерация кода для взаимодействия с API
Проблема:
Нужно написать код для отправки запроса к стороннему REST API, включая обработку ответа и ошибок, но не хочется разбираться в документации с нуля.
Решение:
Промпт, который описывает конечную точку API, метод запроса, заголовки, тело запроса и структуру ожидаемого ответа.
Текст промпта:
*****
Ты – бэкенд-разработчик. Напиши код для взаимодействия с REST API.
Язык и среда: [укажите, например, «Node.js с использованием библиотеки axios»].
Информация об API:
- Конечная точка (URL):
[укажите URL, например, "https://api.example.com/v1/users"] - HTTP-метод: [укажите метод, например, «POST»]
- Заголовки (Headers): [перечислите заголовки, например,
Content-Type: application/json,Authorization: Bearer [ВАШ_ТОКЕН]] - Тело запроса (Body): Опиши структуру JSON, которую нужно отправить. Например:
{ "name": "string", "email": "string" }. - Ожидаемый успешный ответ (200 OK): Опиши структуру JSON, которая вернется в случае успеха. Например:
{ "id": "integer", "status": "string" }.
Задача: Напиши асинхронную функцию [название функции, например, "createUser"], которая принимает [параметры функции, например, «объект с данными пользователя (name, email)»], выполняет запрос к API и возвращает [что нужно вернуть, например, «данные из тела ответа»]. Функция должна обрабатывать ошибки сети и HTTP-статусы, отличные от 2xx, выбрасывая исключение.
Формат ответа: Только код функции.
*****
Почему это работает:
Промпт предоставляет ИИ полную «спецификацию» API-запроса. Это как если бы вы дали разработчику подробное техническое задание. Указание всех деталей – от URL до структуры ответа – позволяет нейросети сгенерировать точный и рабочий клиентский код.
10. Оптимизация алгоритма
Проблема:
Есть алгоритм, который работает правильно, но слишком медленно или потребляет много памяти. Нужно найти более эффективное решение.
Решение:
Запрос, который предоставляет исходный код алгоритма и просит найти решение с лучшей асимптотической сложностью (Big O).
Текст промпта:
*****
Ты – ученый-информатик, эксперт по алгоритмам и структурам данных. Твоя задача – оптимизировать предоставленный алгоритм.
Исходный код алгоритма на [укажите язык, например, «C++»]:
[вставьте ваш медленный алгоритм]
Проблема: Этот алгоритм решает задачу [опишите задачу], но имеет асимптотическую сложность [укажите сложность, например, «O(n^2)»], что слишком медленно для моих данных.
Задача:
- Проанализируй исходный код и определи, почему он неэффективен.
- Предложи альтернативный алгоритм для решения той же задачи, но с лучшей асимптотической сложностью (например, O(n log n) или O(n)).
- Напиши реализацию нового, оптимизированного алгоритма на том же языке.
- Объясни, за счет чего достигается улучшение производительности (например, «использование хеш-таблицы для быстрого поиска вместо вложенного цикла»).
Формат ответа: Структурированный ответ с разделами: «Анализ проблемы», «Оптимизированный алгоритм (код)» и «Объяснение оптимизации».
*****
Почему это работает:
Промпт переводит проблему из плоскости «сделай быстрее» в академическую плоскость «улучши асимптотическую сложность». Это заставляет ИИ искать не микрооптимизации, а принципиально другие, более эффективные подходы к решению задачи.
11. Генерация HTML/CSS-компонента
Проблема:
Нужно быстро сверстать стандартный UI-компонент (кнопка, карточка, форма), но не хочется писать всю HTML-разметку и CSS-стили вручную.
Решение:
Промпт, который детально описывает внешний вид и структуру компонента, а также указывает на использование современных практик (Flexbox, Grid).
Текст промпта:
*****
Ты – фронтенд-разработчик, эксперт по HTML5 и CSS3. Создай UI-компонент.
Задача: Сверстай компонент «[название, например, ‘Карточка товара’]».
Структура HTML:
- Основной контейнер (
divс классомproduct-card). - Внутри него:
- Изображение (
imgс классомproduct-image). - Название товара (
h3с классомproduct-title). - Краткое описание (
pс классомproduct-description). - Цена (
divс классомproduct-price). - Кнопка «Добавить в корзину» (
buttonс классомadd-to-cart-btn).
- Изображение (
Требования к CSS:
- Используй Flexbox или Grid для выравнивания элементов.
- Карта должна иметь фиксированную ширину [например, «300px»], тень и скругленные углы.
- Название должно быть жирным, цена – крупнее и другого цвета.
- Кнопка должна иметь цвет фона, меняющийся при наведении курсора (hover-эффект).
- Адаптивность: компонент не должен «ломаться» на экранах шириной менее 400px.
Формат ответа: Предоставь два блока кода: один с HTML-разметкой, другой – с CSS-стилями.
*****
Почему это работает:
Промпт работает как подробный макет для верстальщика. Четкое описание HTML-структуры (семантика и классы) и визуальных требований к CSS не оставляет ИИ шансов сделать что-то не так. Упоминание современных технологий (Flexbox) направляет его на правильный путь.
12. Создание конфигурационного файла
Проблема:
Нужно настроить инструмент (веб-сервер, сборщик, линтер), но синтаксис его конфигурационного файла сложен или плохо документирован. Например, Dockerfile, nginx.conf, .eslintrc.js.
Решение:
Промпт, который описывает желаемое поведение и просит сгенерировать готовый конфигурационный файл с комментариями.
Текст промпта:
*****
Ты – DevOps-инженер / Системный администратор. Создай конфигурационный файл для [название инструмента, например, «Docker»].
Задача: Сгенерируй [имя файла, например, "Dockerfile"] для контейнеризации [опишите приложение, например, «простого Node.js Express-приложения»].
Требования к конфигурации:
- Базовый образ: [укажите образ, например, «node:18-alpine»].
- Рабочая директория: [укажите путь, например, «/app»].
- Зависимости: [опишите шаги для установки, например, «Скопировать
package.jsonиpackage-lock.json, затем выполнитьnpm install --production«]. - Исходный код: Скопировать все файлы проекта в рабочую директорию.
- Порт: Приложение работает на порту [укажите порт, например, «3000»]. Этот порт должен быть доступен извне контейнера.
- Команда запуска: [укажите команду, например, «
node server.js«]. - Оптимизация: Используй многоэтапную сборку (multi-stage build) для уменьшения размера итогового образа.
Формат ответа: Полный текст конфигурационного файла с комментариями, объясняющими каждый шаг.
*****
Почему это работает:
Промпт предоставляет все необходимые «вводные» для конфигурации: от базового образа до команды запуска. Требование добавить комментарии и использовать лучшие практики (многоэтапная сборка) повышает качество и понятность результата.
13. Написание скрипта для автоматизации
Проблема:
Есть рутинная задача (например, бэкап файлов, обработка данных, деплой), которую хочется автоматизировать с помощью скрипта.
Решение:
Промпт, который пошагово описывает логику работы скрипта, включая обработку аргументов командной строки и ошибок.
Текст промпта:
*****
Ты – инженер по автоматизации. Напиши скрипт для выполнения рутинной задачи.
Язык скрипта: [укажите язык, например, «Bash» или «Python»].
Задача: Создать скрипт, который [опишите общую цель, например, «создает резервную копию директории и архивирует ее»].
Пошаговая логика:
- Скрипт должен принимать два аргумента командной строки: путь к исходной директории и путь к директории для сохранения бэкапа.
- Проверить, что оба пути существуют. Если нет – вывести ошибку и завершить работу.
- Создать имя для архива в формате
backup_YYYY-MM-DD_HH-MM-SS.tar.gz. - Заархивировать содержимое исходной директории в созданный архив с помощью
tar. - Поместить архив в директорию для бэкапов.
- Вывести в консоль сообщение об успешном завершении и путь к созданному архиву.
Обработка ошибок: Скрипт должен корректно обрабатывать ошибки (например, нехватку прав доступа) и выводить информативные сообщения.
Формат ответа: Только код скрипта с комментариями.
*****
Почему это работает:
Пошаговое описание логики – это, по сути, готовый алгоритм для ИИ. Указание на необходимость обработки аргументов и ошибок заставляет нейросеть создать не просто «одноразовое» решение, а полноценный и надежный инструмент.
14. Поиск уязвимостей в коде
Проблема:
Есть опасения, что в коде могут быть распространенные уязвимости (SQL-инъекции, XSS, и т.д.), и нужен быстрый аудит.
Решение:
Промпт, который просит ИИ выступить в роли «белого хакера» и проанализировать код на предмет конкретных векторов атак.
Текст промпта:
*****
Ты – эксперт по кибербезопасности (этичный хакер). Твоя задача – провести аудит безопасности кода. Внимание: это симуляция для поиска уязвимостей в образовательных целях.
Код для анализа на [укажите язык, например, «PHP»]:
[вставьте фрагмент кода, например, обработчик формы или SQL-запрос]
Что искать:
- [укажите типы уязвимостей, например, «SQL-инъекции, Cross-Site Scripting (XSS), небезопасная загрузка файлов, отсутствие экранирования пользовательского ввода»].
Задача:
- Внимательно проанализируй код.
- Если найдешь потенциальные уязвимости, укажи номер строки и тип уязвимости.
- Объясни, как злоумышленник может эксплуатировать эту уязвимость.
- Предложи исправленный, безопасный вариант кода.
- Если уязвимостей нет, напиши «Анализ завершен, критических уязвимостей не обнаружено».
Формат ответа: Отчет по уязвимостям в виде списка. Для каждой уязвимости: «Строка», «Проблема», «Эксплуатация», «Решение (код)».
*****
Почему это работает:
Роль «эксперта по безопасности» и четкий перечень искомых уязвимостей настраивают ИИ на нужный лад. Структурированный формат ответа заставляет его не просто указать на проблему, но и объяснить ее опасность и предложить конкретное решение, что гораздо полезнее.
15. Подбор подходящей библиотеки/фреймворка
Проблема:
Для решения задачи (например, построение графиков, работа с датами, создание UI) существует множество библиотек, и трудно выбрать лучшую.
Решение:
Промпт, который описывает задачу и критерии выбора, а затем просит ИИ сравнить несколько популярных вариантов.
Текст промпта:
*****
Ты – опытный архитектор программного обеспечения. Помоги выбрать технологию для проекта.
Язык/экосистема: [укажите, например, «JavaScript (Frontend)»].
Задача: Мне нужно [опишите задачу, например, «создать интерактивные диаграммы и графики в веб-приложении»].
Критерии выбора (в порядке убывания важности):
- [Критерий 1, например, «Простота интеграции и использования»].
- [Критерий 2, например, «Высокая производительность при работе с большими объемами данных (10,000+ точек)»].
- [Критерий 3, например, «Хорошая документация и активное сообщество»].
- [Критерий 4, например, «Возможность кастомизации внешнего вида графиков»].
- [Критерий 5, например, «Минимальный размер бандла»].
Задача:
- Предложи 3 наиболее подходящие библиотеки для решения этой задачи.
- Сравни их в виде таблицы по указанным выше критериям.
- В конце дай свою рекомендацию, какая из них лучше всего подходит для моего случая, и кратко обоснуй свой выбор.
Формат ответа: Таблица сравнения и итоговая рекомендация.
*****
Почему это работает:
Промпт превращает субъективный выбор в объективный анализ. Указание четких, приоритизированных критериев заставляет ИИ провести настоящее исследование и выдать не просто список, а взвешенное сравнение, которое действительно помогает принять решение.
16. Генерация моковых данных
Проблема:
Для тестирования или разработки фронтенда нужны реалистичные данные (список пользователей, товаров), но создавать их вручную долго и скучно.
Решение:
Промпт, который описывает структуру данных и просит сгенерировать массив объектов в формате JSON.
Текст промпта:
*****
Ты – генератор тестовых данных. Твоя задача – создать массив объектов с реалистичными данными.
Формат вывода: [укажите формат, например, «JSON»].
Структура объекта:
Опиши поля и типы данных для одного объекта. Например:
{
"id": "uuid",
"firstName": "имя (мужское или женское, на русском языке)",
"lastName": "фамилия (на русском языке)",
"email": "уникальный email",
"registrationDate": "дата в формате ISO 8601 за последний год",
"balance": "число с плавающей точкой от 0 до 100000",
"isActive": "boolean"
}
Количество: Сгенерируй массив из [укажите количество, например, «20»] таких объектов.
Требования:
- Все данные должны выглядеть реалистично.
- Значения
idиemailдолжны быть уникальными в пределах сгенерированного массива.
Формат ответа: Только массив JSON, без лишнего текста.
*****
Почему это работает:
Четкое описание структуры объекта и типов данных (с примерами, вроде «имя на русском») служит для ИИ точным шаблоном. Требования к уникальности и реалистичности заставляют его генерировать не просто случайный набор символов, а данные, пригодные для реального использования.
17. Проектирование структуры базы данных
Проблема:
Начинается новый проект, и нужно спроектировать схему базы данных, продумав таблицы, поля и связи между ними.
Решение:
Промпт, который описывает сущности и их отношения, а затем просит сгенерировать SQL DDL-скрипт для создания таблиц.
*****
Ты – архитектор баз данных. Спроектируй схему данных для приложения.
Концепция приложения: [опишите суть приложения, например, «простая система для ведения блога»].
Основные сущности и их отношения:
- Пользователь (User): Имеет имя, email, пароль (хешированный). Каждый пользователь может написать много постов.
- Пост (Post): Имеет заголовок, текст, дату создания. Каждый пост принадлежит одному пользователю.
- Комментарий (Comment): Имеет текст, дату создания. Каждый комментарий принадлежит одному посту и одному пользователю.
- Тег (Tag): Имеет уникальное название. Отношение между постами и тегами – многие-ко-многим (один пост может иметь много тегов, один тег может быть у многих постов).
Задача:
- На основе этого описания спроектируй реляционную схему данных.
- Напиши SQL DDL-скрипт для создания всех необходимых таблиц (включая связующую таблицу для отношения многие-ко-многим).
- Используй
PRIMARY KEY,FOREIGN KEYдля определения связей,NOT NULLдля обязательных полей. - Выбери подходящие типы данных для каждого поля.
Диалект SQL: [укажите, например, «MySQL 8.0»].
Формат ответа: Только SQL-скрипт.
*****
Почему это работает:
Промпт описывает задачу на уровне бизнес-логики (сущности и отношения), а от ИИ требуется перевести это на язык реляционной модели. Это позволяет получить продуманную схему, даже если вы не являетесь экспертом в проектировании БД. Указание на DDL-скрипт дает сразу готовый к исполнению результат.
18. Написание Docker-compose файла
Проблема:
Проект состоит из нескольких сервисов (например, бэкенд, фронтенд, база данных), и нужно настроить их совместный запуск и взаимодействие в Docker.
Решение:
Промпт, который описывает каждый сервис, его зависимости и конфигурацию сети.
Текст промпта:
*****
Ты – DevOps-инженер, мастер Docker. Создай файл `docker-compose.yml`.
Состав проекта:
-
Сервис бэкенда (
backend):- Собирается из
Dockerfileв папке./backend. - Зависит от сервиса базы данных (
db). - Использует переменные окружения из файла
.env. - Пробрасывает порт
5000на хост.
- Собирается из
-
Сервис фронтенда (
frontend):- Собирается из
Dockerfileв папке./frontend. - Зависит от сервиса бэкенда (
backend). - Пробрасывает порт
3000на хост.
- Собирается из
-
Сервис базы данных (
db):- Использует официальный образ [например, «postgres:14-alpine»].
- Имя пользователя, пароль и название базы данных должны задаваться через переменные окружения из файла
.env. - Данные должны сохраняться в volume с названием
db-data, чтобы не теряться при перезапуске.
Задача:
Напиши docker-compose.yml версии ‘3.8’, который описывает все три сервиса, их зависимости, порты, volumes и использование переменных окружения.
Формат ответа: Только YAML-код файла docker-compose.yml.
*****
Почему это работает:
Промпт предоставляет ИИ полную карту микросервисной архитектуры приложения. Четкое описание каждого сервиса, его роли и связей с другими позволяет нейросети сгенерировать сложный конфигурационный файл, который корректно «оркеструет» все части системы.
19. Анализ производительности (профилирование)
Проблема:
Код выполняется медленно, но непонятно, какая именно его часть является «бутылочным горлышком».
Решение:
Промпт, который просит ИИ подсказать, как использовать встроенные инструменты профилирования для конкретного языка и проанализировать их вывод.
Текст промпта:
*****
Ты – эксперт по оптимизации производительности. Помоги найти узкие места в коде.
Язык программирования: [укажите, например, «Python»].
Задача: Мне нужно найти самую медленную часть в моем коде.
Твои задачи:
- Подскажи, какой встроенный или стандартный инструмент для профилирования лучше всего использовать в [указанный язык]. Например, для Python это
cProfile. - Напиши короткий пример кода, показывающий, как запустить мой код под этим профилировщиком и сохранить результаты в файл.
- Ниже я предоставлю вывод профилировщика. Проанализируй его и скажи, какие 2-3 функции занимают больше всего времени выполнения (
cumulative time). - Дай рекомендации, как можно было бы оптимизировать эти «горячие» функции.
Вот вывод моего профилировщика:
[вставьте сюда вывод вашего профилировщика, например, от cProfile]
Формат ответа: Ответ в виде разделов: «Инструмент», «Пример использования», «Анализ вывода», «Рекомендации».
*****
Почему это работает:
Этот промпт разбивает сложную задачу на два этапа. Сначала он учит пользователя, как собрать данные о производительности, а затем помогает их интерпретировать. Это гораздо эффективнее, чем просто просить «оптимизировать код», так как основывается на реальных измерениях, а не догадках.
20. Создание класса по описанию
Проблема:
Нужно реализовать класс, представляющий некую сущность, со всеми ее свойствами и методами, соблюдая принципы ООП.
Решение:
Промпт, который описывает класс как в техническом задании: его поля, методы, конструктор и логику.
Текст промпта:
*****
Ты – архитектор ПО, приверженец объектно-ориентированного программирования. Создай класс.
Язык: [укажите язык, например, «Java»].
Название класса: [например, "BankAccount"].
Свойства (поля) класса:
-
[свойство 1, например, "private String accountNumber"](номер счета) -
[свойство 2, например, "private String ownerName"](имя владельца) -
[свойство 3, например, "private double balance"](баланс, должен быть недоступен для прямого изменения извне)
Конструктор:
- Должен принимать [например, «номер счета и имя владельца»].
- Начальный баланс всегда равен 0.
Методы класса:
-
deposit(double amount): Увеличивает баланс. Должен проверять, что сумма положительная. -
withdraw(double amount): Уменьшает баланс. Должен проверять, что на счете достаточно средств и сумма положительная. -
getBalance(): Возвращает текущий баланс. -
getAccountInfo(): Возвращает строку с информацией о счете.
Требования:
- Используй инкапсуляцию: поля должны быть приватными, доступ – через публичные методы.
- Добавь Javadoc-комментарии для класса и всех публичных методов.
Формат ответа: Полный код класса в одном файле.
*****
Почему это работает:
Промпт детально описывает «контракт» класса: его состояние (поля) и поведение (методы). Упоминание принципов ООП (инкапсуляция) и требований к документированию направляет ИИ на создание качественного, поддерживаемого и самодокументированного кода.
21. Генерация Git-команды
Проблема:
Нужно выполнить нетривиальное действие в Git (например, откатить коммит, найти что-то в истории), но вы не помните точную команду и ее флаги. Искать в документации долго.
Решение:
Промпт, который описывает желаемое действие человеческим языком и просит перевести его в команду Git.
Текст промпта:
*****
Ты – Git-гуру. Переведи мое намерение в конкретную команду Git.
Моя задача: [опишите, что вы хотите сделать, например, «Я случайно сделал коммит в ветку main, а должен был в feature-branch. Мне нужно переместить этот последний коммит из main в feature-branch, чтобы main осталась чистой.»].
Дополнительный контекст: [укажите детали, если они важны, например, «Этот коммит еще не был отправлен на удаленный репозиторий (не было git push).»].
Задача:
- Напиши последовательность команд Git, которая решает мою проблему.
- Для каждой команды дай краткое пояснение, что она делает.
Формат ответа: Нумерованный список команд с объяснениями.
*****
Почему это работает:
Промпт фокусируется не на синтаксисе, а на семантике – на «что я хочу сделать». Это позволяет ИИ понять цель и подобрать наиболее подходящую и безопасную последовательность команд, а требование объяснить каждый шаг помогает пользователю научиться делать это самостоятельно в будущем.
22. Разработка структуры проекта
Проблема:
Начинается новый проект, и нужно создать правильную структуру папок и файлов, чтобы он был масштабируемым и понятным для других разработчиков.
Решение:
Промпт, который описывает стек технологий и тип приложения, а затем просит предложить стандартную структуру каталогов.
Текст промпта:
*****
Ты – ведущий разработчик (Tech Lead). Предложи структуру каталогов для нового проекта.
Технологический стек:
- Тип приложения: [например, «REST API сервер»].
- Язык: [например, «Go»].
- Фреймворк: [например, «Gin»].
- База данных: [например, «PostgreSQL»].
- Другие инструменты: [например, «Docker»].
Задача:
- Предложи логичную и масштабируемую структуру папок и файлов для этого проекта.
- Отобрази ее в виде дерева.
- Для каждой ключевой папки (
cmd,internal,pkg,apiи т.д.) дай краткое пояснение, что в ней должно находиться. - Обоснуй, почему такая структура является хорошей практикой для данного стека технологий.
Формат ответа: Древовидная структура и объяснения под ней.
*****
Почему это работает:
Промпт просит не просто придумать папки, а предложить общепринятую, стандартную структуру для конкретного стека. Это гарантирует, что результат будет соответствовать лучшим практикам сообщества (например, Standard Go Project Layout), что делает проект понятным и поддерживаемым.
23. Написание простого парсера
Проблема:
Нужно извлечь структурированные данные из неструктурированного текста (например, из лог-файла или HTML-страницы).
Решение:
Промпт, который предоставляет пример входного текста и описывает, какие именно данные и в каком формате нужно извлечь.
Текст промпта:
*****
Ты – специалист по обработке данных. Напиши парсер для извлечения информации из текста.
Язык: [укажите, например, «Python»].
Библиотеки: [укажите предпочтительные библиотеки, например, «без внешних библиотек» или «с использованием BeautifulSoup для HTML»].
Пример входного текста:
[вставьте пример текста, из которого нужно извлечь данные, например, строка из лога nginx]
127.0.0.1 - - [10/Oct/2023:13:55:36 +0000] "GET /api/v1/data HTTP/1.1" 200 5316 "-" "Mozilla/5.0"
Задача:
Напиши функцию parse_log_entry(log_line), которая принимает строку лога и возвращает [опишите формат, например, «словарь (dict) со следующими ключами: ip_address, timestamp, method, url, status_code, response_size«].
Пример ожидаемого результата для строки выше:
{
"ip_address": "127.0.0.1",
"timestamp": "10/Oct/2023:13:55:36 +0000",
"method": "GET",
"url": "/api/v1/data",
"status_code": 200,
"response_size": 5316
}
Формат ответа: Только код функции.
*****
Почему это работает:
Предоставление примера «до» (входной текст) и «после» (ожидаемый результат в JSON) является чрезвычайно эффективным способом постановки задачи для ИИ. Он видит точное преобразование, которое от него требуется, и может сгенерировать код, идеально выполняющий эту работу.
24. Поиск и замена с помощью Regex
Проблема:
Нужно выполнить сложное пакетное переименование или замену в коде, где простого «найти и заменить» недостаточно.
Решение:
Промпт, который предоставляет примеры «до» и «после» для демонстрации требуемого преобразования.
Текст промпта:
*****
Ты – мастер регулярных выражений и автоматизации. Помоги мне с поиском и заменой в IDE (например, VS Code).
Задача: Мне нужно преобразовать строки, соответствующие определенному шаблону.
Пример того, что есть (ДО):
const my_variable = require('some-module');
const another_long_variable = require('another-module');
Пример того, что должно получиться (ПОСЛЕ):
import { my_variable } from 'some-module';
import { another_long_variable } from 'another-module';
Задача:
- Напиши регулярное выражение для ПОИСКА (Find).
- Напиши шаблон для ЗАМЕНЫ (Replace), используя группы захвата (capturing groups, например,
$1,$2). - Объясни, как работают твои выражения поиска и замены.
Формат ответа: Разделы «Поиск:», «Замена:», «Объяснение:».
*****
Почему это работает:
Этот промпт идеально подходит для использования в IDE. Он не просто генерирует «регулярку», а дает готовую пару «найти-заменить», которую можно сразу скопировать в соответствующий инструмент. Объяснение помогает понять механику и адаптировать решение для других случаев.
25. Объяснение концепции или паттерна проектирования
Проблема:
Вы слышали о каком-то паттерне проектирования (например, «Фабрика», «Синглтон») или концепции (например, «инверсия зависимостей»), но не до конца понимаете его суть и практическое применение.
Решение:
Промпт, который просит объяснить сложную концепцию простым языком, с аналогиями и примером кода.
Текст промпта:
*****
Ты – опытный архитектор ПО и наставник. Объясни мне концепцию программирования.
Концепция/Паттерн: [укажите название, например, «Паттерн ‘Стратегия’ (Strategy Pattern)»].
Язык для примера: [укажите язык, например, «C#»].
Структура объяснения:
- Проблема: Опиши типичную ситуацию или проблему, которую этот паттерн решает. Начни с фразы «Представьте, что вы…».
- Аналогия: Приведи простую аналогию из реальной жизни, которая иллюстрирует идею паттерна.
- Решение (Суть паттерна): Объясни, как паттерн решает эту проблему. Какова его основная идея?
- Пример кода: Напиши минимальный, но полный пример кода на указанном языке, демонстрирующий реализацию паттерна для решения описанной проблемы. Добавь комментарии, объясняющие роли каждого класса (контекст, стратегия, конкретные стратегии).
- Преимущества и недостатки: Кратко перечисли, в каких случаях этот паттерн полезен, а когда его использование может быть избыточным.
*****
Почему это работает:
Промпт требует многоуровневого объяснения: от проблемы и аналогии до конкретного кода и анализа компромиссов. Такой подход гарантирует глубокое, а не поверхностное понимание концепции, превращая абстрактную теорию в практический инструмент.
26. Генерация CRUD-операций
Проблема:
Для новой сущности в приложении нужно написать стандартный набор операций: создание, чтение, обновление, удаление (Create, Read, Update, Delete).
Решение:
Промпт, который описывает модель данных и просит сгенерировать полный набор CRUD-методов для работы с ней.
Текст промпта:
*****
Ты – бэкенд-разработчик, специализирующийся на создании REST API. Напиши CRUD-контроллер.
Стек: [укажите, например, «Node.js с фреймворком Express и ORM Sequelize»].
Сущность (Модель): [название, например, "Product"].
Поля модели: id (integer), name (string), price (decimal), description (text).
Задача:
Создай контроллер (или набор функций-обработчиков) для сущности Product, который реализует следующие эндпоинты:
-
CREATE:
POST /products– создает новый товар. -
READ (all):
GET /products– возвращает список всех товаров. -
READ (one):
GET /products/:id– возвращает один товар по ID. -
UPDATE:
PUT /products/:id– обновляет товар по ID. -
DELETE:
DELETE /products/:id– удаляет товар по ID.
Требования:
- Код должен быть асинхронным (
async/await). - Включи базовую обработку ошибок (например, возврат статуса 404, если товар не найден).
- Следуй лучшим практикам для выбранного стека.
Формат ответа: Полный код контроллера в одном файле.
*****
Почему это работает:
CRUD – это шаблонная задача, идеальная для автоматизации. Промпт четко определяет все составляющие: стек, модель данных и список эндпоинтов с HTTP-методами. Это позволяет ИИ сгенерировать boilerplate-код, который разработчику останется только подключить к роутеру.
27. Исправление стилистических ошибок (линтинг)
Проблема:
Код работает, но его стиль не соответствует принятым в команде соглашениям (Code Style Guide), и нужно быстро это исправить.
Решение:
Промпт, который предоставляет код и ссылку на руководство по стилю, прося привести код в соответствие с ним.
Текст промпта:
*****
Ты – автоматический линтер и форматер кода. Твоя задача – исправить стиль кода.
Код для форматирования на [укажите язык, например, «Python»]:
[вставьте ваш "некрасивый" код с неправильными отступами, именами переменных и т.д.]
Руководство по стилю: [укажите стандарт, например, «PEP 8»].
Конкретные правила для исправления:
- [правило 1, например, «Отступы должны быть 4 пробела»].
- [правило 2, например, «Имена переменных должны быть в
snake_case«]. - [правило 3, например, «Максимальная длина строки – 79 символов»].
- [правило 4, например, «Использовать одинарные кавычки вместо двойных»].
Задача:
- Перепиши предоставленный код так, чтобы он полностью соответствовал указанному руководству по стилю.
- Не меняй логику работы кода.
- В виде списка укажи, какие именно стилистические исправления ты внес.
Формат ответа: Разделы «Исправленный код:» и «Внесенные изменения:».
*****
Почему это работает:
Промпт дает ИИ роль автоматического инструмента (линтера) и четкие правила игры (руководство по стилю). Это позволяет получить предсказуемый результат, аналогичный работе инструментов вроде Prettier или Black, но с возможностью задать кастомные правила.
28. Перевод естественного языка в команду оболочки (CLI)
Проблема:
Вы хотите выполнить сложную операцию в командной строке (например, с использованием `find`, `grep`, `awk`), но не помните точный синтаксис и как их комбинировать.
Решение:
Промпт, который описывает задачу на человеческом языке и просит ИИ сгенерировать соответствующую команду для терминала.
Текст промпта:
*****
Ты – эксперт по командной строке Linux/macOS. Переведи мой запрос на язык оболочки (shell).
Оболочка: [укажите, например, «Bash»].
Задача: [опишите, что вы хотите сделать, например, «Мне нужно найти все файлы с расширением .log в текущей директории и ее поддиректориях, в которых содержится строка ‘ERROR’, и посчитать количество таких файлов»].
Требования:
- Команда должна быть максимально эффективной и использовать стандартные утилиты.
- Если есть несколько способов, предложи самый идиоматичный.
Задача:
- Напиши одну команду (можно с использованием
|), которая решает мою задачу. - Подробно объясни каждую часть команды (что делает
find, что делаетgrep, что делаетwcи их флаги).
Формат ответа: Разделы «Команда:» и «Объяснение:».
*****
Почему это работает:
Командная строка – это, по сути, язык программирования. Этот промпт использует ИИ как «переводчика» с человеческого языка на язык shell. Требование объяснить команду превращает ответ в мини-урок, помогая не просто получить результат, но и научиться новому.
29. Написание миграции для базы данных
Проблема:
Нужно изменить схему базы данных (добавить таблицу, колонку, индекс), и для этого требуется написать файл миграции с помощью используемого в проекте инструмента (Alembic, Phinx, Knex.js, etc.).
Решение:
Промпт, который описывает требуемые изменения и просит сгенерировать код для миграции «вверх» (up) и «вниз» (down).
Текст промпта:
*****
Ты – бэкенд-разработчик, опытный в работе с миграциями баз данных. Создай файл миграции.
Инструмент для миграций: [укажите, например, «Knex.js для Node.js»].
Задача: Мне нужна миграция, которая [опишите изменение, например, «добавляет новую колонку is_verified (boolean, default false, not null) в таблицу users«].
Требования:
- Сгенерируй код для функции
up, которая применяет это изменение. - Сгенерируй код для функции
down, которая откатывает это изменение (например, удаляет созданную колонку).
Формат ответа: Полный код файла миграции, содержащий обе функции (up и down).
*****
Почему это работает:
Ключевой элемент здесь – требование создать обе части миграции: `up` и `down`. Это заставляет ИИ продумать не только прямое, но и обратное действие, что является фундаментальным принципом надежных миграций баз данных. Промпт автоматизирует создание синтаксически правильного и полного файла миграции.
30. Адаптация кода под старую версию языка/среды
Проблема:
У вас есть современный код, использующий новые возможности языка, но его нужно запустить в старой среде, которая их не поддерживает (например, код с `async/await` в старом Node.js).
Решение:
Промпт, который просит «транспилировать» код вручную, заменяя новые конструкции их эквивалентами из старого синтаксиса.
Текст промпта:
*****
Ты – программист-историк, эксперт по обратной совместимости. Адаптируй современный код для старой среды.
Исходный код на [укажите версию, например, «JavaScript ES2017»]:
[вставьте ваш современный код, например, с async/await и классами]
Целевая среда: [укажите старую версию, например, «JavaScript ES5 (для поддержки старых браузеров)»].
Задача:
- Перепиши исходный код, заменяя новые синтаксические конструкции на их эквиваленты, работающие в целевой среде. Например:
-
async/awaitна промисы (.then/.catch). - Классы (
class) на функции-конструкторы и прототипы. - Стрелочные функции (
=>) на обычные функции. -
let/constнаvar.
-
- Логика и функциональность кода должны остаться абсолютно неизменными.
Формат ответа: Только переписанный код, совместимый со старой средой.
*****
Почему это работает:
Промпт по сути просит ИИ выполнить работу, которую обычно делают инструменты вроде Babel, но для одного конкретного файла. Четкое перечисление замен (`async/await` -> промисы) служит для нейросети инструкцией, какие именно трансформации нужно произвести, что обеспечивает точный и предсказуемый результат.
Продвинутые приемы в промптах для написания кода
Помимо структуры самого промпта, существуют общие техники, которые позволяют «направлять» нейросеть и получать более качественные или разнообразные результаты.
| Прием / Модификатор | Описание | Пример использования в промпте |
| Ролевая игра (Role-playing) | Назначение нейросети конкретной роли (например, «старший разработчик», «DevOps-инженер», «эксперт по безопасности»). Это настраивает ее на определенный стиль, лексику и уровень детализации ответа. | «Ты – старший Go-разработчик с 10-летним опытом. Проанализируй этот код…» |
| Обучение на примерах (Few-shot Prompting) | Предоставление в промпте 1-3 примеров того, что вы хотите получить. Это один из самых мощных приемов, особенно для задач трансформации текста (код, SQL, regex). | «Преобразуй комментарии. Пример 1: `// TODO` -> `// ЗАДАЧА:`. Пример 2: `// FIXME` -> `// ИСПРАВИТЬ:`. Теперь преобразуй вот этот код…» |
| «Думай по шагам» (Chain of Thought) | Просьба к нейросети сначала составить план действий или рассуждений, а затем дать окончательный ответ. Это помогает при решении сложных логических задач или алгоритмов. | «Прежде чем писать код, подумай по шагам. Сначала определи, какая структура данных лучше всего подходит. Затем опиши алгоритм словами. И только потом напиши его реализацию.» |
| Уточнение ограничений | Явное указание того, чего делать НЕ нужно. Это помогает избежать нежелательных решений, использования определенных библиотек или подходов. | «Напиши функцию… Ограничения: не используй сторонние библиотеки, решение должно быть построено только на встроенных возможностях языка. Избегай рекурсии.« |
| Запрос альтернатив | Если вы не уверены в единственно верном решении, попросите нейросеть предложить несколько вариантов и сравнить их. | «Предложи три разных способа решить эту задачу. Для каждого способа напиши код и кратко опиши его плюсы и минусы (производительность, читаемость).» |
| Контроль формата вывода | Четкое указание, в каком виде должен быть представлен результат. Это экономит время на последующее форматирование. | «Формат ответа: только код, без каких-либо объяснений и приветствий. Код должен быть обернут в тройные обратные кавычки с указанием языка.» |
Неочевидные советы для эффективной работы
Освоив хорошие промпты, можно пойти еще дальше. Эти небольшие хитрости помогут встроить работу с нейросетью в ваш ежедневный рабочий процесс и извлечь из нее максимум пользы.
- Создайте «Библиотеку промптов». Удачные и часто используемые шаблоны запросов стоит сохранять в отдельный файл или в сервис для хранения заметок. Это избавит вас от необходимости каждый раз придумывать промпт с нуля и превратит их в ваши личные, мощные сниппеты.
- Используйте отдельный чат для каждой задачи. Не смешивайте в одной беседе с ИИ запросы по рефакторингу, написанию тестов и работе с базой данных. Создавая отдельный чат для каждой крупной задачи (например, «Реализация фичи Х»), вы сохраняете контекст, и нейросеть лучше понимает последующие уточняющие запросы.
- Просите ИИ покритиковать свой же код. После того как нейросеть сгенерировала для вас код, отправьте его в следующем сообщении с промптом: «Ты – придирчивый тимлид. Найди недостатки, потенциальные ошибки и места для улучшения в этом коде». Часто ИИ находит неочевидные проблемы в своем же решении.
- Итерируйте, а не требуйте все сразу. Если результат первого промпта вас не устроил, не бросайте его. Уточните запрос: «Хорошо, но теперь перепиши это, используя `map` вместо `for`» или «Это слишком сложно, объясни проще». Работа с ИИ – это диалог, а не команда.
- Всегда проверяйте и тестируйте сгенерированный код. Относитесь к коду от ИИ как к коду от нового, очень талантливого, но иногда невнимательного стажера. Он может содержать тонкие логические ошибки или не учитывать все крайние случаи. Финальная ответственность всегда на вас.
- Используйте ИИ для изучения нового. Вместо того чтобы искать ответ на Stack Overflow, попробуйте спросить у нейросети: «Я хочу изучить [название технологии]. Составь мне учебный план на 7 дней. Включи теорию, практические задания и ссылки на лучшие ресурсы». Качественный промпт может превратить ИИ в персонального ментора.
- Просите сгенерировать код с комментариями. Добавив в промпт простое требование «добавь подробные комментарии, объясняющие логику каждого шага», вы получаете не просто код, а обучающий материал. Это особенно полезно при генерации сложных алгоритмов или регулярных выражений.