Обновить

Сама не разберётся: мои 7 принципов генерации кода с LLM

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели11K
Всего голосов 18: ↑16 и ↓2+16
Комментарии13

Комментарии 13

использовал LLM для ускорения написания кода и методом проб и ошибок сам пришёл к таким же принципам. главная ошибка новичков, которые используют LLM для генерации кода, заключается в том, что они могут просить генерировать то в чём сами не разбираются и нормального ТЗ дать не могут, что приводит к ошибкам. и тут даже эти 7 принципов не помогут)

Полностью согласен! Проблема вайбкодинга в том, что он завирусился как «кодинг для домохозяек» - мол, можно писать целыми приложениями, ничего не зная о программировании.
Но на практике наоборот. Вайбкодинг тяжелее обычного кодинга - хотя бы морально.
В какой-то момент всё равно придётся залезть в код и разобраться, чтобы оно действительно заработало.

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

Ждать от LLM появление AGI - это примерно так же, как пытаться собрать автомобиль, имея только коробку передач)

А статью спасибо! Вообще, я баловался генерацией кода в обычных LMM. Что-то получалась, но результат был так себе. Читал новости "у нас 70% кода пишет LLM" и не понимал, как такое может быть. А потом поставил Cursor и офигел от результата :) Там действительно решены проблемы контекста и многое другое. Теперь и у меня стало так) Помощь огромная.

Да, cursor - это мощный инструмент, но имеет свои ограничения, из за которых многие или не могут или не готовы им пользоваться на постоянной основе. Как раз и хотелось поисследовать суть этой мощи. По хорошему, если заморочиться, можно подручными open source средствами собрать свой "домашний курсор".))

Одно из первых действий, которые надо сделать при работе например с deepseek - запросить его версию. Сейчас у меня открывается версия 2, при том что актуальная должна быть версия 3.2, и соответственно ответы полный бред. А программу он напишет, но тоже бред.

Первым запросом к ИИ должен быть запрос типа "вот что я хочу напиши ТЗ" или "напиши промпт". Это крайне полезно.

От модели к моделе впечатления очень разные. С deepseek очень разочаровался я. Сложно объяснить ей, что тебе нужно. Впечатление, что он все понимает, но все равно мягко настаивает на своём (обычно ошибочном мнении). В этом плане qwen мне больше понравился. И все же, по моему опыту, к chatGPT никто не приблизился. Хотя, как бесплатная/достаточно дешевая альтернатива, deepseek конечно достойная замена.

deepseek летом выдавал мне очень неплохие результаты. Но и тогда я один раз попал на версию 2, которая тупила, и с того же компьютера на версию 3 с которой было всё хорошо. Сегодня же стабильно отвечает версия 2. Было сообщение что deepseek начал снижать качество для некоторых регионов, похоже я в этом регионе - и даже без VPN.

Буду иметь ввиду! И уточнять этот момент. Спасибо за информацию!

Отличная статья спасибо!
Я бы немного поменял порядок принципов, чтобы

  • статья шла от общего к частному (например 3й перед 2м (или вообще частью 1го)

  • принципы шли в порядке, в каком люди и будут работать (6й перед 4м)

Отличное и справедливое замечание, спасибо!

Про тестирование, возникла мысль, что это "факультативное" предложение для интузиастов, т.к. большинство, по моим наблюдениям, не то, что TDD не практикуют, но и тесты в принципе не долюблювают писать.))

Всё круто, но если этим принципам следовать, то ллм будут тебя замедлять, а не ускорять.

Спасибо, что написали такой комментарий! И это действительно будет так, если слепо следовать каждому пункту в любой ситуации. Это общие принципы, и уровень вас как разработчика, и уровень llm в зависимости от модели, могут быть сильно разные. Иногда нам достаточно будет общего кода, без привязки с структуре проекта (мы сами адаптируем, еще и допишем и протестируем). А когда то нужно полноценно написать модуль, и не давая модели общей информации и не двигаясь инкрементами, вы просто закопаетесь в куче сгенерированного кода с которым невозможно ничего сделать (но это из собственного опыта).

Так что, да - слепо следовать не стоит этим правилам, а применять подходящие для вас и для задачи в каждом конкретном случае.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации