Не чини, а перезапусти: почему это работает лучше с ИИ

Знаете как это бывает, начинаешь делать задачу, посидел, придумал архитектуру, реализовал, и тут начинается самое интересное… В одном месте что-то не учёл, в коде соседнего модуля вылез косяк, а время идёт, сроки горят и приходится подставить костыли и надеяться, что когда-то можно будет это исправить. Да и переписывать свой код больно, он же ваш, вы потратили на него время.

Я это вот к чему. Астрологи объявили год агентного кодинга, все пишут, как они ускоряются в 5–10 раз, но эта проблема никуда на самом деле не уходит. Вы ставите задачу кодексу, клоду или чем вы там пользуетесь, он реализует задачу, вы проверяете, а он архитектурно сделал что-то не так, какие-то требования не учёл, и вы начинаете просить агента исправить всё, что он натворил, в том же чате.

И он делает примерно то же, что и мы — начинает либо фиксить баги, либо добавлять костыли. В итоге код уже не такой хороший, как если бы он сразу сделал нормально. А под конец агент ещё и начинает путаться, тупить и ходить вокруг да около.

И тут на помощь приходит One Shot Prompting. Про подход я уже слышал, но по-настоящему понял его только на стриме Вани в GuideDAO. В общем, суть простая — вы не просите агента исправить все косяки. Вместо этого берёте исходный промпт и уточняете требования, чтобы избежать проблем, которые всплыли в первой реализации. И, конечно, без угрызений совести выкидываете первую версию.

То есть по сути, теперь мы дешево можем делать почти сразу хорошо, переписать всё стало в разы проще.

🧪 Пример из своего опыта. Я решил начать пилить небольшой пет-проект, который, надеюсь, когда-нибудь увидит свет. В проекте используется MapLibre GL JS — библиотека для отображения векторных карт. После очередной фичи я решил попросить кодекс покрыть её playwright тестами, и тут началось.

Он написал тесты и следующие полчаса пытался понять, почему же карта не отображается. Как джун, искал проблему методом тыка. Вносил изменения — карта не работает. Решил, что проблема в кеше — перезапускает дев-сервер. И так раз десять.

В итоге он всё-таки дошёл до причины: WebGL, который используется в MapLibre, не работает, когда playwright запущен в headless режиме.

С горем пополам тесты он написал, но на код, конечно, лучше не смотреть. Естественно, он не убрал все свои неудачные попытки пофиксить проблему. И это именно тот случай, когда нужен One Shot Prompting.

Я просто спросил у кодекса, в чём была проблема, добавил это в исходный промпт, откатил изменения и запустил всё заново. В этот раз реализация прошла быстро, и код получился заметно чище.

На работе теперь тоже постоянно применяю этот подход. После этого у меня даже появилась небольшая надежда, что сеньоров заменят не скоро. Потому что джунам гораздо сложнее делать ревью кода, который написал агент, а в итоге это легко может привести к неподдерживаемому коду.

Но теперь за ними нужен глаз да глаз, чтобы не пропустить такой код в прод 😅.

⚠️ У подхода, конечно, есть и минус. Токенов тратится больше. Поэтому если задача большая, а багов немного, иногда проще пойти на компромисс и просто попросить агента всё пофиксить.

А вообще теперь же с 1 марта нельзя говорить one shot prompting. Как это будет по-русски, «однократное задание по образцу»? 😆

А какие новые подходы в использовании ИИ недавно узнали вы? #ai

Не чини, а перезапусти: почему это работает лучше с ИИ | Сетка — социальная сеть от hh.ru