Признайтесь, вы ведь тоже прошли этот путь. Сначала — детский восторг: «Вау, он за секунды накодил то, на что у меня ушёл бы час!». Потом — лёгкое разочарование: «Стоп, а почему этот метод считается устаревшим?». И наконец — холодный пот: «Чёрт, я же чуть не закоммитил этот код с потенциальной уязвимостью!».
Я прошёл через все эти стадии. GPT-5 — это не волшебная палочка, которая сделает всю работу за вас. Это скорее невероятно быстрый, но не слишком сообразительный стажёр. Его главный плюс — скорость и знание тысяч шаблонов. Главный минус — полное отсутствие настоящего понимания, контекста вашего проекта и, что важно, ответственности.
Давайте забудем про магию и поговорим об инженерии. О том, как я научился превращать GPT-5 из источника опечаток и багов в предсказуемого и эффективного помощника. Помощника, который не думает сам, но идеально выполняет чёткие инструкции.
Так почему же он ошибается?
Чтобы научиться избегать ошибок, нужно понять, откуда они берутся. А причины — системные.
Иллюзия знания. Модель обучали на гигантских объёмах кода, включая старые форумы, примеры с ошибками и противоречивые мануалы. Она не «понимает», что
var
в JavaScript давно не в ходу. Она просто знает, что это слово часто встречается в связке с JS.Ноль контекста. GPT-5 не видит структуру вашего проекта, ваши code style conventions, ваши внутренние библиотеки. Он генерирует некий «усреднённый код для всех».
Мыслит шаблонами. Он блестяще справляется с типовыми задачами («напиши функцию для парсинга JSON»). Но стоит задаче выйти за рамки шаблона, модель начинает «выдумывать» — генерировать код, который выглядит правдопобно, но не работает или содержит скрытые баги.
Игнорирует «неочевидное». Безопасность, оптимизация, обработка крайних случаев — всё это обычно не прописано в нашем промпте, а значит, остаётся и за бортом сгенерированного решения.
Суть проблемы: Мы ошибаемся, пытаясь общаться с GPT-5 как с коллегой-человеком. На самом деле, он — инструмент, и ему нужно давать чёткие, детальные инструкции.
Инженерия промптов — это не магия, а искусство составления ТЗ
Вместо расплывчатых просьб, я начал писать для модели техническое задание. Мой промпт должен быть настолько полным, чтобы его невозможно было понять неправильно.
Вот как я просил раньше (и получал проблемный код):
«Напиши функцию для подключения к PostgreSQL».
А вот что GPT-5 в ответ мог нагенерировать:
Устаревший драйвер или синтаксис.
Пароль, жёстко зашитый в код.
Соединение, которое не закрывается.
Полное игнорирование возможных ошибок.
Теперь я формулирую запрос как взрослый инженер:
Напиши функцию на Python для подключения к PostgreSQL. Используй актуальную библиотеку `psycopg2`.
Жёсткие требования:
1. Применяй `psycopg2.connect` внутри контекстного менеджера (`with`).
2. Все параметры подключения (хост, БД, пользователь, пароль) должны передаваться в функцию как аргументы. Никакого хардкода!
3. Убедись, что соединение гарантированно закрывается, даже если возникла ошибка.
4. Обязательно добавь обработку исключений `psycopg2.OperationalError` с выводом понятного сообщения.
5. Функция должна возвращать объект соединения или `None` в случае неудачи.
Покажи пример вызова этой функции.
Чувствуете разницу? Второй промпт — это не просьба, а инструкция. Он закрывает большинство путей к классическим ошибкам.
Стратегия «Шерифа»: Никакого доверия, только проверка
Самый опасный миф — что GPT-5 можно доверять. Я выработал железное правило: всё, что сгенерировано, должно быть проверено. Вот моя тактика:
Статический анализ — ваш лучший друг. Перед тем как даже запустить код, я прогоняю его через линтеры (
ESLint
,Pylint
,RuboCop
). Они моментально отлавливают 80% стилевых и простых логических косяков.Пишите тесты для сгенерированного кода. Это кажется нелогичным, но это мощнейшая практика. Вы даёте GPT-5 задачу, он генерирует код, а вы пишете к нему юнит-тесты, особенно на краевые случаи. Если тесты не проходят — вы знаете, что править.
Код-ревью как для живого коллеги. Я читаю код от GPT-5 так же придирчиво, как и пул-реквесты джуниора. Я ищу утечки памяти, проблемы с безопасностью (инъекции, неправильная валидация), сомнительные архитектурные решения.
Пример из жизни: Я попросил сгенерировать SQL-запрос. Модель выдала рабочую, но уязвимую к SQL-инъекциям строку. Линтер сразу указал на проблему. После этого я добавил в промпт уточнение: «Используй только параметризованные запросы».
Вы — архитектор, GPT-5 — строитель
Ключ к успеху — правильное распределение ролей.
Вы думаете что делать. Вы держите в голове общую архитектуру, бизнес-логику, требования к безопасности и производительности. Вы разбиваете большую задачу на мелкие, понятные модули.
GPT-5 думает как сделать. Его задача — написать конкретную функцию по вашему ТЗ, реализовать алгоритм, создать шаблон HTML-разметки, написать boilerplate-код для конфигурации.
Нельзя: «Создай мне интернет-магазин».
Можно (последовательно):
«Сгенерируй ERD-диаграмму для БД интернет-магазина с товарами, категориями, пользователями и заказами».
«Напиши SQL-скрипт для создания этих таблиц в PostgreSQL».
«Создай Express.js-роуты для REST API товаров (GET /products, GET /products/:id)».
«Напиши модель Product на Node.js с использованием Sequelize».
Резюме: Ваш новый рабочий процесс
Вот алгоритм, который позволит вам спать спокойно, используя GPT-5:
Декомпозируйте задачу. Разбейте её на мелкие, атомарные части.
Пишите детальные промпты. Представьте, что пишете ТЗ для джуниора, который склонен делать именно то, что ему сказано, и не более.
Генерируйте код небольшими порциями. Не целый модуль, а одну функцию, один класс, один метод.
Проверяйте ВСЁ. Линтеры, тесты, внимательный код-ревью. Никаких исключений.
Рефакторите и интегрируйте. Вставьте проверенный код в свою кодобазу, приведите к своим стандартам.
GPT-5 — это не конец нашей профессии. Это начало новой эры, где рутина и шаблонная работа уходят на второй план, а ценность инженерного мышления, критического анализа и архитектурных решений взлетает до небес.
Используйте его как супер-инструмент, а не как костыль. И тогда ваша продуктивность (и карма на Хабре) действительно взлетит.
Комментарии (5)
danilovmy
04.10.2025 03:36все же похоже на устаревший подход, как упомянули выше:
Тесты он пишет сам. (добавить инструкцию "напиши unit тесты на 'testframeworkwhatever' c учетом специфических edgecases")
Код ревью он тоже проводит сам. (добавить инструкцию "рассмотри полученный код как сениор "супер пупер специалист по whatever" и найди утечки памяти, проблемы с безопасностью (инъекции, неправильная валидация), сомнительные архитектурные решения.")
Если работа проходит в агентной среде, то написанные тесты он запускает тоже сам (инструкция запусти тестирование с написанными тестами однократно, выведи результаты). Там будут падения тестов, ошибки запуска. Однократно потому, что если он сам начинает править тесты под капотом - мне пока еще не нравится результат, или это пока дороже по токенам. Я использую zencoder 2.30.0
Стат анализ тоже работает, (добавьте инструкцию: cyclomatic complexity index алгоритмов не должен превышать 12, тесты мерить не надо). С тестами у меня по другому, я использую subtests и тогда каждый контекстный менеджер subtest увеличивает CCI.
Как то так.
opusmode
Это статья из прошлого года?
Типа GPT-4 это уже достаточно старая модель, в наше время, а писать код без агента (а лучше мультиагентности), пачки mcp и индексации кода, это как-то даже фу. А там уже нет куска этих проблем.
Типа написание кола с ИИ проделало большой путь даже с начала этого года
Rive
LLM обучали на данных, собранных до прошлого года.
gorlatoff
Да возможно даже из позапрошлого... Ноябрь 2023 это уже gpt-4-turbo, май 2024 — gpt-4o, каждая была на голову лучше предыдущих версий.
Плюс 4.5 и 4.1 в этом году, более сильные чем 4o, но уже морально устаревшие в сравнении с reasoning моделями
para_7 Автор
Обновил