Комментарии 55
Я согласен с советами на больший контекст. У меня over 300 000 строк, и модель норм отрабатывает и очень вменяемо пишет.
Может дело в том что у него проект с нуля? Но даже с нуля почти любая модель вполне хорошо штампует питон код под задачи.
В общем, похоже что это очень хорошо продуманная статья от DevRel IDE Cursor. Столько народу откликнулось!
У меня если в одном файле больше 1000 строк она делая одно, начинает удалять рандомные функции целиком, удалить точку входа оптимизируя другую функцию становится нормой. Конечно, возможно, я что-то делаю не так.
В общем, похоже что это очень хорошо продуманная статья от DevRel IDE Cursor.
Или просто тупой вброс, ибо модель claude 1 уже не доступна. И в комментах ему наврали, 1 лям токенов там.
У меня over 300 000 строк
Простите за любопытство, но что вы такое пишите на 300к строк? Это судя по профилю всё на Django?
По теме поста - LLM ничем НЕ лучше старых добрых stackoverflow и github. Это именно благодаря им можно побыть копирующим ниндзя (если конечно есть понимание что нужно).
Так было несколько лет назад. Сегодня, современные агентные системы для помощи в разработке дают куда больше возможностей, чем просто поиск похожего кода на Stackoverflow и GitHub.
>> что вы такое пишите на 300к строк? Это судя по профилю всё на Django?
Ага. На ней родимой. Начинал с 1.3 версии Django. Сейчас 5.2.a1. В самой моей первой публикации тут в 2019 писал про этот проект. Большая база данных по алкоголю с лютым количеством свистоп€рд€лок для конвертации данных в разные форматы.
По моему мнению все должно зависеть от интереса пользователя. Если человек не хочет связываться с программированием впринципе, и не хочет поддерживать свой проект корректно вручную, то да, можно попробовать использовать контекст побольше, либо заплатить денег тому, кто этот самый проект доработает, но основной проблемы это не решит. Если же человеку интересно программирование, то лучше уж потратить время на изучение языка. Мало информации посчет интереса пользователя :\
Автор без опыта программирования столкнулся с ограничением контекста модели ИИ и начал раздавать советы, что не стоит пользоваться этим инструментом для серьёзных проектов. Просто мем-пост.
С таким же успехом мог попытаться написать детективный рассказ и после 500 страниц жаловаться, что ИИ запутался в сюжете, и теперь ни он, ни ИИ не знают, что происходит в книге.
Ну а как Вы думали - вот изобрели автомобиль, и вроде всë прекрасно, а теперь 1,8 млн человек в мире ежегодно от автокатастроф погибают
<<проблема в том, что автор публикации не знает Python и не умеет программировать>>
Расходимся )
но погодите... Автор просто делает то, о чём сейчас уже в печатных книгах вещают и в каждом третьем видосике на ютюбе. "Теперь можно программировать, не умея программировать".
В чём он не прав?)
в том что поверил что "Теперь можно программировать, не умея программировать". Да, прогресс на лицо, два года назад о тех возможностях что уже есть и думать нельзя было, в анализе исходников у gpt сейчас тупо нет никаких конкурентов, даже на этом уровне качества, а то, с какой скоростью компании улучшают их, можно с осторожностью заявлять что скоро 'можно будет'..
Пока только 'что бы программировать с ИИ нужно уметь программировать'.
Человек не может держать в голове весь код проекта на 30 файлов, а gpt это наша копия (упрощенная симуляция) во всех смыслах. Обычно по каждому файлу/классу есть общее представление о возможностях, список методов, документация к ним.. вот ЭТО и нужно держать в контексте постоянно, иначе из-за огромного объема информации, у сетки снесет бошку, хотя.. если это будут какие-нибудь o1..o3 модели, с заметно высокими затратами, возможно потянет.
А там cursor случайно тесты не формирует по ходу?
Любой ассистент формирует. Некоторые из них пишут именно тесты очень хорошо. Но это всегда по запросу. Самостоятельно - пока ни один. Вот тут немного обсуждалось https://habr.com/ru/articles/876714/
Ну вот человек справляется с задачей построить "индекс" проекта не умещающегося в голове целиком (держа в уме структуру проекта на более высоком уровне абстракций, плюс помня где подсмотреть детали), а ИИ пока не очень справляется. Он пытается работать с кодом всегда целиком и упирается в размер контекста.
Если с ИИ взаимодействует опытный разработчик, то он построит свою собственную абстракцию, которая будет проявляться в том как он будет формулировать запросы ИИ и как реагировать на его ответы, и в итоге есть шанс, что этой структурой сможет воспользоваться и ИИ.
Также ИИ иногда бывает способен считать архитектуру готового проекта и вносить изменения в том же стиле.
А если ИИ пишет проект с нуля и без поддержи опытного разработчика, то он выдаёт среднее арифметическое всех известных ему стилей, подходов и архитектур. Которое по сути является отсутствием всякой архитектуры.
Мне это напоминает работу с Low-code платформами. Там тоже, по-сути, необходимо просто верно настроить промт, но на практике, при кастомизации, зачастую проще все сделать самому с нуля
Ещё одна большая проблема в том, что автор публикации не знает Python и не умеет программировать.
В том, что он попал в аварию, водитель обвинял то, что он не знает о назначении руля и педалей и не умеет водить. /s
Но автомобиль был с автопилотом
так он правильно обвинял. Его ведь заверили из каждого утюга, что теперь можно водить машину, не зная о назначении руля и педалей. )
Постоянно удаляет или изменяет код ради "оптимизации". Были уравнения расчета - выкинет часть, чтобы упростить расчеты.
Типа было x = a exp(b) sin(c + phi), а он упростит до x = N*sin(c), где введет константу N.
Фраза "не оптимизируй" не помогает. В реальности - это не оптимизация, а ломание логики. Пока объяснишь, забьется контекст и он выкинет уже другое. Так как теперь механизм внимания LLM выделит другие более яркие детали.
И если человек на все 100% не понимает, что ему написала сеть (сам бы не мог это написать), то на выходе выйдет макаронный монстр. Так как любые модели LLM быстро скатываются на дно на сложном коде. Подключение к базе или обработку простых запросов Django/Flask они написать могут. Не могут грамотно написать архитектуру нейронной сети или сложную архитектуру на том же Django/Flask.
Сейчас LLM напоминают автопилот Тесла. Руки всегда надо держать на руле.
Чаще ситуация "лень писать код", но сетка своими "исправлениями" доводит до состояния "биться головой об стенку" (объяснял, объяснял - чего тут сложного то?). И тут появляется агрессия, мотивация и силы - и направляешь это на написание кода самостоятельно.
Объяснял, объяснял - чего тут сложного-то, уже и сам наконец-то понял.
Чаще ситуация "лень писать код", но сетка своими "исправлениями" доводит до состояния "биться головой об стенку" (объяснял, объяснял - чего тут сложного то?). И тут появляется агрессия, мотивация и силы - и направляешь это на написание кода самостоятельно.
Ну, поделюсь своим опытом
Я сейчас пользую VSCode c Copilot Plus и Cursor со всем подряд. Cursor это буквально форк VSCode, который пользует те же модели, только через свой плагин. У него есть плюсы, но у всех моделей есть и своя шиза.
Я бы сказал, что модель Claude 2.5 Sonnet самая слабая. Начинает он за здравие, местами делает магию, но на дистанции он начинает писать ради того, чтобы писать и теряет интерес к тому, что уже понаписал. Лучше всего эта можель проявляла себя при старте работы с кодом, но когда она начинала работать с тем, что понаписала, начиналась реальная шиза. А потом бесплатный тариф закончился, после 150 запросов, а 20 баксов это вдвое дороже копилота.
Лучшие модели это o3-mini и gemini 2.0 , но и те иногда переклинивает и они вместо классной и усидчивой работы начинают творить фигню и ломать код
Как это неожиданно: генератор правдоподобного текста генерирует текст, который выглядит правдоподобно!
Лучшие модели это o3-mini и gemini 2.0 , но и те иногда переклинивает и они вместо классной и усидчивой работы начинают творить фигню и ломать код
а o3-mini это o3-mini-high или более простой вариант?
Мне больше всего Claude понравился, но у меня подход такой, что я всегда начинаю новый чат и сама выбираю какой контекст нужен, а иногда и прямо говорю "сделай как тут". В целом я особо не даю нейронке что-то придумывать, сначала проектирую сама, делаю черновой вариант, а потом даю нейронке на доработку или прошу повторить ту же структуру. Для таких целей Claude сработал в разы лучше, чем gpt, как бы я не писала промпт для gpt, он сразу же начинал писать отсебятину, Claude именно в плане повторения/доработки идеи работает практически идеально. UPD: тестила Claude 3.5 sonnet, после написания коммента заметила что разговор про 2.5
Если человек сталкивается с такими проблемами, значит он просто не знает слово микросервис.
Мой опыт с курсором сцгубо положительный, я за два дня написал довольно сложный проект на питоне - который я знал. Еще я правда за полдня облажался в попытке написать двухстраничную визитку с БД и динамическими изменениями через админку. Php я знал плохо.
Делаю вывод: чтобы написать код с нейронкой хорошо, вы должны уметь написать его сами. Вы должны читать то, что она пишет. Вы должны соблюдать хорошие практики. Вы должны контролировать нейронку, как джуна.
Замечательная штука. Раньше я бы два часа ковырялся в том, как переименовать все файлы а папке по номерам. Ну, с вероятностью 50%. Нечастая мелкая задача - и вот. Но зачем тратить хотя бы 20 минут, если можно три?
Или написание api.
Простые мелкие задачи - для ии.
Проектирование - для вас.
Не умеете проектировать - она вам и построит самолет-полуподлодку.
Php я знал плохо.
В наше время этим не гордились!
Всё так.
На сегодняшний день лучше всего современные агенты с ИИ справляются с тремя основными таймитерами:
Написание небольших чистых функций/компонентов/etc, в общем - частей без внешних зависимостей.
Написание документации к API таких частей, создание примеров использования и юнит тестов.
Мелкие повседневные таски по типу вашего примера с переименованием файлов: перенос функциональности в другое место, смена формата данных, поиск связанных с чем-либо частей приложения, и много-много чего ещё, на что мы тратим жалкие 1-2-5-10 минут, но можем тратить в 5-10 раз меньше.
В общем: не нужно просить ИИ написать гугл. Сначала решите что должно быть в mvp, выберите подходящую архитектуру, разбейте функциональность на модули, модули на бизнес-логику и чистые компоненты, выделите однозначно переиспользуемые части. И только после этого (и списка других обязательных вещей) запрашивайте у ИИ реализацию отдельных частей приложения. И лучше всего, если у этих частей будет минимальное количество связей с остальным приложением.
Но чтобы это всё действительно работало и давало ощутимый профит по затрачиваемому времени, нужно не только самому отлично разбираться в том, что просишь написать ИИ, но и знать минимальную базу по работе с ИИ (иногда с конкретной моделью или провайдером, у них есть свои нюансы) и агентами на их основе.
Про товарища из новости, который вообще программировать не умеет, промолчу, тут всё понятно. Но в комментариях жалуются, что Cursor что-то там удаляет или изменяет ненужное - это как вообще? Вот я его использую, даю ему ТЗ, он предлагает правки, я их проверяю и либо принимаю, либо нет. Как раз это в Cursor очень удобно и наглядно устроено.
Ну а в целом - лично мне хорошо помогает. Из меня программист весьма условный (ну т.е. программирую я дофига лет уже, но это никогда не было моим основным видом деятельности), так что достаточного опыта, чтобы на автомате быстро писать самому, у меня нет, но при этом достаточное понимание, чтобы сделать code review за нейросетью, есть. Мне кажется, я идеальная ЦА подобных инструментов :)
Ну и из любопытного - перейдя на активное использование LLM-помощника, я поменял основной ЯП с C# на Go. Меньше абстракций, меньше вариативность, меньше возможностей написать одно и то же в разных стилях, с разными библиотеками и пр. - в данном случае большой плюс - больше шанс, что написанный нейросетью код будет похож на то, что я и без неё бы написал сам.
Мне кажется, что проблема ИИ в текущем виде на таких задачах - отсутствие своего мнения.
У человека-программиста с опытом есть "любимый" (иногда речь действительно о любви, иногда о синдроме утёнка, иногда о том с чем больше опыта и т. д. - главное что выбор сделан) язык программирования, фреймворк, подход к построению архитектуры и т. д. И он пытается решать все входящие задачи через любимые методы, до тех пор пока несовместимость метода и задачи не превысит некоторый порог дискомфорта, чтобы попробовать действовать иначе (и новый метод будет вновь использован упорно, пока задача либо не будет выполнена, либо не станет очевидно, что нужно пробовать что-то третье).
А ИИ имеет среднее арифметическое всех подходов в обучающей выборке и пытается действовать с равным учётом всех. А среднее арифметическое мнение это никакое мнение.
Можно провести аналогию с тем, что у каждого прохожего на улице есть направление движения, которое его приводит в некий пункт назначения. А если посчитать средний арифметический вектор движения всех прохожих на улице, то получится колебание вокруг одной точки никуда не ведущее.
Лучше последовательно двигаться в одном, пусть и субоптимальном направлении или даже вообще неправильном направлении, чем колебаться на месте. Субоптимальное решение тоже решение, а быстро и уверенно реализованное неверное решение позволяет наконец-то сделать выводы и перейти к верному.
Если ИИ работает с человеком с сильным мнением по предметной области решения, то он будет подчиняться ему. А если человек сам не имеет никаких предпочтений о способе решения задачи и даже не понимает что происходит, то ИИ во всей красе покажет своё усреднённое "никакое" мнение.
На тривиальных задачах это не так критично, потому что в обучающей выборке скорее всего найдётся код человека, который решал похожую задачу. Но чем крупнее проект, тем сильнее комбинаторный взрыв решений и найти в базе готовый код, который максимум надо чуть-чуть допилить, не выйдет.
Появляется куча на первый взгляд равнозначных выборов (объем контекста не позволяет различить варианты и выбрать однозначного фаворита). Человек в таких ситуациях выбирает по предпочтениям, ИИ рандомно. Предпочтения человека имеют некую структуру (например, у Java разработчика любимым стилем программирования будет ООП, у Scala разработчика функциональное программирование и т. д.), рандом нет.
Я просто оставлю это здесь. Видео длинное, но оно прям в точку о том, где мы и что нас ждет; точно стоит того, чтобы досмотреть. Чувак посчитал рост копипаста/энтропии в интернете, ассоциированный с AI, и делает разные интересные выводы и прогнозы.
Интересно пофантазировать, когда уже нейросеть соединят напрямую с ОС/железом, через какой нибудь спец язык понятный самой нейросети.
Тогда дизайнеры будут придумывать варианты как можно отображать это всё, типа шаблонов)
А разработчики будут писать на этих шаблонах сценарии и тестировать) И нейросеть будет паковать итоговый код в контейнеры и сама разворачивать на хостингах и т.д.
Потому что он просто принимал что выдаёт LLM. Нужно всегда проверять что выдаёт сеть и держать её на поводке. Я тоже делаю себе плагины и небольшие приложения до 10 тысяч строк и тоже ничего не понимаю в коде. Через месяц тыкания уже начинаешь ориентироваться и в том как он пишет и что он пишет.
Нейросети хороши на короткой дистанции: придумать имена переменным эквивалентам БД (скармливаешь запрос) и сделать из них класс или структуру; реализовать алгоритм; привести пример использования незнакомого API и т.д. Всё что касается структуры проекта, пока что её лучше держать в голове. Посмотрим что будет дальше.
Абсолютно верно! Если начинаешь кормить нейросеть кодом которых охватывает чуть больше зависимостей, наблюдаются галлюцинации в виде удаления важных частей кода.
Я когда использую нейросеть всегда стараюсь делить код на мелкие фрагменты. И в последнее время стараюсь как можно реже обращаться к нейросети в тех ситуациях где сам уже позабыл как что-то делается, чтобы не атрофироваться. Больше использую нейросеть как ускоритель ввода, когда синтаксис слишком нудный из мелких деталей)
Ух ты! Оказывается БЯМ помогают писать код тем, кто и так умеет это делать, и не помогают тем, кто этого делать не умеет.
Ну вот, а говорили, что программисты больше не нужны будут.
Я кодер, но поверхностный, я как программист даже на Джуна не потяну)
Но я пишу различные проекты, включая разработку под блокчейн TON :)
Нейронки это просто рай) только правильные нужны. Сейчас использую пока gemini, после gpt жил божественно, с её контекстным окном в 2м токенов. Я гружу туда все файлы проекта и задаю вопросы по доработке, все четко работает.
Я написал телеграмм бота, довольно с расширенным функционалом. Он состоит в группе, туда инфу отправляет, редактирует, в срм систему шлёт данные, взаимодействует по апи с нейронкой, куча кнопок, все данные пользователей хранятся в бд. Некоторые данные подтягиваются с текстового файла, там готовая структура.
Функционал четкий в общем)
И суть в том, что я вообще не знаю как работает этот бот у меня 😅 конкретно в этом проекте я в код толком не лезу, я только с ним ошибки исправляю и всё. Я в голове держу только функционал весь проекта, а он как мой программист)
Поэтому это новый путь развития, я бы сам неделю писал такого бота и вникал во всякие вещи, а так, я сделал за день по сути всё.
Всё что меня пока бесит - не знание новых версий библиотек нейронной. Я использую aiogram последнюю, а он пытается использовать старую версию и поэтому не с первого раза. Я ему просто показал рабочий вариант другого бота, чтобы он понял как работать с aiogram по новому и он вроде понял.
Может кто-то посоветует интересное решение на этот счёт? Чтобы какая-то нейронка чётко знала все библиотеки актуальные. Грузить в проект отдельно библиотеку это гемор, каждый файлик... Я уверен, что это уже есть, просто я это не нашел.
Может курсор это и умеет? Есть ли там контекстное окно на дофига символов?
ну так напиши скрипт, с помощью тех же ИИ, который будет общаться по api с каким либо ИИ, благо провайдеров пруд пруди, который тебе и файлики загрузит в контекст, и с разными промптами попробует
Курсор это просто VSCode с вшитым чатом для общения с нейронками, где можно выбрать модель с какой хочешь общаться. Соответственно контекстное окно зависит от модели нейронки.
Я думаю, что человек пишет про режим агента в composer. Я пробовал тоже начать проект с нуля и не вмешиваться в то, что происходит в кодовой базе. Он действительно начинает иногда ходить кругами и исправлять то, что уже работает.
Если же понимать, что конкретно нужно исправить по коду или попросить помочь найти ошибку, то в целом Claude 3.5 работает очень достойно. Остальные модели в том числе o-mini 3 понравились меньше.
«Код получился большим и неорганизованным»: пользователь Reddit рассказал про опыт программирования с Cursor