Взаимодействие с нейросетями для создания кода часто напоминает разговор с гениальным, но очень рассеянным стажером. Он может решить сложнейшую задачу за секунды или полностью проигнорировать ключевое требование. В этой статье собраны практические промпты для написания программ, которые помогут превратить этот хаос в управляемый и предсказуемый процесс.
Многие разработчики уже столкнулись с тем, что ИИ выдает или слишком общий, или нерабочий код. Причина почти всегда кроется не в возможностях модели, а в качестве поставленной задачи. Здесь нет волшебства, только точные инструкции.
Этот материал создан, чтобы вы перестали бороться с нейросетью и начали получать от нее пользу. Внутри вы найдете:
- Типичные ошибки, которые допускают 9 из 10 разработчиков.
- Готовые шаблоны запросов для разных задач: от простых скриптов до работы с базами данных.
- Приемы, которые заставят ИИ думать как опытный программист.
- Неочевидные советы по отладке и оптимизации кода с помощью нейросетей.
Частые ошибки, из-за которых промпты для написания программ не работают
Прежде чем переходить к готовым решениям, важно понять, что обычно идет не так. Многие наступают на одни и те же грабли, тратя часы на получение результата, который можно было бы получить за минуты. Избегание этих ошибок – уже половина успеха.
- Просить написать "программу для X" без деталей. Нейросеть не может читать мысли и не знает вашего контекста, поэтому она выдаст самый шаблонный и бесполезный вариант из возможных.
- Не указывать язык программирования, фреймворки и версии. Запрос "напиши скрипт для парсинга сайта" без указания Python 3.11 и библиотеки BeautifulSoup – это лотерея с очень низкими шансами на выигрыш.
- Забывать о формате вывода. Если не попросить ИИ обернуть код в нужный формат, снабдить комментариями или предоставить инструкцию по запуску, вы получите просто "стену текста", с которой придется разбираться самостоятельно.
- Пытаться сгенерировать все приложение одним запросом. Это самая распространенная и провальная стратегия. Большие задачи нужно разбивать на мелкие, решаемые функции или модули, и генерировать их последовательно.
- Слепо доверять сгенерированному коду. Любой код от ИИ – это черновик, который требует проверки, тестирования и, скорее всего, доработки. Рассматривать его как готовый к запуску продукт – прямой путь к проблемам с безопасностью и производительностью.
- Не предоставлять примеры. Если вам нужен код в определенном стиле или структура данных определенного формата, самый простой способ этого добиться – показать нейросети пример того, что вы хотите получить.
- Игнорировать ограничения и требования к безопасности. Просить написать функцию для обработки пользовательского ввода, не упомянув необходимость валидации и защиты от инъекций, – неоправданный риск.
Сравнение слабых и сильных запросов для генерации кода
Разница между работающим и неработающим промптом – в деталях. Нагляднее всего это демонстрирует прямое сравнение. Ниже приведена таблица, которая показывает, как незначительные уточнения кардинально меняют качество результата.
| Задача | Слабый промпт (что обычно пишут) | Сильный промпт (что нужно писать) |
| Написать функцию для валидации почты | Напиши функцию для проверки email на JavaScript. | Ты – опытный frontend-разработчик. Напиши функцию на чистом JavaScript (ES6), которая проверяет валидность email-адреса. Функция должна принимать на вход строку и возвращать true или false. Используй регулярное выражение. Добавь комментарии, объясняющие логику работы выражения. Не используй сторонние библиотеки. |
| Сгенерировать SQL-запрос | Нужен SQL, чтобы достать пользователей. | Ты – аналитик баз данных. Напиши SQL-запрос для СУБД PostgreSQL. Мне нужно выбрать всех пользователей из таблицы `users`, которые зарегистрировались за последний месяц и подтвердили свою почту (`is_verified = true`). Результат отсортируй по дате регистрации (`registration_date`) от новых к старым. Выведи только поля `id`, `username` и `email`. |
| Создать простой веб-сервер | Сделай сервер на Python. | Ты – backend-разработчик. Создай простой веб-сервер на Python 3.10 с использованием фреймворка Flask. Сервер должен иметь один маршрут (`/api/status`), который по GET-запросу возвращает JSON-объект `{“status”: “ok”}`. Весь код должен быть в одном файле. Добавь инструкцию по установке зависимостей и запуску сервера в консоли. |
| Рефакторинг кода | Улучши этот код. [далее вставлен кусок кода] | Ты – эксперт по качеству кода и рефакторингу. Проанализируй этот код на языке Python. Твоя задача – улучшить его читаемость, производительность и соответствие стандарту PEP 8. Объясни каждое изменение, которое ты вносишь, и предоставь финальную версию кода. Обрати особое внимание на “магические числа” и длинные функции. [далее вставлен кусок кода] |
28 практических промптов для написания программ и работы с кодом
Ниже собраны готовые к использованию шаблоны запросов для нейросети. Они помогут автоматизировать рутинные задачи, быстро создавать прототипы, находить ошибки и улучшать качество вашего кода. Просто скопируйте, вставьте свои данные и получите результат.
1. Генерация функции с четкими требованиями
Проблема: Нужно быстро написать небольшую, но специфическую функцию, а тратить время на поиск синтаксиса или вспоминание деталей не хочется.
Решение: Промпт дает ИИ точные инструкции о языке, входных/выходных данных и основном алгоритме.
Текст промпта:
*****
Ты – разработчик на [укажите язык программирования, например, “Python”]. Твоя задача – написать функцию с названием [укажите название функции, например, “calculate_factorial”].
Функция должна:
- Принимать на вход [опишите входные параметры, например, “одно целое неотрицательное число
n“]. - Выполнять [опишите логику работы, например, “вычислять факториал числа
nрекурсивным методом”]. - Возвращать [опишите возвращаемое значение, например, “результат вычисления в виде целого числа”].
Ограничения:
- Не используй сторонние библиотеки.
- Если на вход подано отрицательное число, функция должна вызывать исключение [укажите тип исключения, например, “ValueError”] с сообщением “Число не может быть отрицательным”.
- Добавь к функции строку документации (docstring) в стиле [укажите стиль, например, “Google Style”], объясняющую ее назначение, параметры и возвращаемое значение.
Предоставь только код функции без дополнительных объяснений.
*****
Почему это работает: Запрос содержит все ключевые элементы: роль, задачу, контекст (язык, параметры), формат вывода (только код, docstring) и ограничения (обработка ошибок). Это не оставляет ИИ пространства для неверных интерпретаций.
2. Создание регулярного выражения с объяснением
Проблема: Составление “регулярок” – задача, которую многие не любят. Синтаксис сложен, а отладка занимает много времени.
Решение: Промпт перекладывает эту задачу на ИИ, требуя не только само выражение, но и подробное объяснение его работы.
Текст промпта:
*****
Ты – эксперт по регулярным выражениям. Мне нужно составить регулярное выражение для [укажите язык/среду, например, “JavaScript”].
Выражение должно находить [опишите, что нужно найти, например, “шестнадцатеричные цветовые коды (HEX) в формате #RRGGBB или #RGB”].
Твоя задача:
- Написать само регулярное выражение.
- Предоставить пошаговое объяснение каждого компонента выражения в виде таблицы с двумя колонками: “Компонент” и “Описание”.
- Привести 3 примера строк, которые соответствуют выражению, и 2 примера, которые не соответствуют.
Формат ответа: сначала выражение, потом таблица с объяснением, затем примеры.
*****
Почему это работает: Требование объяснить каждый компонент заставляет ИИ более тщательно подходить к созданию выражения. Примеры помогают сразу проверить его корректность.
3. Написание SQL-запроса для извлечения данных
Проблема: Нужно составить сложный SQL-запрос с несколькими соединениями, фильтрами и группировкой, но вы не уверены в синтаксисе.
Решение: Промпт предоставляет ИИ структуру базы данных и четкие критерии выборки.
Текст промпта:
*****
Ты – опытный аналитик баз данных, работающий с [укажите СУБД, например, “PostgreSQL”].
Вот структура таблиц:
-
users(id, name, registration_date) -
orders(id, user_id, amount, created_at) -
products(id, name, price) -
order_items(order_id, product_id, quantity)
Твоя задача – написать один SQL-запрос, который выберет [опишите, что нужно выбрать, например, “топ-5 пользователей по общей сумме их заказов за последний квартал”].
Требования к запросу:
- Учитывать только заказы со статусом [укажите статус, если есть, например, “
status = 'completed'в таблицеorders“]. - Результат должен содержать следующие поля: [перечислите поля, например, “
user_id,user_name,total_spent“]. - Отсортировать результат по убыванию общей суммы.
Предоставь только готовый SQL-код.
*****
Почему это работает: Предоставление схемы данных (даже упрощенной) дает ИИ необходимый контекст. Четкое описание полей, условий и сортировки исключает двусмысленность.
4. Рефакторинг существующего кода
Проблема: Есть кусок кода, который работает, но выглядит запутанно, неэффективно или не соответствует стандартам.
Решение: Промпт просит ИИ выступить в роли ревьюера, улучшить код и объяснить свои действия.
Текст промпта:
*****
Ты – ведущий разработчик и эксперт по качеству кода. Твоя специализация – [укажите язык, например, “Python”].
Проанализируй следующий код:
[вставьте ваш код сюда]
Твоя задача – провести его рефакторинг, чтобы:
- Улучшить читаемость и структуру.
- Оптимизировать производительность, если это возможно без изменения логики.
- Привести код в соответствие со стандартом [укажите стандарт, например, “PEP 8”].
- Заменить “магические числа” и строки на именованные константы.
Предоставь ответ в следующем формате:
- Краткий список основных проблем в исходном коде.
- Полностью переписанный, улучшенный код.
- Таблица с объяснением изменений, где в одной колонке – “Что было”, а в другой – “Что стало и почему”.
*****
Почему это работает: Запрос не просто просит “улучшить код”, а задает конкретные критерии: читаемость, производительность, стандарты. Требование объяснить изменения помогает понять логику улучшений.
5. Генерация файла конфигурации
Проблема: Нужно создать файл конфигурации для инструмента (Docker, Nginx, Webpack), но вы не помните все директивы и их синтаксис.
Решение: Промпт описывает желаемую конфигурацию на естественном языке, а ИИ переводит это в нужный формат.
Текст промпта:
*****
Ты – DevOps-инженер с большим опытом. Твоя задача – создать файл конфигурации для [укажите инструмент, например, “Nginx”].
Вот требования к конфигурации:
- Сервер должен слушать порт [укажите порт, например, “80”].
- Все запросы к
site.comдолжны перенаправляться наwww.site.comс кодом 301. - Статические файлы (css, js, jpg, png) из папки
/static/должны отдаваться напрямую и кешироваться в браузере на [укажите срок, например, “7 дней”]. - Все остальные запросы должны проксироваться на бэкенд, работающий по адресу [укажите адрес, например, “http://127.0.0.1:8000”].
- Добавь комментарии к каждому блоку конфигурации, объясняющие его назначение.
Предоставь только содержимое файла конфигурации.
*****
Почему это работает: Описание требований в виде списка позволяет ИИ последовательно обработать каждый пункт и сгенерировать корректную и хорошо структурированную конфигурацию.
6. Объяснение фрагмента кода
Проблема: Вы столкнулись с чужим или старым кодом и не можете быстро понять, что он делает и как работает.
Решение: Промпт просит ИИ выступить в роли наставника и объяснить код простым языком.
Текст промпта:
*****
Ты – опытный программист и наставник. Твоя задача – объяснить, как работает следующий фрагмент кода на языке [укажите язык].
Код:
[вставьте сюда непонятный код]
Твой ответ должен содержать:
- Общее описание: что делает этот код в целом (1-2 предложения).
- Пошаговое объяснение: опиши логику работы кода строка за строкой или по логическим блокам.
- Контекст: для каких задач обычно используется подобный код?
- Возможные риски: есть ли в этом коде потенциальные проблемы или узкие места (например, с производительностью или безопасностью)?
Говори простым языком, как если бы ты объяснял это младшему коллеге.
*****
Почему это работает: Запрос требует не просто пересказать код, а дать комплексный анализ: общая суть, пошаговая логика, контекст применения и потенциальные риски. Это дает полное понимание.
7. Перевод кода с одного языка на другой
Проблема: Есть работающий алгоритм на одном языке программирования, и его нужно быстро портировать на другой.
Решение: Промпт задает языки и требует сохранить логику, а также учесть идиомы нового языка.
Текст промпта:
*****
Ты – полиглот-программист, в совершенстве владеющий [язык 1, например, “Python”] и [язык 2, например, “Go”].
Твоя задача – перевести следующий код с [язык 1] на [язык 2].
Исходный код на [язык 1]:
[вставьте исходный код]
Требования к результату:
- Логика работы должна быть полностью сохранена.
- Код на [язык 2] должен быть идиоматичным, то есть соответствовать принятым в этом языке практикам и стилю.
- Сохрани названия переменных и функций, если это возможно.
- Если в [языке 2] нет прямого аналога какой-либо конструкции из [языка 1], используй наиболее подходящую альтернативу и добавь комментарий с объяснением.
Предоставь только переведенный код на [языке 2].
*****
Почему это работает: Указание на “идиоматичность” кода – ключевой момент. Это заставляет ИИ не просто делать дословный перевод, а писать так, как написал бы опытный разработчик на целевом языке.
8. Генерация тестовых данных (мок-данных)
Проблема: Для тестирования или разработки интерфейса нужны реалистичные, но вымышленные данные в определенном формате.
Решение: Промпт описывает структуру данных и количество необходимых записей.
Текст промпта:
*****
Ты – генератор тестовых данных. Мне нужен массив объектов в формате JSON.
Сгенерируй [укажите количество, например, “10”] объектов, представляющих [опишите сущность, например, “пользователей интернет-магазина”].
Каждый объект должен иметь следующую структуру и типы данных:
-
id: уникальный идентификатор (целое число). -
fullName: полное имя (строка, русские имена). -
email: валидный email-адрес (строка). -
lastLogin: дата последнего входа в формате ISO 8601 (строка). -
orderCount: количество заказов (целое число от 0 до 50). -
isActive: статус активности (булево значение).
Данные должны выглядеть реалистично. Предоставь только готовый JSON-массив.
*****
Почему это работает: Четкое описание структуры, типов данных и даже культурного контекста (русские имена) позволяет получить на выходе 바로 готовый к использованию набор данных.
9. Написание скрипта для автоматизации рутины
Проблема: Каждый день приходится выполнять одну и ту же последовательность действий вручную (например, переименовывать файлы).
Решение: Промпт описывает задачу автоматизации и просит написать для нее скрипт.
Текст промпта:
*****
Ты – инженер по автоматизации. Напиши скрипт на [укажите язык, например, “Bash”] для автоматизации следующей задачи.
Задача: [опишите задачу, например, “В текущей директории найти все файлы с расширением .jpeg и переименовать их в .jpg”].
Требования к скрипту:
- Скрипт должен работать в среде [укажите ОС, например, “Linux/macOS”].
- Он должен быть безопасным и не затрагивать файлы с другими расширениями.
- Перед выполнением переименования скрипт должен выводить в консоль сообщение о том, сколько файлов будет переименовано.
- Добавь комментарии, объясняющие ключевые команды.
Предоставь только код скрипта.
*****
Почему это работает: Промпт фокусируется на конкретной, измеримой задаче автоматизации и включает требования к безопасности и обратной связи (вывод в консоль), что делает скрипт более надежным.
10. Генерация кода для работы с API
Проблема: Нужно взаимодействовать со сторонним API, но нет времени читать всю документацию, чтобы написать базовый запрос.
Решение: Промпт описывает конечную точку API, метод запроса и ожидаемый результат.
Текст промпта:
*****
Ты – backend-разработчик на [укажите язык, например, “JavaScript с использованием Node.js и библиотеки axios”].
Напиши асинхронную функцию, которая отправляет [укажите метод, например, “GET-запрос”] на конечную точку API: [вставьте URL конечной точки].
Требования:
- Функция должна принимать в качестве параметра [опишите параметры, например, “объект с параметрами запроса (query parameters)”].
- Необходимо передать заголовок
Authorizationсо значениемBearer [ВАШ_ТОКЕН]. - Функция должна обрабатывать успешный ответ, извлекать из него данные из поля
dataи возвращать их. - В случае ошибки (статус ответа не 2xx) функция должна логировать ошибку в консоль и возвращать
null. - Добавь пример вызова этой функции.
*****
Почему это работает: Запрос включает все необходимые для работы с API детали: URL, метод, заголовки, обработку успеха и ошибки. Это позволяет сгенерировать практически готовый к использованию фрагмент кода.
11. Создание заготовки HTML/CSS
Проблема: Нужно быстро сверстать прототип компонента интерфейса (кнопка, карточка, форма), не отвлекаясь на написание HTML-структуры и CSS-стилей с нуля.
Решение: Промпт описывает внешний вид и структуру компонента, а ИИ генерирует соответствующий код.
Текст промпта:
*****
Ты – frontend-разработчик, эксперт по HTML и CSS. Создай HTML-структуру и CSS-стили для [опишите компонент, например, “карточки товара”].
Требования к компоненту:
- Карточка должна содержать: изображение товара, название, короткое описание и кнопку “Добавить в корзину”.
- Используй семантическую верстку (теги
figure,figcaptionи т.д.). - Стили должны быть написаны на чистом CSS без использования фреймворков.
- При наведении курсора на карточку должна появляться легкая тень (эффект
box-shadow). - Кнопка должна менять цвет фона при наведении.
- Код должен быть разделен на два блока: HTML и CSS.
*****
Почему это работает: Детальное описание структуры и интерактивных элементов (эффекты при наведении) позволяет ИИ создать не просто “коробку”, а стилизованный и готовый к использованию компонент.
12. Генерация модульных тестов (Unit Tests)
Проблема: Написание тестов – важная, но часто утомительная задача. Нужно покрыть тестами существующую функцию.
Решение: Промпт предоставляет код функции и просит написать для нее тесты, включая пограничные случаи.
Текст промпта:
*****
Ты – инженер по качеству (QA Engineer), специализирующийся на автоматизированном тестировании. Используй [укажите фреймворк для тестирования, например, “Jest для JavaScript” или “pytest для Python”].
Вот функция, которую нужно протестировать:
[вставьте код вашей функции]
Твоя задача – написать набор модульных тестов для этой функции. Тесты должны покрывать следующие случаи:
- Основной (“счастливый”) сценарий работы.
- Пограничные значения (например, 0, -1, пустые строки, null).
- Случаи, когда функция должна выбрасывать ошибку.
Предоставь только код тестов.
*****
Почему это работает: Запрос явно указывает на необходимость тестирования не только “хороших” данных, но и пограничных, и ошибочных случаев. Это залог создания надежного набора тестов.
13. Оптимизация производительности кода
Проблема: Фрагмент кода работает слишком медленно, и нужно найти способ его ускорить.
Решение: Промпт просит ИИ проанализировать код на предмет узких мест и предложить оптимизированную версию.
Текст промпта:
*****
Ты – эксперт по оптимизации производительности на языке [укажите язык, например, “Python”].
Проанализируй следующий код на предмет узких мест в производительности:
[вставьте медленный код]
Твоя задача:
- Определить, какие операции в этом коде являются наиболее ресурсоемкими.
- Предложить и написать оптимизированную версию этого кода, сохраняя его логику.
- Объяснить, за счет чего достигнуто ускорение (например, “замена цикла на векторизованную операцию”, “использование более эффективной структуры данных”).
Формат ответа: сначала объяснение, затем оптимизированный код.
*****
Почему это работает: Промпт заставляет ИИ не просто переписывать код, а анализировать его и обосновывать свои решения, что помогает понять принципы оптимизации и применить их в будущем.
14. Добавление комментариев и документации
Проблема: Есть код без единого комментария, и его нужно быстро задокументировать, чтобы в нем могли разобраться другие.
Решение: Промпт просит ИИ проанализировать код и добавить к нему понятные комментарии и строки документации.
Текст промпта:
*****
Ты – технический писатель, который помогает разработчикам документировать код.
Твоя задача – добавить комментарии и строку документации (docstring) к следующей функции на [укажите язык]:
[вставьте код без комментариев]
Требования:
- Добавь строку документации в стиле [укажите стиль, например, “JSDoc” или “reStructuredText”], описывающую назначение функции, ее параметры и возвращаемое значение.
- Добавь внутри функции строчные комментарии, объясняющие сложные или неочевидные участки кода.
- Комментарии должны быть краткими и по делу.
Предоставь только финальный код с добавленными комментариями и документацией.
*****
Почему это работает: Задание роли “технического писателя” и указание конкретного формата документации помогает получить структурированный и профессионально оформленный результат.
15. Поиск и исправление ошибок (Debugging)
Проблема: Код не работает, выдает ошибку, а причина не очевидна.
Решение: Промпт предоставляет ИИ код и сообщение об ошибке, прося найти причину и предложить исправление. Ведь что может быть лучше, чем переложить отладку на машину? По крайней мере, попытаться.
Текст промпта:
*****
Ты – опытный отладчик. У меня есть код на [укажите язык], который не работает.
Вот код:
[вставьте ваш проблемный код]
При его выполнении я получаю следующую ошибку:
[вставьте полное сообщение об ошибке, включая трассировку стека]
Твоя задача:
- Объяснить простым языком, в чем причина этой ошибки.
- Предложить исправленную версию кода.
- Пояснить, почему предложенное исправление решает проблему.
*****
Почему это работает: Предоставление полного сообщения об ошибке (особенно трассировки стека) – это ключ. Оно дает ИИ точные указания на место и тип проблемы, позволяя дать целевой, а не общий совет.
16. Генерация класса по описанию
Проблема: Нужно спроектировать класс с определенными полями и методами, соблюдая принципы объектно-ориентированного программирования.
Решение: Промпт описывает сущность, которую должен представлять класс, его свойства и поведение.
Текст промпта:
*****
Ты – архитектор программного обеспечения, проектирующий классы на [укажите язык, например, “Java”].
Создай класс с названием [укажите название, например, “BankAccount”].
Класс должен представлять банковский счет и иметь:
- Свойства (поля): [перечислите, например, “
ownerName(String),accountNumber(String, приватное),balance(double, приватное)”]. - Конструктор, принимающий имя владельца и начальный баланс. Номер счета должен генерироваться автоматически внутри конструктора как случайная строка.
- Методы: [перечислите, например, “
deposit(double amount)для пополнения,withdraw(double amount)для снятия,getBalance()для получения баланса”]. - Метод
withdrawдолжен проверять, достаточно ли средств на счете, и возвращатьfalse, если нет.
Все поля должны быть инкапсулированы (используй приватные поля и публичные методы доступа). Предоставь только код класса.
*****
Почему это работает: Запрос явно указывает на необходимость соблюдения принципов ООП (инкапсуляция), что направляет ИИ на создание правильно спроектированного, а не просто работающего кода.
17. Разбор и обработка данных (Parsing)
Проблема: Есть данные в одном формате (например, CSV), и их нужно преобразовать в другой (например, массив объектов).
Решение: Промпт предоставляет пример входных данных и описывает желаемую структуру на выходе.
Текст промпта:
*****
Ты – специалист по обработке данных на [укажите язык, например, “Python с использованием библиотеки pandas”].
У меня есть данные в формате [укажите формат, например, “CSV-строки”]. Мне нужно написать функцию, которая их разбирает.
Пример входных данных:
[вставьте пример, например, "id,name,agen1,Иван,30n2,Мария,25"]
Функция должна принимать на вход строку с этими данными и возвращать [опишите выходной формат, например, “список словарей, где каждый словарь представляет одну строку”].
Пример желаемого результата для входа выше:
[{"id": "1", "name": "Иван", "age": "30"}, {"id": "2", "name": "Мария", "age": "25"}]
Не используй внешние файлы, функция должна работать со строкой. Предоставь только код функции.
*****
Почему это работает: Принцип “покажи, а не расскажи” здесь работает идеально. Предоставление конкретных примеров входа и выхода снимает любую двусмысленность в задаче.
18. Написание Dockerfile
Проблема: Нужно “упаковать” приложение в Docker-контейнер, но написание Dockerfile с нуля кажется сложным.
Решение: Промпт описывает стек технологий приложения и шаги, необходимые для его сборки и запуска.
Текст промпта:
*****
Ты – DevOps-инженер, эксперт по контейнеризации. Напиши многошаговый Dockerfile для [опишите приложение, например, “приложения на Node.js 18”].
Требования к Dockerfile:
- Используй официальный образ [например, “node:18-alpine”] в качестве базового.
- На первом шаге (сборка) скопируй
package.jsonиpackage-lock.json, установи зависимости с помощьюnpm ci. - Затем скопируй остальные исходные файлы и выполни сборку проекта командой
npm run build. - На втором шаге (финальный образ) используй легковесный базовый образ, скопируй собранные артефакты с первого шага.
- Приложение запускается командой [например, “
node dist/main.js“]. - Контейнер должен работать от имени непривилегированного пользователя.
Добавь комментарии, объясняющие каждый шаг.
*****
Почему это работает: Указание на многошаговую сборку (multi-stage build) – это профессиональный подход, который ИИ поймет и реализует. Это позволяет создать легковесный и безопасный финальный образ.
19. Анализ сложности алгоритма (Big O)
Проблема: Нужно оценить производительность алгоритма, но вы не уверены в правильности анализа его временной и пространственной сложности.
Решение: Промпт просит ИИ выступить в роли ученого-информатика и провести анализ сложности.
Текст промпта:
*****
Ты – эксперт по алгоритмам и структурам данных. Проанализируй следующую функцию на [укажите язык] и определи ее сложность.
Код функции:
[вставьте код функции]
Твой ответ должен содержать:
- Временную сложность (Time Complexity) в нотации “Большого О” (Big O) для худшего, среднего и лучшего случаев.
- Пространственную сложность (Space Complexity) в нотации “Большого О”.
- Подробное объяснение, как ты пришел к таким выводам, с анализом каждой операции внутри функции.
*****
Почему это работает: Запрос требует не просто дать ответ (например, O(n²)), а детально обосновать его. Это заставляет ИИ провести реальный анализ, а не угадывать, и помогает вам понять логику оценки.
20. Генерация скрипта для миграции базы данных
Проблема: Нужно изменить схему базы данных (добавить таблицу, изменить столбец), и для этого требуется написать скрипт миграции.
Решение: Промпт описывает начальное и конечное состояние схемы данных.
Текст промпта:
*****
Ты – администратор баз данных. Напиши SQL-скрипт для миграции схемы в [укажите СУБД, например, “MySQL”].
Описание изменений:
- Задача: [опишите общую задачу, например, “Добавить поддержку “мягкого удаления” для пользователей”].
- В таблицу
usersнеобходимо добавить новый столбецdeleted_atс типомTIMESTAMPи значением по умолчаниюNULL. - Также необходимо добавить индекс для этого нового столбца.
- Все существующие записи в таблице
usersдолжны остаться без изменений.
Предоставь только SQL-код для выполнения этой миграции.
*****
Почему это работает: Четкое описание изменений в формате “что и где нужно сделать” позволяет ИИ сгенерировать точный и синтаксически корректный DDL-скрипт.
21. Выбор подходящей структуры данных
Проблема: Для решения задачи нужно выбрать наиболее эффективную структуру данных, но вы сомневаетесь между несколькими вариантами.
Решение: Промпт описывает задачу и просит ИИ порекомендовать структуру данных, сравнив альтернативы.
Текст промпта:
*****
Ты – архитектор ПО и эксперт по структурам данных. Я разрабатываю [опишите систему, например, “кэш для часто запрашиваемых данных с ограничением по размеру”] на языке [укажите язык].
Требования к системе:
- Быстрая вставка элементов.
- Быстрый поиск элемента по ключу.
- При переполнении кэша должен удаляться самый давно неиспользовавшийся элемент (LRU-стратегия).
Сравни [перечислите варианты, например, “хэш-таблицу (словарь), связанный список и их комбинацию”] для решения этой задачи. Порекомендуй лучшую структуру данных или их комбинацию и объясни, почему она наиболее эффективна в данном случае. Опиши сложность основных операций (вставка, поиск, удаление) для рекомендованного варианта.
*****
Почему это работает: Запрос заставляет ИИ провести сравнительный анализ, а не давать первый попавшийся ответ. Описание конкретных операций (вставка, поиск) и стратегии (LRU) дает четкие критерии для выбора.
22. Разработка API-маршрутов (endpoints)
Проблема: Нужно спроектировать RESTful API для новой сущности, описав все маршруты, методы и форматы данных.
Решение: Промпт просит ИИ выступить в роли бэкенд-архитектора и спроектировать CRUD-операции.
Текст промпта:
*****
Ты – архитектор RESTful API. Спроектируй API-маршруты для управления сущностью “[название сущности, например, “Статья в блоге”]”.
Сущность “Статья” имеет следующие поля: id, title, content, author_id, created_at, updated_at.
Твоя задача – описать в виде таблицы стандартные CRUD-операции (Create, Read, Update, Delete).
Таблица должна содержать колонки:
- “Операция” (например, “Получить все статьи”).
- “HTTP Метод” (GET, POST, PUT, DELETE).
- “Маршрут” (например, “/articles”).
- “Тело запроса (JSON)” (если применимо).
- “Успешный ответ (JSON и статус)” (например, “200 OK, массив статей”).
Опиши маршруты для получения списка, получения одной статьи по ID, создания, полного обновления и удаления статьи.
*****
Почему это работает: Запрос на табличный формат заставляет ИИ структурировать информацию и не упустить ни одной детали: метод, маршрут, тело запроса и формат ответа для каждой операции.
23. Объяснение паттерна проектирования на примере
Проблема: Вы слышали о паттерне проектирования, но не до конца понимаете, как и когда его применять.
Решение: Промпт просит ИИ объяснить паттерн на конкретном, практическом примере.
Текст промпта:
*****
Ты – опытный разработчик и евангелист паттернов проектирования.
Объясни паттерн проектирования “[название паттерна, например, “Фабричный метод” (Factory Method)]” на языке [укажите язык, например, “C#”].
Твой ответ должен включать:
- Краткое описание проблемы, которую решает этот паттерн.
- Аналогию из реальной жизни, чтобы объяснить его суть.
- Пример кода на [язык], демонстрирующий реализацию паттерна. Пример должен быть практическим, например, [приведите контекст, “создание разных типов документов (отчет, презентация) в приложении”].
- Список преимуществ и недостатков использования этого паттерна.
*****
Почему это работает: Требование привести аналогию из реальной жизни и практический пример кода делает объяснение абстрактного паттерна гораздо более понятным и запоминающимся.
24. Генерация файла для сборщика проектов (напр., pom.xml)
Проблема: Нужно создать конфигурационный файл для системы сборки (Maven, Gradle, etc.), перечислив все необходимые зависимости.
Решение: Промпт перечисляет нужные библиотеки и плагины, а ИИ формирует корректный файл.
Текст промпта:
*****
Ты – Java-разработчик. Создай файл `pom.xml` для проекта на Maven.
Требования к проекту:
- Группа:
com.example. - Артефакт:
my-app. - Версия:
1.0-SNAPSHOT. - Используемая версия Java:
17. - Зависимости: [перечислите зависимости, например, “Spring Boot Starter Web 3.1.5, Lombok (опционально), Spring Boot Starter Data JPA”].
- Плагины: [перечислите плагины, например, “Spring Boot Maven Plugin для создания исполняемого jar-файла”].
Предоставь только содержимое файла pom.xml.
*****
Почему это работает: Перечисление зависимостей и плагинов в виде списка – это прямой и недвусмысленный приказ для ИИ. Он просто возьмет эту информацию и обернет ее в правильный XML-синтаксис.
25. Написание скрипта для CI/CD
Проблема: Нужно настроить конвейер непрерывной интеграции и доставки, но синтаксис YAML-файлов для GitLab CI, GitHub Actions и т.д. вызывает трудности.
Решение: Промпт описывает шаги конвейера: сборка, тестирование, развертывание.
Текст промпта:
*****
Ты – DevOps-инженер, настраивающий CI/CD. Создай файл конфигурации для [укажите систему, например, “GitHub Actions (.github/workflows/main.yml)”].
Конвейер предназначен для [опишите проект, например, “веб-приложения на React”] и должен запускаться при каждом push в ветку main.
Конвейер должен состоять из следующих шагов (jobs):
-
build: установка зависимостей (npm ci) и сборка проекта (npm run build). -
test: запуск тестов (npm test) после успешной сборки. -
deploy: развертывание собранных файлов на [укажите хостинг, например, “GitHub Pages”] только в случае успеха шаговbuildиtest.
Используй рекомендуемые экшены (actions) из маркетплейса GitHub. Добавь комментарии к каждому шагу.
*****
Почему это работает: Разбивка конвейера на логические шаги (`build`, `test`, `deploy`) и указание зависимостей между ними позволяет ИИ сгенерировать правильный и логичный YAML-файл, соответствующий стандартам выбранной CI/CD-платформы.
26. Создание “шпаргалки” (cheatsheet) по технологии
Проблема: Вы начинаете работать с новой библиотекой, фреймворком или инструментом и хотите иметь под рукой краткий справочник по основным командам и концепциям.
Решение: Промпт просит ИИ структурировать ключевую информацию в виде удобной шпаргалки.
Текст промпта:
*****
Ты – технический писатель, создающий обучающие материалы. Создай шпаргалку (cheatsheet) по [укажите технологию, например, “командам Git”].
Шпаргалка должна быть структурирована по разделам:
- Начало работы (инициализация репозитория, клонирование).
- Основные операции (добавление, коммит, просмотр статуса).
- Работа с ветками (создание, переключение, слияние, удаление).
- Взаимодействие с удаленным репозиторием (push, pull, fetch).
- Отмена изменений (reset, revert).
Для каждой команды предоставь краткое описание и пример использования. Оформи ответ в виде хорошо читаемого списка.
*****
Почему это работает: Запрос на конкретную структуру (разделы) и формат (команда + описание + пример) превращает потенциально хаотичный набор информации в полезный и удобный для использования справочный материал.
27. Адаптация кода для другой версии/среды
Проблема: Есть старый код, который перестал работать после обновления языка, библиотеки или операционной системы.
Решение: Промпт предоставляет код и информацию о старой и новой среде, прося обновить его.
Текст промпта:
*****
Ты – опытный разработчик, занимающийся поддержкой и обновлением легаси-кода.
Следующий код был написан для [укажите старую среду, например, “Python 2.7”], а мне нужно запустить его на [укажите новую среду, например, “Python 3.11”].
Исходный код:
[вставьте старый код]
Твоя задача – адаптировать этот код для новой среды. Обрати внимание на [перечислите известные несовместимости, например, “синтаксис print“, “деление целых чисел”, “обработка Unicode-строк”].
Предоставь обновленную версию кода и краткий список внесенных изменений с объяснениями.
*****
Почему это работает: Указание конкретных версий “до” и “после” дает ИИ четкий вектор для анализа. Перечисление известных “болевых точек” при миграции помогает ему сфокусироваться на самых важных изменениях.
28. Написание простого бенчмарка
Проблема: Есть две реализации одного и того же алгоритма, и нужно объективно сравнить их производительность.
Решение: Промпт просит написать код, который замерит время выполнения обеих функций на большом объеме данных. Конечно, ведь самый надежный способ – проверить все самому, а не верить на слово.
Текст промпта:
*****
Ты – инженер по производительности. Напиши код на [укажите язык, например, “Python”], который сравнит производительность двух функций.
Вот две функции для сравнения:
# Функция 1
[вставьте код первой функции]
# Функция 2
[вставьте код второй функции]
Твой скрипт должен:
- Подготовить тестовые данные [опишите данные, например, “список из 1,000,000 случайных чисел”].
- Выполнить каждую функцию [укажите количество раз, например, “10 раз”] и замерить среднее время выполнения.
- Вывести в консоль результат в понятном виде, например: “Функция 1: X.XXX секунд, Функция 2: Y.YYY секунд”.
- Использовать стандартные средства языка для замера времени, без сторонних библиотек для бенчмаркинга.
*****
Почему это работает: Промпт задает научный подход к измерению: многократные запуски и усреднение результата. Это позволяет получить более стабильную и объективную оценку производительности, чем при единичном замере.
Продвинутые приемы для управления генерацией кода
Когда базовые запросы освоены, можно переходить на следующий уровень. Нейросети понимают не только прямые команды, но и различные модификаторы, которые позволяют тоньше настраивать результат. Знание этих приемов отличает новичка от опытного пользователя.
| Прием или команда | Описание и когда применять |
| Запрос “Думай пошагово” (Chain of Thought) | Добавьте в начало промпта фразу: “Прежде чем писать код, составь пошаговый план своих действий”. Это заставляет ИИ сначала продумать логику, что особенно полезно для сложных алгоритмов и многокомпонентных задач. |
| Ролевая модель “Эксперт-скептик” | Назначьте роль: “Ты – эксперт по безопасности, который ищет уязвимости”. Используйте это, когда хотите, чтобы ИИ проанализировал ваш код на предмет потенциальных дыр в безопасности, а не просто выполнял команды. |
| Требование альтернатив | Добавьте в конце: “Предложи 2-3 альтернативных способа решения этой задачи и сравни их по производительности и читаемости”. Полезно, когда вы ищете не просто рабочее, а оптимальное решение. |
| Указание на стиль кода | Четко пропишите: “Весь код должен соответствовать стилю [укажите, например, “Google Java Style Guide”]”. Это помогает поддерживать единообразие в кодовой базе, особенно при работе в команде. |
| Запрет на использование чего-либо | Используйте отрицательные инструкции: “Не используй рекурсию”, “Избегай использования библиотеки [название]”. Это полезно для наложения ограничений или для поиска решения без определенной зависимости. |
| Генерация с “заполнителем” (placeholder) | Попросите: “Сгенерируй шаблон функции, но вместо реальной логики оставь комментарий-заполнитель `// TODO: Implement business logic here`”. Удобно для быстрого создания каркаса модуля или класса. |
Неочевидные советы для эффективной работы
И в завершение – несколько советов, которые редко упоминаются в инструкциях, но которые могут значительно повысить вашу продуктивность при использовании ИИ для программирования.
- Начинайте чат с установки “системной роли”. В самом первом сообщении диалога напишите: “На протяжении всего нашего разговора ты будешь выступать в роли старшего Python-разработчика, эксперта по Django и PostgreSQL”. Это создает контекст для всей сессии и делает последующие ответы более точными.
- Используйте ИИ как “резинового утенка”. Если вы застряли, попробуйте объяснить свою проблему нейросети так, как объясняли бы коллеге. Часто в процессе формулирования вопроса вы сами находите решение. Если нет – ИИ может задать наводящий вопрос, который подтолкнет вас в нужную сторону.
- Просите не только код, но и команду для его проверки. После генерации скрипта или функции попросите: “А теперь напиши команду для терминала, чтобы я мог быстро проверить, как это работает”. Это экономит время на ручном создании тестовых вызовов.
- Сохраняйте удачные промпты в отдельный файл. Если какой-то запрос дал идеальный результат, не надейтесь, что вспомните его через неделю. Создайте свою личную библиотеку эффективных промптов для написания программ, и вы сможете повторно использовать их, экономя массу времени.
- Не бойтесь “торговаться” с нейросетью. Если первый ответ вас не устроил, не начинайте новый чат. Напишите: “Это не совсем то, что нужно. Перепиши код так, чтобы он использовал [другой подход]” или “Этот вариант слишком сложный, сделай его проще для понимания”. Итеративный подход часто дает лучшие результаты.
- Загружайте файлы вместо копирования текста. Если ваша модель ИИ поддерживает загрузку файлов, используйте эту возможность. Вместо того чтобы вставлять в чат огромные куски кода, загрузите файл и попросите его проанализировать. Это надежнее и удобнее.