Как писать код с помощью ИИ безопасно и эффективно
Ставьте задачу ИИ как коллеге и проверяйте его работу как ревьюер: промпты для отладки, нового кода, тестов и правила проверки.

ИИ-чат действительно полезен в программировании: он помогает разобраться в чужом коде, найти причину ошибки, написать шаблонные заготовки, набросать тесты и освоить новый язык или библиотеку. Но он также достаточно часто с уверенным видом выдает неверные ответы. Относитесь к каждому результату как к пулреквесту от быстрого, но невнимательного коллеги. В этом руководстве мы расскажем, как правильно формулировать запросы и как проверять полученный результат.
В чем ИИ-чат хорош при написании кода
- Объяснение кода: «разбери для меня эту функцию построчно».
- Отладка: анализ текста ошибки и трейса стека с предложением вероятных причин.
- Небольшие понятные функции: парсинг дат, валидация входных данных, преобразование структур.
- Шаблонный код: файлы конфигурации, разбор аргументов командной строки, простые обработчики API.
- Тесты: наброски модульных тестов, включая пограничные случаи, о которых вы могли забыть.
- Регулярные выражения, SQL и однострочники для терминала с подробным объяснением каждой части.
- Обучение: «я знаю Python; покажи, как это выглядит на Go, и объясни различия».
- Код-ревью: поиск проблем с читаемостью, пропущенной обработки ошибок и явных уязвимостей.
Хуже всего нейросети справляются с крупными архитектурными решениями, зависящими от всей кодовой базы, с самыми свежими версиями библиотек, о которых они могут не знать, а также со всем, что находится вне их поля зрения. В таком чате, как ChatG, ИИ видит только то, что вы отправили в сообщении. Он не может открыть ваши файлы или запустить код.
Как просить исправить ошибку
Большинство некачественных ответов связано с нехваткой контекста. Хороший запрос на отладку содержит пять пунктов: язык и версии, нужный фрагмент кода, полный текст ошибки, ожидаемое поведение в сравнении с реальным, а также то, что вы уже успели попробовать.
Плохо: Мой код не работает, почини. [вставлено 200 строк кода]
Хорошо: Python 3.12, pandas 2.x. Эта функция должна возвращать средний чек на одного клиента, но падает с ошибкой KeyError: 'customer_id'. Код: [вставьте только функцию и 5 строк исходных данных для примера] Полный трейс ошибки: [вставьте текст] Я проверил, колонка customer_id в CSV точно есть. В чем может быть дело? Объясни причину ошибки перед тем, как показывать исправленный код.
Сокращайте код до минимального примера, на котором воспроизводится проблема. Часто это помогает найти ошибку еще до отправки запроса и позволяет удерживать внимание на действительно важных строках. Вы можете открыть готовый запрос для отладки в чате и заполнить пропуски.
Как просить написать новый код
Составьте мини-спецификацию. Чем точнее вы опишете входные и выходные данные, а также граничные случаи, тем меньше придется переделывать вручную.
Напиши TypeScript-функцию slugify(title: string): string. - Только нижний регистр, только ASCII; транслитерируй популярные символы с диакритикой (например, é в e). - Замени любую последовательность небуквенно-цифровых знаков на один дефис. - Удали дефисы по краям; максимальная длина 60 символов, не обрезай слова посередине. - Без внешних библиотек. Затем напиши 8 модульных тестов на Vitest, включая пустую строку и входные данные со смайликами emoji.
Просите тесты сразу вместе с кодом. Если тесты от ИИ противоречат написанному им же коду, вы заметите нестыковку задолго до релиза.
Проверяйте всё перед отправкой в продакшен
Сгенерированный код может выглядеть аккуратно, но содержать ошибки. Возьмите за правило выполнять эти проверки:
- Запустите его. Никогда не добавляйте код в проект, не запустив сам код и тесты к нему.
- Убедитесь, что все методы и параметры существуют. ИИ иногда выдумывает функции, параметры или ключи конфигурации, либо берет их из устаревших версий. Сверяйтесь с официальной документацией именно той версии, которую вы используете.
- Проверяйте названия пакетов перед установкой. Специалисты по безопасности отмечают случаи, когда ИИ рекомендует несуществующие пакеты, а злоумышленники регистрируют такие имена с вредоносным кодом (атака, известная как «slopsquatting»). Убедитесь, что пакет действительно существует и поддерживается в официальном репозитории, прежде чем его устанавливать.
- Проверьте безопасность. Ищите конкатенацию строк в SQL-запросах, отсутствие валидации входных данных, отключенную проверку сертификатов, секреты в открытом виде и избыточные права доступа. Спросите ИИ напрямую: «Проверь этот код на уязвимости, предполагая, что любые входные данные отправлены злоумышленником».
- Разберитесь в логике до конца. Если вы не можете объяснить, как работает этот блок, спросите у чата или не принимайте код. Поддерживать его предстоит вам.
Не отправляйте в чат конфиденциальные данные
Никогда не вставляйте в ИИ-чат API-ключи, пароли, токены, приватные ключи или строки подключения к базам данных. Заменяйте их заглушками, например YOUR_API_KEY. Если вы случайно отправили реальный секрет на сторонний ресурс, сразу смените его.
Если вы пишете код для работодателя или клиента, ознакомьтесь с их правилами перед отправкой кода во внешние ИИ-сервисы. Многие компании разрешают использовать для закрытого кода только строго определенные инструменты. В сомнительных случаях сведите проблему к абстрактному примеру, в котором нет деталей вашего проекта. Подробнее об этом читайте в нашем руководстве по безопасности и приватности при работе с ИИ.
Полезные запросы для разработчиков
Объясни этот код разработчику, который знает [язык], но не знаком с этой библиотекой. Разбери его блок за блоком, а затем перечисли все, что выглядит рискованно или устарело. [вставьте код]
Проведи ревью этого diff как ведущий инженер. Сгруппируй замечания по разделам: баги, безопасность, производительность и читаемость. Избегай общих фраз и указывай конкретные строки. [вставьте diff]
Напиши регулярное выражение для [описание]. Объясни каждую часть, затем приведи 5 строк, которые должны совпасть, и 5 строк, которые совпадать не должны.
Я хорошо знаю Python и сейчас учу Rust. Покажи, как решить задачу [задача] на Rust, и объясни концепции владения и заимствования так, будто я слышу о них впервые.
Еще больше вариантов вы найдете в коллекции промптов для программирования. Для разовых задач подойдет инструмент ассистент по коду, который принимает описание или сниппет и возвращает готовое решение с пояснениями, а встроенный помощник по коду поможет вести весь диалог в фокусе разработки.
Частые ошибки
- Отправка проекта целиком. Огромные портянки текста скрывают суть проблемы и могут превысить лимит контекста, который ИИ способен обработать за раз. Присылайте только нужные файлы или функции.
- Исправления, которые лишь маскируют симптомы. Оборачивание всего кода в блок try/except убирает саму ошибку с экрана, но не ее причину. Спросите, из-за чего именно падает программа.
- Хождение по кругу. Если две или три попытки не увенчались успехом, остановитесь и смените подход: дайте больше контекста, уменьшите пример или начните новый чат с четким резюме проблемы.
- Умалчивание версий. API фреймворков меняются от релиза к релизу, поэтому всегда указывайте используемую версию.
- Игнорирование лицензий. Если ИИ скопировал узнаваемый кусок чужого открытого кода, обязательно проверьте его лицензию перед добавлением в проект.
Читайте также: как разработчики используют ChatG и общее руководство по составлению промптов.
Проверенный процесс работы
- Сначала опишите цель словами, без кода. Попросите два-три варианта реализации и сравните их плюсы и минусы, прежде чем переходить к коду.
- Выберите подход и запросите первый небольшой шаг. Проверять по одной функции или файлу за раз намного проще, чем оценивать всю фичу целиком.
- Запустите код и отправьте результат. Вставляйте реальный вывод или текст ошибки, а не абстрактное «не работает».
- Попросите написать тесты, а затем провести ревью. Вопрос «Какие пограничные случаи здесь упущены?» регулярно вскрывает скрытые баги.
- Пишите сообщение коммита сами. Если вы не можете кратко сформулировать, что изменилось и почему, значит, вы еще недостаточно хорошо понимаете эти правки.
Часто задаваемые вопросы
Может ли ИИ заменить полноценное обучение программированию?
Нет. Он ускоряет тех, кто уже умеет читать и оценивать код. Если вы не способны понять, правильный ли ответ вы получили, использовать его небезопасно. Используйте ИИ, чтобы учиться быстрее: спрашивайте, почему код написан именно так, а не просто копируйте готовое.
С какими языками программирования он работает?
ИИ-чат отлично знает популярные языки: Python, JavaScript, TypeScript, Java, C#, C++, Go, PHP, SQL и скрипты оболочки Bash, но с редкими языками справляется хуже. Качество ответов также снижается при работе с очень свежими библиотеками и версиями.
Может ли ChatG запускать мой код или просматривать репозиторий?
Нет. ChatG — это текстовый чат: он видит только то, что вы отправили в сообщении, и не исполняет код. Запускайте и тестируйте всё в своем окружении.
Безопасно ли использовать сгенерированный ИИ код в коммерческих проектах?
Относитесь к нему как к коду из любого внешнего источника: проводите ревью, тестируйте, проверяйте лицензии зависимостей и фрагментов, которые выглядят заимствованными, а также следуйте регламентам вашей компании. Это общая информация, а не юридическая консультация.
Все готово к работе
Откройте чат и задайте свой первый вопрос. Это бесплатно и не требует установки.
Начать общение

