Как стать автором
Обновить

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

>2 дня, 672 строки кода

>Новая парадигма более эффективна

Немножко не сходится.

LLM - инструмент прикольный, но я б не рискнул использовать сгенеренный код где-либо, кроме прототипов

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

Можете подсказать промт?

Я решил проверить chatGPT 4o и claude 3.5

Взял несколько hard задачек на лид коде, и не всегда модели выдавали верный (рабочий) код.

Потом ручными попытками указать на ошибки - код становился исполняемым, но далеко не все задачи удалось довести до решения (чтобы LLM выдала полностью решающий задачу код)

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

Я пытался сделать аналогичное с ChatGPT 4 с официального сайта несколько месяцев назад. Запутанный код строчек на 50, одна функция. Результат не должен был измениться для тех же входных данных. Промучался около часа, но правильный код так и не получил (и на каждой итерации довольно сложно было понять, есть ли в новом коде ошибки). То одно работает не так, то другое после очередного исправления. Плюнул, переписал сам.

аналогично, -- я хотел довольно сложную функцию на генераторах или итераторах в функциональном стиле, и с серией прототипов и уточняющих правок с моей стороны, все получилось, пожалуй, быстрее у нас вместе, чем если бы я писал "руками" самостоятельно.

Осталось самая мелочь — понять, а правильно ли оно работает.

Понимать чужой код всегда на порядок труднее, чем свой. Просто потому что я знаю, с какой целью я написал каждую его строчку и что ею достигается.

<sarcasm>
А тестеры на что? Они пускай проверяют!
</sarcasm>

Код к такой максимально типовой программе намного проще найти на просторах сети: Запрос на гите https://github.com/search?q=lines+game&type=repositories выдает почти 2 тысячи репозиториев, фильтрует по c#, получаем 162. Немного полистаем, https://github.com/Altav1sta/Lines

Очень похоже на предствленную игру в статье (может это она и есть?). У меня ушло 10 минут на ее поиск. У специалиста по C# уйдет еще 10 минут чтобы подправить цвета. Итого 20 минут.

Все, что описано в статье - это действительно создано моделью. Нет никакого обмана или манипуляций.

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

Что интересно, модель каждый раз предлагает совершенно разные реализации по одному и тому-же промпту если многократно делать попытки, что как-бы намекает, что она действительно не копирует фрагменты кода из обучающей выборки, а сама создает логические конструкции из кода по условиям задачи.

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

Это похоже уже на ответ самой модели

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

Уникальность даёт промпт от пользователя ллм.

Я могу взять практически любую крупную задачу из тех что я решал на работе за последнее время и нейросеть не сможет мне предоставить полное и рабочее решение с меньшими трудозатратами. Если вообще сможет.

Я, возможно, смогу ее вывести сотнями промптов на нужное решение какой-то изолированной части задачи используя мои собственные знания и потратив x2 времени, но тут возникает нюанс - а зачем мне нейросеть тогда? И, что самое главное, как она поможет человеку без моих знаний, которые я использовал чтобы вывести ее на нужное решение?

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

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

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

Да гспди, я не могу заставить ChatGPT сгенерировать рабочий кусок кода на 100 строчек содержащий вызовы OpenSSL. А вы про полноценное решение задач...

А ведь OpenSSL - он вообще везде. Тысячи проектов. Но нет, эта гениальная нейросеть не может сгенерировать код для поточного формирования CMS SignedData не перемешав функции из разных версий этой библиотеки) Не может даже корректно параметры передать! Даже с десятками уточнений, мне не удалось заставить её решить такую тупую задачу)

Модель GPT-4o

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

А у модели есть возможность интерпретировать результат, даже если будет возможность запустить код и получить результат?

Выглядит так, что для таких задач нужно 2 модели, одна пишет код и запускает, другая интерпретирует результат и говорит первой надо переделывать или нет.

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

а почему нет? модель вполне "понимает" что от нее требуется. нужно просто повторять цикл "while ( результат запуска не соответствует задаче?) { пишем/правим код, запуск }

оценивать себя она будет сама. еще можно сделать возможность оценки результата с разных точек зрения, т.е модель сама спрашивает у себя заранее заготовленный список вопросов в каждом цикле "результат формально соотствует задаче?", "результат соответствует задаче с учет бизнес-процессов?" и тп, список вопросов можно подобрать. + ей нужна система связи с менеджером, чтобы она могла задать уточняющий вопрос по задаче, если при оценке выполнения задачи какие-то уровни превышены или занижены, например цифра ниже 2 по 10 бальной шкале при ответе на какой-то вопрос, и тп. добавить к этому еще какую-то систему обратной связи от заказчика/менеджера, типа как оценка ресторану после выполения заказа с возможностью написать отзыв, чтобы после выполннения всех задач система могла запомнить, как она справилась и в дальнейщем учитывать это, думаю результаты будут хорошие.

Это ваш skill issue. Bullshit in, bullshit out.

Допустим. Тем не менее, предполагается, что я стану не нужен, а LLM будет генерить код по описанию человека, у которого нет моих знаний, т.к. skill issue только усугубится)

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

Грубо говоря так -

Чел с ИИ >>> ИИ > чел без ИИ

"Я, возможно, смогу ее вывести сотнями промптов на нужное решение какой-то изолированной части задачи используя мои собственные знания и потратив x2 времени, но тут возникает нюанс - а зачем мне нейросеть тогда? И, что самое главное, как она поможет человеку без моих знаний, которые я использовал чтобы вывести ее на нужное решение?"

- вы поможете "визионерам сингулярности" и прочим... закидывать назад голову в поиске очередной "глубокой мысли"... и ногу на ногу в удобных креслах на подиумах... и поучать неразумных.... )

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

Все, что описано в статье - это действительно создано моделью. 

Не будем спорить и гадать, а лучше проверим. Я уже предлагал похожую проверку, только там модель должна была играть в игру. Но поскольку у вас она создаёт игру, то можно немного поменять идею: возьмите предложенную выше реализацию этих шариков, и поменяйте правила. Например, пускай шарики больше не появляются случайно, а их расставляет игрок, каждый отведённое количество. Они перемещаются так же по пустым клеткам, но есть правила, по которым шарики разных цветов могут "есть" другой шар. Правила задайте сами. Для эксперимента конкретные правила не важны, при условии, что они достаточно содержательны (ну скажем их можно описать для человека парой абзацев текста) . Важно то, сможет ли модель понять то, что от неё требуется. Т к игры именно с вашими правилами в интернете нет и никогда не было, то успешное завершение этой задачи покажет, что это действительно модель делает сама, а не усредняет результаты поиска.

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

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

Надо что-то реально полезное нашаманить. Например получить код проекта системы автоматизации по её детальной спецификации. Ну хотя бы СВЧ печатную плату развести.

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

А да, точно задача программиста код писать - да. Наверное самая "сложная часть" нашей профессии да...

Сижу вот на работе и думаю каждый день. Какой бы мне код написать, как бы вот блин пальцы на клавиатуру положить то. И боюсь вот, LLM ща как накодит круче и быстрее

думаете с другими аспектами вашей работы нейронки не справятся?

Беру значит паяльную станцию. Сажаю cortex на плату. О великий llm помоги мне. Замени меня

программист берет паяльную станцию...

Программист_паяльник_жало.jpg

Обман! Нет такой картинки.

Чат.жпг создай такую картинку!

НЛО прилетело и опубликовало эту надпись здесь

тем, что заказчик/менеджер сможет объяснить задачу ему, а не вам. пока что это и правда инструмент, но потенциал явно выходит за пределы "просто инструмента"

И что заказчик будет делать с полученным кодом?

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

Ну с таким подходом восстание ИИ, которым нас пугают, определённо может случиться. К счастью, у людей с таким мышлением, нет доступа к важным системам (и надеюсь не будет).

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

Так тут вопрос не в точности, а в контроле. И потеря контроля, по-моему, относится к недопустимым издержкам.

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

Ну когда нибудь так и будет, но llm к этому отношения скорее всего иметь не будет.

В любом случае все это фантазии без конкретных дат, когда это произойдет, через год, два, 10, 100, 1000?

мне кажется у нас осталась пара лет и большей части программистов придется заняться чем-то другим

Смешно, готов поспорить на деньги что ничего такого даже близко не произойдет

если бы я был готов поспорить на деньги, я бы просто купил акции связанные с ии. но умение идти на риск - не моя сильная сторона

В акциях завязанных на ии уже в стоимость заложены хайп и ожидания

это зависит от оценки перспектив. они все еще дешевые, если прав на счет пары лет

мне кажется

Как говорила моя бабушка, "когда кажется — креститься надо"...

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

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

я через слэш написал "менеджер". это не важно, сколько там прослоек, они в конечном итоге все заменимы, закачик может объяснять то что ему нужно менеджеру-ии. открытым вопросом является только то, заменим ли сам заказчик, может быть и заказчиком более эффективным будет ии

Это так не работает. У вас получилась классическая логическая ошибка idem per idem.

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

Чем концептуально появление "кодящих" LLM отличается от... ну не знаю, изобретения Python?

Вот и я то же самое писал:

...давным-давно, когда компьютеры были большими, разработчик набирал переключателями на пульте двоичный код, который потом исполнялся процессором. Потом программист стал писать человекочитаемыми буковками код низкого уровня (на ассемблере), который транслировался в машинный код, который исполнялся процессором. Потом разработчик стал писать код на языке высокого уровня (скажем, C — кстати, у сишных ++ и -- ноги растут из DEC-овских операций с авто{ин|де}крементом), который транслировался в код низкого уровня, который транслировался в машинный код, который исполнялся процессором. Теперь разработчик нового уровня будет писать очень-очень подробное и детальное техническое задание, не допускающее двояких толкований, которое транслируется в код на языке высокого уровня, который транслируется в код низкого уровня, который транслируется в машинный код, который исполняется процессором...

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

лежит на диване и жмет одну единственную кнопку "сделать хорошо".

Есть такая кнопка...

Почему-то ожидал реферальную ссылку на хомяка.

Я что, настолько похож на идиота?

Да.

Так и запишем: маскировка работает.

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

А когда в модель - то ой. :)

Но в общем, всё так, да. Очередная упрощалка, типа intellisense.

когда человеку дают тз - результат тоже не детерминированный, а тот самый ой - это именно потому, что нейронка является заменой человеку, а не питону

Заменой человеку нейронку никто и никогда не позиционированил, кроме журналюг и им сочувствующих.

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

Хмм. Но когда вы используете модель, то тоже получаете детерминированный результат. То что он отличается от нажатия к нажатию - подстановка разных seed под капотом. Зафиксируйте seed и будете на один и тот же промпт получать одинаковый результат.

А в новой версии модели результат будет таким же?

Скорее всего - нет. Поскольку новая версия модели - это просто другая модель, которая будет выдавать другой стабильно одинаковый результат на одну и ту же комбинацию промпта + Сида.

В это время Сид:
— Я тут ни при чём, мамой клянус!
— Я тут ни при чём, мамой клянус!

Я так и думал. То есть, как если бы команда разрабов менялась, и приходилось бы объяснять им задачи заново, я правильно понимаю? Интересно, сколько таких итераций выдержит заказчик.

В ЯП же, обратная совместимость довольно редко ломается.

Хмм, а если немного усложнить задачу. Попросить написать 3d рендер на SDL и простую обработку физики. Интересно попробовать продолжать углубляться в 3d рендер и выяснить, на каком этапе она начнёт спотыкаться.

Я пришел к выводу, что если решать задачу поэтапно, делая сначала основные шаги, затем более мелкие, постепенно уточняя задачу, то можно получить качественный код процентов 80% от общего объема.

Совершенно согласен. И 3D рендер она сделает, и физику тоже. Надо будет несколько раз начинать новый чат, чтобы старый контекст не путался, правильно скармливать ей текущий код проекта, и давать грамотно задачи. Естественно надо полностью понимать что она пишет, и вовремя поправлять, или возвращаться на шаг назад.

Как то на сказку про кашу из топора смахивает.

То есть с нейросетью нужно обращаться, как с джуном :)

Вот есть и такие выводы:

https://3dnews.ru/1105416/issledovanie-52-otvetov-chatgpt-na-voprosi-po-programmirovaniyu-neverni

Какую бы оценку получил студент на экзамене с такими результатами?

...важнее, например, если вы летите на самолете, код программ которого написан вот как-то так... с помощью "промтов", а люди как-бы уже все это "поделие" не проверяли тщательнейшим образом?

...и да известно, что лучше переписать код с нуля, с пониманием, чем копаться в "некое легаси"...)

Собственно код получившийся можно глянуть где-нибудь? Или я ссылку в статье пропустил?

Извиняюсь, что не оставил ссылку. В ближайшее время обязательно выложу.

Ссылка на полный рабочий код: https://disk.yandex.ru/d/ycfiSHoJ_czQCg

Попросите чатгпт на гитхаб залить плиз, а то на яндекс диске не солидно

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

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

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

Вот тогда будет интересно:)

Делают ли "электровцы" "саморефакторинг" своей нейросетки? )

Проблема в архитектуре. LLM обучаться неспособны в принципе, это апроксиматор. Она не может учиться проверяя собственный код т.к. она и так обучена на работающем коде. Нейросеть не понимает ничего, она просто генерирует нечто похожее на рабоочий код из датасета. Тут может Q* алгоритмы исправят ситуацию, но LLM точно никогда не станет полноценным ИИ. Максимум - одной из подсистем оного.

Я тут, в обсуждении какого-то другого поста по теме, делился своим недавним (на GPT4o) наблюдением: модель стала "по ходу дела" исправлять и те ошибки, на которые я ей не указывал.

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

Человек "знает" когда он голоден..., а машина, хоть и питается от сети, но пока ничего об этом не знает... и таких чувств не испытывает...

)

И тем более, у неё нет "мыслей" о том, что если она долго не будет иметь питания, то все...

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

- и этот вопрос про то, что если машина ошибается, ей ничего за это не будет... она не только этого не понимает..., но тем более не понимает, что от ошибки она может просто "сгинуть"...

Вы с таким "придыханием" об этом пишите, как будто это трансцедентальные метафизические понятия... Рассуждая механистически, "голод" - это всего лишь характерная совокупность показаний датчиков, а "знает" (по крайней мере, в данном конкретном случае) - наличие определённой информации. Нет никакой принципиальной сложности в том, чтобы "закодировать" (или "обучить") автомат на какой-либо алгоритм поведения в зависимости от наличия питания (или его объема/плотности/градиента/возможности получения).

Никакой метафизики - уже сейчас Альтман инвестирует в термояд... ) , модель не сделана, чтобы экономить энергию и рефакторить саму себя, ей до этого нет дела... и не будет..., ей все это ничего не стоит. Ошибки ей не стоят жизни.)

мне бы сейчас очень хотелось "вызвать пояснительную бригаду". Людей, которые понимают, как оно там устроено "под капотом".

Дык вот же она!

Мощно! Почти 20000 слов, тянет на небольшую книжку...

Ну так оно и получается, когда человек, который понимает, как оно устроено пытается объяснить человеку, для которого это — чудо, как оно на самом деле работает. Вы вот пробовали девятилетнему сыну объяснить, почему машина ездит, чтобы не на уровне "ну, оно делает бжжжжж и едет", а чтобы про ДВС, транмиссию, рессоры, рулевое управление, топливную систему, (перевел дыхание) электросистему, пассивные и активные средства безопасности, весь этот фарш? Вот тут у дяденьки несколько недель уходит!

Я нигде не писал, что LLM должна учиться по ходу решения задачи.

Смысл в том, что LLM пишет код опираясь на ожидаемый результат (это уже умеет делать тот же Claude 3.5 Sonnet, так что ничего нового тут нет). И результаты используются для дообучения.

Например, мы показываем скриншот и описание блокнота, а LLM пытается его воссоздать. Дальше идет тест, сравнение оригинала и нового приложения. Это тоже отчасти уже делают, но хорошо бы пойти чуть дальше, чтобы сравнивать в динамике (что будет если нажать кнопку и пр). Это и есть "пол шага" про которые я написал.

Во всем этом пока никакого обучения нет.

Но на выходе мы имеем новый код, и оценку его качества (соответствия задаче). Отбрасываем плохой код, а оставшийся используем для дообучения модели (LoRa или полноценное обучение, не суть).

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

Просто осталось чуть-чуть, чтобы научить сетку пользоваться готовым софтом (ради чего по сути и нужен Windows Recall). Это позволит замкнуть петлю обратной связи и позволит создать огромные объемы обучающих данных, что, в свою очередь, резко повысит качество кодинга LLM.

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

  1. про смену парадигмы я ничего не писал, только про резкое увеличение объема необходимых данных. А в случае LLM, это, как показывает практика, вероятно даст скачек качества. И так далее по кругу пока задача "напиши фотошоп" - не будет решаться за вечер... И далее.

  2. "искреннее любопытство" - это не какая-то волшебная пилюля. Как и эволюция. Никто не говорит, что LLM - равен мозгу. Это просто один из краеугольных камней построения сознания. Инструмент который позволяет работать не с числами и строками, а с образами и смыслами. И это открывает перспективы...

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

Как же много людей на хабре, которые с умным видом втирают дичь

Извините если это было грубо, я редко пишу на хабре, привык к другому стилю общения.

Попробую чуть адекватнее быть.

Смотрите, я не супер эксперт в AI (нейронках), но в подавляющем большинстве кейсов с негативными результатами были нарушены некие базовые правила. Большинство думает что ГПТ-лайк системы это какая то магическая херня которая вас отлично понимает и всегда отдаёт нужный результат.

Но это не правда. Это просто инструмент, очень продвинутый, но пока ещё инструмент и им нужно очень грамотно пользоваться. Промпт - 70% успеха, 30% - подходящая задача. Например кинуть в гпт 3000 строк на c++ без контекста и очень подробного обьяснения - очень плохая идея.

Кинуть 300 строк кода на питоне - отличная идея и даже с кривым промптом скорее всего будет успех.

А статья ваша уже ОЧЕНЬ давно не имеет ничего общего с реальностью. Нейронки этого года очень далеко ушли от угадывания следующего слова. Они оперируют смыслами, образами, они могут писать музыку и создавать видео. Пусть пока плохонько, но дорогой мой друг, это чудо что за 2 года мы прошли путь от продвинутого т9 к созданию музыки и прохождению теста тьюринга. И это я не говорю про специализированые нейронки, который решают математические задачи лучше чем Phd. Если интересуетесь, очень советую 3 вот этих канала.

https://t.me/denissexy
https://t.me/seeallochnaya
https://t.me/llm_under_hood

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

И они это делают за счёт того, что генерируют на каждом шаге не только следующее слово, но и что-то ещё? Было бы интересно посмотреть подробнее.

В телеграм каналах что я скинул есть оч много инфы как оно работает.

В телеграм каналах

Ну вот, рак уже и в комментарии метастазы пустил...

Немного другое, вам не кажется? Я не имею к ним отношения, кроме того что читаю их и считаю лучшим источником информации об AI. Можно ещё AIA Podcast послушать, так тоже очень много годноты.

Немного другое, вам не кажется?

Да, кажется. Эти Ваши каналы сегодня есть — а завтра нет, и даже archive.org не поможет. Лично наблюдал, как миниум шесть штук пропали со всем содержимым (вернее, практически очевидно, их угнали и зачистили).

И они это делают за счёт того, что генерируют на каждом шаге не только следующее слово, но и что-то ещё?

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

В 2017 году была представлена работа под названием Attention Is All You Need, которая произвела фурор в нейросетевых кругах, и в итоге стала ядром всех текущих LLM, и вообще любой нейросети на трансформерах.
Недавно, в декабре 2023, была представлена улучшенная версия GQA (Grouped Query Attention) - что стало тем прорывом, когда модели в 72B (72 млрд параметров) обошли в разы более крупные модели. У GPT4 их 1700 млрд, но Llama3 72B в большинстве тестов обходит GPT4 (не GPT-4o), не говоря уже о GPT-3.5 с 175B параметрами.

На хабре есть перевод: https://habr.com/ru/companies/ruvds/articles/723538/

Они оперируют смыслами, образами, они могут писать музыку и создавать видео.

И часто Вы антропоморфизируете?

Увы, никакими "смыслами и образами" они не оперируют. Хотя некоторым очень хочется в это верить.

в подавляющем большинстве кейсов с негативными результатами были нарушены некие базовые правила.

В техасского стрелка играете?

решают математические задачи лучше чем Phd

Да что ви такое говорите. И сколько из этих решений не окажутся бредом?

а человек видимо генерирует не то, чего он набрался за жизнь? любое наше изобретение или открытие - это комбинация того, на чем мы обучились. и модель, и мы генерируем из датасета

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

У человека есть тоже нечто похожее на контекст нейронки, а именно кратковременная память. Можно целый день сидеть и изучать новый ЯП, затем на следующий день даже написать на нем что-то. А потом все резко бросить и попробовать написать программу через год. И вот тут придется все заново, контекст уже "уехал". А чтобы нормально запомнилось, надо этот весь год сидеть, изучать и кодить. И тогда работать будет долговременная память. Очень похоже на нейронки, даже в принципе по времени не сильно отличается.

может. модели можно дообучать. новую информацию которую запомнила нейронка в рамках контектного окна, можно просто записать в некую базу и когда там накопится какой-то объем данных - дообучить на них модель

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

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

Тут либо мириться, расширяя контекст, либо придумывать новую архитектуру\подход.

Нейросети обучаются не только на примерах кода случайных проектов, А ещё и на официальной документации например. На примерах которые написали разработчики какого-нибудь фреймворка, а там обычно всё грамотно. Как минимум грамотнее чем я. Модели прекрасно предлагают сценарии для юнит-тестов, наталкивают на мысли что ещё можно протестировать, не ленятся писать обработчики ошибок, не стесняются полностью переписать какой-нибудь алгоритм, когда появляются новые условия. У них нету усталости или лени. Так что в целом, их Конечно уделает программист с чёрным поясом, Ну так же в целом, среднее качество кода по всем программистам только улучшится.

Один вопрос - вы полетите на самолете, где весь софт будет написан только через промты без тщательной проверки человеком?

Я включу зануду, но неужели работа большинства программистов состоит в написании несложных программ с нуля?

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

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

Но может я зря жалуюсь и нейросети уже так могут?

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

>Но может я зря жалуюсь и нейросети уже так могут?

Да

Лаконичный, но бессмысленный ответ.

Github copilot хотел такое внедрить...но в закрытой бете.

А остальные...., разве что: ДА - "но посылку я вам не отдам(с)".

(Ах.да есть ещё пару ноунеймов стартапов, которые не могут .env из анализа исключить...они уж точно могут все и даже больше..даже AGI продадут.).

Вроде писали что bito.ai такое умеет. (Лично пока не проверял, руки не дошли.)

Что касается "делать фичи и фиксить баги", то я думаю так. Если ваш проект изначально хорошо продуман и структурирован так, что каждый элемент этой структуры имеет выраженную функциональность (которая не размазана по всему коду проекта), то модель прекрасно справляется с задачами оптимизации кода и исправлением ошибок, предлагая свои варианты реализации тех или иных функций. Я проделывал и такие (весьма успешные) эксперименты над кодом из своих проектов. Но это, возможно, будет в другой статье.

И сколько процентов реальных систем, которые пишутся и развиваются годами и разными командами, будут "хорошо продуманы и структурированы"? Хорошо продумано и структурировано обычно что-то небольшое, которое пишется с нуля и затем уже не переделывается. А когда начинаешь реализовывать затем многочисленные хотелки заказчиков, на этом вся хорошо продуманность и структурированность заканчивается.

И сколько процентов реальных систем, которые пишутся и развиваются годами и разными командами, будут "хорошо продуманы и структурированы"?

Прямо по больному, разрыдался, всю клаву слезами залил :).

Жду вашей статьи, очень хочется узнать подробнее и применить хоть как то самому.

Если ваш проект изначально хорошо продуман и структурирован так, что каждый элемент этой структуры имеет выраженную функциональность

Такой проект я и сам с удовольствием буду поддерживать.

Да, нейросети надо задать контекст. Gpt-4о имеет огромное окно контекста. Просто грамотно собери весь полезный Source и полезную информацию по проекту в один текст, из скорми чату. Увидишь он прекрасно разберётся если ты всё сделал правильно.

Если у тебя там 100500 файлов, предположи Какие из них нужны а какие нет для твоей текущей задачи. Это не обязательно даже делать руками, просто скрипт напиши который это сделает. Экспериментируй и всё получится.

Выбрать неизвестное количество файлов из 100500, или даже куски - это уже 50-90% работы моей по задаче на текущем проекте. Как сделать я обычно уже знаю к этому времени.

На том моменте когда я достаточно погрузился в проблему что бы собрать контекст и объяснить нейросети что нужно поменять, я обычно считаю работу сделанной и передаю Джуну. А он таким образом обучается)

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

У меня мысль уже появилась, что стоит попробовать разобраться, как обучить сеть на задачах проекта - у нас довольно подробные объяснения что нужно делать + добавить код из pr, истории уже на парудесятков тысяч задач... А вдруг получится что нибудь.

А если еще бы и смогла нейросетка по коду пройтись и отрефакторить/оптимизировать/переписать - тогда точно можно думать о смене работы.

В последнее время задаю вопросы, прошу советы у ChatGPT-4o на технические темы. И довольно часто она врёт/ошибается. Но т.к. в этом вопросе я тоже разбираюсь, говорю что она ошибается. Сетка говорит вы правы и выдаёт обычно правильный ответ. Но при первом ответе она тоже писала очень уверенно:) Поэтому я бы не рискнул говорить про "качество кода повышается". К ответам LLM надо относиться с подозрением, и желательно перепроверять. Но вообще с прототипами они помогают на отлично.

К ответам LLM надо относиться с подозрением, и желательно перепроверять.

Как и к ответам любых ноунеймов-человеков в интернете.

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

С точки зрения теста тьюринга - 4о, в принципе, прошла бы его лучше наверное, те же копирайтерские тексты у нее лучше чем у 4 получаются, но... фактология у 4о страдает.

4o значительно тупее 4турбо в вопросах кодинга. Она мультимодальная и дешевая, это не дается бесплатно пока что.

Кажется, LLM программирует лучше меня

Это только говорит о вашем низком уровне программирования (ниже чем у большинства). Каждая статья с такими выводами это опозориться на весь инет.

Дело в том что нейросеть формируется медианой по датасетам, то есть чего больше в датасетах то и будет выдаваться по умолчанию. Учитывая чем полон инет, о качестве говорить особо не приходится.

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

Не переживайте, если что-то там реально даст преимущество им сразу же воспользуются все кто смогут.

А пока стоит выйти за рамки датасетов и всё ОЧЕНЬ ПЛОХО, банально не умеет шейдеры писать, хотя казалось бы.

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

т.е система не умеет делать то, чему она не обучалась?

Модели знают про шейдеры, но у них серьёзные проблемы с пониманием и композицией кода.

Вам там выше намекали что ваша задача очень распространена в датасете поэтому легко решается.

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

Это не поможет. Например я пытался скармливать документацию того же shadertoy, добавлял свои уточнения, чтобы она не делала совсем глупых ошибок, модель слабо всё это учитывает, всё равно делает глупые ошибки. Без дообучения/finetuning никак.

Так этим уже пользуется огромное количество людей, вы просто среди отстающих. Либо вы очень высокой и узкой квалификации

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

Мозгом также пользуется огромное количество людей. Но всё-таки не все. /s

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

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

Не совсем. У меня есть знакомый бизнесмен, который вообще не программист и ни одного ЯП не знает. Он вполне успешно сумел реализовать (вроде ещё на ChatGPT 3.5) полноценный и рабочий бизнес-проект на питоне, довёл его до прода и даже что-то на нём зарабатывает (с пользователей). Не знаю, насколько это помогло, но до этого у него уже была реализована (и работала в проде) традиционная версия этого же проекта, разработанная обычными программистами. Проект не очень сложный (продажа курсов повышения квалификации, проведение тестирования по этим курсам, синхронизация этих данных с гос.учреждением отвечающим за контроль этого дела), но обычные разработчики его писали определённо дольше. Как по качеству кода я без понятия, но если оно работает и приносит деньги, то может это и не важно.

P.S. Предыдущая реализация была не на питоне. И, как я предполагаю, питон был выбран исключительно потому, что он лучше поддерживался ChatGPT, а бизнесмену не знающему никаких языков это было без разницы.

Он вполне успешно сумел реализовать (вроде ещё на ChatGPT 3.5) полноценный и рабочий бизнес-проект на питоне, довёл его до прода и даже что-то на нём зарабатывает (с пользователей).

И у него будет та же самая проблема, как и у значительного количества программистов: они программируют все ситуации, когда всё работает нормально (все исходные данные присутствуют и корректны) — но стоит какому-нибудь шлемазлу ввести неправильные данные, как оно хорошо, если просто не сработает как планировали — а ведь может и рухнуть с грохотом (и хорощо ещё, если не с жертвами)!

Вполне возможно. И что? Как Вы сами заметили, у обычных разработчиков эта проблема тоже есть. И какая тогда разница кто писал код?

у обычных разработчиков эта проблема тоже есть.

Если Вы нанимаете обычных разработчиков за плошку риса — мне Вас жаль.

Какой внезапный переход на меня. Нет, речь шла не о тех, кого нанимаю я, а о тех, на кого ссылались Вы в фразе "как и у значительного количества программистов". Мой вопрос всё ещё актуален, если что.

Извините, я имел в виду не конкретно Вас лично. Да, надо было написать "вы" как генерализацию.

Вот только те, которых там по факту наняли — они не программисты, они индиоты.

Допустим. Что это меняет? Явление это достаточно распространённое. Раньше бизнес нанимал кого мог и получал индиотов. Сейчас этот же бизнес в лице продакт-менеджера идёт к ИИ и тот ему пишет код сравнимого качества. Что и возвращает нас к моему оригинальному вопросу: какая тогда разница кто написал этот код?

Крайне упрощенно, разница в том, что программист реализует нужный алгоритм для решения задачи, а нейросеть реализует получение нужного результата в рамках задачи.
Грубо говоря расплывчато поставленную задачу получения результата умножения двух чисел нейросеть может решить как: if(a==2 && b==2) Console.WriteLine(a+b); if(a==3 && b==3) Console.WriteLine(a+b+b); а программист решит как Console.WriteLine(a*b);
Для каких-то ситуаций результат будет верен в обоих случаях и вполне возможно бизнесу этого хватит, но разница в подходах радикальна и если пользователь нейросетки разбирается в том что происходит хуже чем она, то он проблему просто не поймет.

Формально алгоритм нужен и ценен не сам по себе, а тем, что даёт нужный результат. И криво/странно написанных людьми алгоритмов в коде очень много (понятие "индусский код" вовсе не про ИИ, а про людей).

Людям нужен чисто написанный код для того, чтобы они могли вносить в него изменения. Если ИИ даже пишет а-ля индусский код, но у него не вызывает проблем быстро и эффективно чинить в этом коде баги и добавлять новые фичи - то какая разница что и как там внутри написано?

Формально алгоритм нужен и ценен не сам по себе, а тем, что даёт нужный результат.

Нужный результат (в строгих рамках поставленной задачи) можно получить просто вбив нужный результат.
Алгоритм же ценен тем, что с ним можно работать - сложность алгоритма можно оценить, правильность алгоритма можно доказать, алгоритм способен предсказуемо работать на новых данных.

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

понятие "индусский код" вовсе не про ИИ, а про людей

Индусский код это все же не про людей, а про стиль кода. Представьте себе разработку в стиле TDD. Каким бы чистым код не был, но если вся его задачи сводится к прохождению тестов, то ценность этого продукта прохождением тестов и будет ограничиваться. А когда Вы ставите задачу ИИ - он именно это и делает. Иногда этого достаточно, поэтому ИИ может быть неплохим помощником, но комплексные продукты (заметьте - не сложные, не большие, а именно комплексные) таким образом не сделаешь.

У меня есть подозрение, что ценность и важность того, что Вы называете алгоритмом - не актуальна в контексте нашей темы обсуждения.

Формально алгоритмом является любой императивный код, включая приложение целиком. Он включает в себя много мелких вспомогательных алгоритмов, которые вполне можно рассматривать отдельно (что обычно и делают), но всё целиком - тоже вполне себе алгоритм. Так что любой императивный код выданный ИИ - это тоже алгоритм. Вопрос ясности/наглядности алгоритма из кода тут значения не имеет (сложный для понимания алгоритм не перестаёт от этого быть алгоритмом).

Оценка сложности алгоритма нужна не сама по себе, а для оценки его влияния на производительность. В случае ИИ, предположительно, медленный алгоритм заменяется на более подходящий без необходимости предварительно оценивать их сложность, вместо этого нужен будет соответствующий промпт "этот вариант тормозит, напиши более быструю реализацию". Я веду к тому, что оценка сложности ценна не сама по себе, а в ситуации, когда за выбор алгоритма отвечают именно люди.

Доказательство правильности алгоритмов - это пока ближе к мифам. В реальных проектах никто формальными доказательствами корректности кода не занимается, возможно исключая штучные проекты для космоса и т.п.. Обычно под возможностью доказать правильность алгоритма понимают банальную читабельность и ясность, т.е. насколько легко людям оценивать его корректность на ревью кода (и тут оценка "корректен" на самом деле не гарантирует корректность, она просто описывает личную уверенность конкретного ревьювера). Иными словами эта ценность тоже связана с людьми. Если люди код ревьювить/модифицировать не планируют, то и эта возможность не важна.

Что до предсказуемой работы алгоритма на новых данных - если бы это было так, то понятие "баг" просто бы не существовало в наши дни, оно осталось бы в те времена, когда баги реально вызывались заползшими в компьютер насекомыми.

Насчёт TDD соглашусь, но, опять же, люди ведь реально так пишут, и довольно много. И в чём тогда разница, человек так написал или ИИ?

P.S. Что такое "комплексный продукт" и почему это стоп-слово для ИИ я не понял. Звучит так, как будто это вопрос размера контекста, который требуется учитывать ИИ - а он постоянно растёт, и то, что сейчас может быть для ИИ слишком большим скоро может стать приемлемым.

Формально алгоритмом является любой императивный код, включая приложение целиком

Алгоритм обладает свойством массовости, т.е. что-то вида print 2 + 3 является императивным кодом, но не является алгоритмом.

Больше похоже на байку. Это получается весь код LLM делал без ошибок (ведь ваш товарищ не знает яп и не может его проверить). И при этом как то товарищ понимал какой следующий шаг нужно сделать.

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

Я активно использую copilot, особенно хорошо он пишет юнит тесты, но при этом иногда (2 раза из 10) он выдает жёсткий бред., полностью бессмысленный код.

ЯП он не знал, но мне говорил, что по мелочи что-то очевидное правил после ИИ методом тыка.

Насчёт инфры - полагаю он тупо задавал ИИ вопросы как всё это поднять. И поднял.

Я, честно сказать, не верил в то, что это будет реально работать… но нет, проект уже почти год работает.

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

В этом нет никакой проблемы, GPT пишет сначала минимальный базовый код, который работает, а дальше ты пытаешь его промптами "а давай добавим прогрессбар", "а давай добавим скачивание самой новой базы с сайта", "а как быстрее работать с базой? хорошо, тогда перепиши обработку csv на modin[ray] и пущай сохраняет... как там компактнее? в parquet". Я на python не напишу hello world, а слов modin и dataframe я даже не слышал, пока мне их ChatGPT не написал.

Да, я большую часть жизни занимался программированием в разных областях, был руководителем крупного программного проекта в области полной автоматизации гостиничного бизнеса. Я хорошо представляю себе, что значит самому писать код (даже не так, а ЧИСТЫЙ КОД) или распределить задачу между другими группами программистов поручив это сделать им. В данном случае вместо меня это желает модель. Это несколько другой уровень и стиль работы и именно это я и хотел подчеркнуть.

Сколько ни пробовал пользоваться LLM для программирования, она не смогла решить то, что нельзя решить парой запросов в гугл. Сделать простой, но нудный и объемный рефакторинг вроде миграции между разными версиями SDK — без проблем. Написать простейшую прошивку для микроконтроллера из разряда «дернуть такую-то ногу при таком-то HTTP-запросе» — запросто, даже без ошибок. Исправить неочевидный баг, решение которого на стэковерфлоу не описано — начинаются галлюцинирование методов, попытки поменять подход, но саму суть решения оставить прежним, ну или в конце она просто выдает общие советы типа «почитайте документацию, почистите кэши». Да, инструмент для задач определенной специфики прекрасный, но чтобы прям «программировать лучше меня» — до этого еще слишком далеко.

Видел отдельные файтюны для исправления багов (там специальные датасеты используются), но пока не нашёл время попробовать.

Модели на существующих архитектурах и подходах с LLM никогда не будут программировать лучше вас, хотя тут всё сильно зависит от задачи и вашего уровня. Пока вы выше большинства средних людей, практически любая нынешняя нейросеть по умолчанию будет выдавать для вас скорее всего конструкции низкого качества, но вы можете задать определённые правила чтобы нейросеть склонять к нужному результату, можно поизвращаться с RAG, попытаться заставить её не использовать порочные практики и т.п. при условии что в датасетах было всё же достаточно материала, а если вам не повезло, она будет как баран в стену долбиться и ничем ей уже не помочь кроме как собственным файтюном чинящим веса.

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

но создавать по точному и подробному описанию значительные функциональные блоки очевидно уже может

Ввести с клавиатуры три числа, вывести на экран какое из них максимально, минимально, находится между максимальным и минимальным. Не использовать функции сортировки и нахождения минимума и максимума, только if. Лимиты токенов кончились, результаты даже близко не начались :)

```python

Ввод трех чисел с клавиатуры

a = int(input("Введите первое число: "))
b = int(input("Введите второе число: "))
c = int(input("Введите третье число: "))

Определение максимального числа

if a >= b and a >= c:
max_num = a
elif b >= a and b >= c:
max_num = b
else:
max_num = c

Определение минимального числа

if a <= b and a <= c:
min_num = a
elif b <= a and b <= c:
min_num = b
else:
min_num = c

Определение числа, находящегося между максимальным и минимальным

if a != max_num and a != min_num:
mid_num = a
elif b != max_num and b != min_num:
mid_num = b
else:
mid_num = c

Вывод результатов

print(f"Максимальное число: {max_num}")
print(f"Минимальное число: {min_num}")
print(f"Число между максимальным и минимальным: {mid_num}")
```

Вводим в качестве исходных данных: 3.1;

Вводим в качестве исходных данных: 10, 10, 10;

В начальном посте был всё же C#.

создавать по точному и подробному описанию

Было, кажется, какое-то слово для точных и подробных описаний на некоем языке. Не помню, какое. Кажется, на "П" начинается...

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

Тут скрывается ещё интересная тема: если по его мнению нейросеть лучше программирует чем он, то у него нет квалификации сделать полноценное ревью.

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

Часто натыкаюсь на то что ллм не справляется с "простыми" алгоритмами, приходится самому писать Ж)

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

Если вы так и формулируете задачу ллм (дословно), то неудивительно ;)

Именно так и будут формулировать большинство непрограммистов. А чтобы формулировать как следует - потребуются навыки программирования, внезапно. Или врожденный педантизм. Не знаю что реже встречается в популяции.

Да, в том-то и дело. Бывает, пока сформулируешь, так уже бы и сам написал (что-то простое).

Бывает, пока сформулируешь, так уже бы и сам написал

Это Вы ещё про отладку забыли...

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

Модель суммарно написала 672 строки кода

Надеюсь, вы понимаете, что это очень маленький объём кода, по которому оценивать какие-либо способности весьма опрометчиво.

Опрометчиво, но дает надежду и импульс для вектора движения.

Я уже второй год периодически делаю попытки хоть как-то получить пользу от ИИ в разработке. Скажу честно, пару раз помогло, но это один случай из 10. И там не шло речи о том, чтобы ИИ писал именно код. Это просто были ответы на вопросы, как сделать что-то, с примерами кода.

Очень интересная ситуация сложилась в Phpstorm и других IDE от jetbrains. Сами по себе эти IDE достаточно умные и умеют давать крутые подсказки и автокомплит. Но недавно туда добавили подсказки от ИИ. Обычная подсказка выпадает вниз, а ИИ-шная вправо. И чаще всего оказывается так, что ИИ-шная подсказка вообще невпопад, например, предлагает вызвать несуществующий метод. В то время, как в "старомодных" подсказках такого не может быть по определению. То есть добавили новую ИИ фичу, которая делает то же, что и сама IDE, только хуже. Ну правда в одном из пяти случаев эти подсказки реально помогают сэкономить время.

Но в целом, чем больше времени проходит, тем больше кажется, что весь этот ИИ-бум - такой же скам, как и блокчейн.

Преобразуй внешний вид шариков из квадратной формы в круглую.

Довольно много говорит о "понимании" моделью задачи.

Я тоже очень веселился, когда шарики были изначально квадратными. Видимо модели это все равно и надо было явно это указывать первоначально. А вообще, глобально, вы очень правы в том, что то что кажется очевидным для нас, модели нужно четко и подробно описывать. Это такой особый стиль общения с ней, ее глубокое свойство, которое проявляется постоянно.

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

Я только что понял для чего нужна ИИ -- для любимого занятия людей -- микроменеджмента!

А если предложить ИИ писать сразу в ассемблере? Сможет ли она вернуть те времена, когда много программ помещалось в дискету?

Я буду создавать довольно известную в народе игру "Шарики", Lenes (Color
Lines), которая является непростой в реализации как в логическом, так и
в графическом смысле. Предварительно я убедился, что модель о ней
ничего не знает
.

Очевидно что это неправда.

LLM программирует лучше меня

100%

Спустя ряд экспериментов становится понятно, что ответ на этот вопрос – уверенное да!

ИИ действительно так хорош? В чём проблема, зачем убеждать в этом аудиторию? Создавайте игры, выкладывайте в Steam, получайте деньги))

Но что-то даже и демо нет. Наверное gpt пока не справляется с деплоем, ждём следующую версию.

Большая сложность при создании игры это вовсе не кодинг.

НЛО прилетело и опубликовало эту надпись здесь

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

НЛО прилетело и опубликовало эту надпись здесь

Далее код и комментарии.

А где код?

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

Вставлю пять копеек.
Вот я Си-шарп не знаю. Вообще. Совсем.
Если я начну "писать" при помощи LLM, что "у меня" получится и как быстро я запрошу помощи у кого-то кто хоть раз видео этот Си-диез?

Рабочий подход такой: берем написанный LLM код, запускаем. Если упало с ошибкой - это прекрасно, скармливаем обратно код и ошибку, повторяем до победного. Если просто нет результата без ошибки - уже печальнее, просим LLM распихать везде принты и смотрим, где процесс спотыкается. Информацию об этом скармливаем LLM и молимся.

молимся

Вот это — самая важная часть процесса...

Поэтому скилл работы с LLM в том, чтобы избегать ситуаций, когда нужно молиться :)

Пусть лучше с ошибкой падает, там есть что скормить обратно LLM для исправления.

Поэтому скилл работы с LLM в том, чтобы избегать ситуаций, когда нужно молиться :)

Так для этого уже есть отлично работающий способ - писать сразу на формальном языке. Естественные языки по своей природе для этого не годятся.

Как-то я спросил у всех актуальных llm простой вопрос по комбинаторике (вероятность последовательных результатов при броске d20) — и они дали мне неправильный ответ. Потом я спросил, как этот ответ был получен, — и две из трёх дали мне правильный алгоритм.

Сделал такой вывод: использовать ответы (код) от нейросетей можно только там,

1. Где 100% покрытие тестами.

2. Где есть ОДЗ входные и выходные и можно их все проверить.

3. Где есть эксперт высочайшей квалификации, готовый этот код просмотреть.

Ведь нейронка куда хуже человека тем, что может создать граничную ситуацию там, где её нет.

Никогда нельзя быть уверенным, что в галлюцинировании llm не добавила if (v == random(37)) throw RuntimeException() в функцию сложения двух чисел.

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

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

Единственное что у меня был изначально другой вопрос который меньше подвержен выборкам в силу консервативности людей. А именно шахматистов. Вопрос элементарный - " В каком порядке детям легче изучать шахматные фигуры в самом начале обучения". Если chatGPT еще советует, то Капилот вообще тупит... Хотя казалось бы - вопрос то простой.

А так то - пусть балуются люди. Через несколько лет (максимум 10) специалисты которые НЕ повелись на хайп будут больше востребованы. Это не первый случай в истории человечества если что. Главное не скатиться в результате в темные века :-)

почему он выдает такой ответ? Рассуждения привели к тому что просто по количеству вариантов ответа делается выборка.

Именно так. Оно просто оценивает, какой следующий токен наиболее вероятен после всех предыдущих!

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

если будет какой то ответ встречаться в большом количестве - то он и будет предложен для результата.

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

Боюсь что в данном случае никакая температура просто не победит :-) Меня пугает именно такой алгоритм, потому что чем дальше - тем больше будет неверных ответов и они уйдут в "неконтролируемое падение".

Просто для себя я сделал давно вывод что проще стать специалистом в какой то области чем доверяться ответу ИИ. Но попытки уверить что ИИ облегчает жизнь - просто "умиляют".

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

Вкратце - нейронка это рандомная выборка с удельным весом частоты ранее встреченных вариантов. Что будет если вес неверного или сомнительного варианта будет сильно выше чем вес другого? К чему это приведет? Будет ли это развитием человечества или его падением т.к. чем больше сомнительных вариантов - тем чаще они будут встречаться и тем больше сомнительных вариантов и тем чаще они будут встречаться и.... Ну в общем поняли :-)

Хотя человечество и сейчас так живет конечно. Взять те же гороскопы или близнецов...

вы, когда думаете, заранее знаете следующее предложение, которое вы скажете?

Во-первых, сразу отметим, что я не нейронка (в том смысле, что как минимум не такая, как в LLM), и таки думаю по-другому. Во-вторых, представьте себе, когда меня просят рассказать, скажем, про устройство автомобиля, я начинаю про колёса, но уже заранее знаю, что потом я буду рассказывать про руль, двиатель, бензосистему, электросистему и и.п.

это знание заранее как появляется? оно не генерируется в вашей голове, как план рассказа? чем это отличается от нейронки, у которой будет предустановка "перед изложением составь краткий план рассказа, но не пиши его в чат, а в чат пиши только процесс генерации рассказа по ранее сгенерированному (но скрытому от пользователя) плану? разница между вами и нейронкой в том, что нейронка высказыает все, а вы часть мыслей держите при себе и озвучиваете лишь то что считаете нужным, но генерируются все ваши мысли и озвучиваемые, и не озвучиваемые одинаково последовательно, так же как у нейронки

Прикиньте, я вышеупомянутую машину мысленным взором вижу целиком,

примерно так

Меня, наоборот, сильно тормозит необходимость преобразовавывать это в слова. "Чёрт, про что сначала рассказать — про колёса или про двигатель?"

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

вы, когда думаете, заранее знаете следующее предложение, которое вы скажете?

К сожалению, да. "К сожалению" - потому что это очень сильно замедляет речь (пока продумаю фразу целиком и буду готов её сказать - у собеседника контекст уже ушёл).

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

Она думает, что отвечает правильно и считает, что кетчуп и мороженое лежат рядом, потому что это продукты питания, которые находятся в холодильнике, условно, их можно смешать.

Да ёктель, оно не "думает", оно просто оценивает, какой следующий токен наиболее вероятен после всех предыдущих!

Полистал статью, почитал комменты... Ну что - все как и думал (да, я знаю что я не уникальный :-) тапками не кидать).

В данный момент то что называют ИИ - совсем не ИИ, а поисковая и компиляторная машина результатов. Адепты ИИ суют его куда угодно, он привлекает кучу денег от таких же адептов но уже с деньгами. А смысл?

Для того чтобы написать любую программу не нужно иметь хороших программистов. Нужно иметь отличного СИСТЕМНОГО АНАЛИТИКА. Что Вы делали когда задавали задачу LLM? Вы работали именно СА. далеко не образцово раз пришлось делать несколько попыток уточнить задачу. Но когда я поверхностно слушал курсы СА то уяснил простую истину - хорошо поставленная задача от СА не требует от программиста вообще способности думать. Утрирую конечно, но думаю понятно. Работа программиста в случае ОТЛИЧНОГО СА превращается в рутину которую может выполнить любой Джун.

А теперь - скажите мне - сколько Вы знаете таких СА которые уровня 5+++? Но и СА могут ошибаться, а уж про корректировку задачи после Бизнес Аналитика я тактично умолчу, потому что иногда нужно переписать полностью всю задачу бывает.

На подумать еще два вопроса

  1. Недавно проскакивала новость что сделали ИИ который помогает проходить игры. И предрекали ему крах просто по причине того что ИИ работает лучше чем текстовые инструкции по прохождению -> ИИ убивает сервера прохождения как бизнес -> сервера закрываются -> источник ИИ по прохождению игр пропадает -> ИИ глупеет и умирает... Будет так или нет?

  2. Для проверки "интеллекта" у ИИ у меня есть простой вопрос. "В каком порядке детям легче изучать шахматные фигуры в самом начале изучения".Я все жду невозможного - правильного порядка изучения - Ладья -> Слон -> Ферзь -> Конь -> Пешка -> Король. Почему ИИ НЕ выдает никогда именно такой порядок изучения фигур?

Радость новой игрушке прикольная, но в плане применения на долгом промежутке времени я вижу одни минусы. Люди мозгами не готовы к подобному "инструменту" на данный момент.

Замени LLM на "талантливый стажер", ничего не поменяется. Он технически умеет писать код, и порой даже знает сложные вещи, имеет пет-проект. Но за ним надо весь код ревьювить под лупой - предсказуемость нулевая, опыта коллективной разработки нет, опыта работа с бизнесовым кодом нет. В итоге такой стажер при первом рассмотрении полезен, но если глянуть чуть глубже - отнимает время на ревью у остальной команды.

Однако стажёру можно сказать "никогда больше так не делай!" — и он больше так не будет. Желаю удачи добится такого же эффекта от LLM.

так и нейронка не будет. вы просто не учитываете, что ей стирают память. если вы для промпта настроите автоматический префикс - будет ровно то что вам нужно

Так и я ровно про то же. В результате Ваш "автоматический префикс" будет покрывать примерно 30 лет моего опыта (и, кстати, не только опыта программиста, но и опыта на конкретном проекте) — и размера будет соответствующего.

вы привели в пример инструкцию для работника. при чем тут ваш опыт работы и навыки? аналогом вашего 30 летнего опыта является обучение нейронки, ее можно дообучить для определеного поведения. а префикс для промпта - это аналог договора при найме или аналог должностной инструкции - как ваш пример с инструкцией "больше так не делай"

Я пробовал попросить несколько разных моделей (на chat.lmsys.org) написать код на Brainfuck'е, который бы выводил простой текст ("YO"). Все из опробованных моделей уверенно сгенерировали код и даже добавили (сомнительное) описание того, как он работает. Только вот при попытке выполнить этот код, даже близкий к правильному результат не был получен ни разу. В основном выводился мусор или ошибки. В редких попытках - что-то типа "He" (предположительно кусок от Hello world, примеров с которым в интернете много). Что дало мне окончательное осознание того, что LLM просто умеет хитро и красиво складывать что-то из кусочков того, что было использовано при её обучении, но никак не может синтезировать что-то новое.

LLM просто умеет хитро и красиво складывать что-то из кусочков того, что было использовано при её обучении,

Так оно и есть. LLM просто оценивает, какой следующий токен наиболее вероятен после всех предыдущих. (Я эту ссылку уже раз десять в комментариях привёл).

Она где-то еще и на русском давно была, во всяком случае я читал что-то подобное примерно тогда же, возможно и даже на Хабре попадалось.

LLM просто оценивает, какой следующий токен наиболее вероятен после всех предыдущих. (Я эту ссылку уже раз десять в комментариях привёл).

Атомная станция - это большой кипятильник?

Всегда весело читать ваши ответы, они разбавляют этот праздник слепой радости от нейросетей.

Вот есть такие цепи Маркова, там тоже буквально оценивается какой токен наиболее вероятен после всех предыдущих, он и подставляется. Даже "правдоподобных" ботов на нем делали, и стихи писали, но славы почему-то не сыскали.

Но LLM на трансформерах - это в первую очередь механизм Внимания. Умножая слои нейросети на слои внимания - происходит перевзвешивание весов, тем самым в конце остается тензор "сути", который отвечает на заданный вопрос.

Сильно упрощая - да, это предсказание наиболее вероятного токена, только Llama3 весом всего 70гб (это меньше веса википедии) может дать правильный ответ на сложный вопрос, суммаризируя знания из многих источников концентрируя их в коэффициенты голов Внимания, а цепи Маркова нет, хотя казалось бы, делают одно и тоже.

Именно благодаря Вниманию, даже подмешав в середину ответа модели мусор, который должен повести модель по другому пути, что сбило бы столку цепи Маркова и даже RNN, LLM с Вниманием всё равно может вернуться (зависит от качества и количества голов внимания) к ответу на заданный вопрос, "про себя не понимая" почему она эту чушь начала отвечать, сказав "Но всё-таки вернемся к ответу на ваш вопрос".

Именно улучшение алгоритмов Внимания каждый раз дает скачкообразный рост качества моделей, или увеличивает скорость ответов, или снижает размеры моделей.

Приведу пример на quill-72b-instruct.i1-IQ3_M.
Это модель квантованная до 3 бит с оригинальных Float32, весит всего 35гб. Модель не теряет разумность и умение писать на русском даже когда ей буквально урезали все веса в 10 раз, и это как раз за счет того что в gguf в llama.cpp тензоры Внимания и Запроса специально квантуются в меньшей степени, квантуются веса "информации" модели, а самое важное пытаются не трогать.

И да, я буквально написал модели, что вмешиваюсь в её работу, но она думает, что это она сама такое написала, поэтому и извиняется.

(Устало) Ну я же ссылочку привёл! Там не какой-то Цой с бугра, а целый Стивен Вольфрам рассказывает. И когда его мнение не согласуется с Вашим, Вы уж извините, я ему доверять буду.

Ну я же ссылочку привёл!

Всё-таки "атомная станция - это большой кипятильник", жаль, думал беседы поднимут своё качество.

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

Вы уж извините, я ему доверять буду.

Когда дочитаете.

Всё-таки "атомная станция - это большой кипятильник",

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

Да, это было как раз чтобы продемонстрировать, собеседник и правда пытается разобраться/обладает знаниями, или он любит "звук своего голоса".

Когда сами дочитаете вашу ссылочку напишите. Или не пишите, оставайтесь верным себе, это тоже весело.

Кстати, расскажете, как у вас это "вмешиваюсь в ответ" получилось? В смысле, что вы для этого использовали? Интересно было бы самому поковыряться, но с ходу не могу вспомнить, где из известного мне такое можно провернуть.

Не знаю на счет проприетарных моделей, но локально это делается почти любым GUI (например, text-generation-webui, LM Studio), так как все крупные и популярные клиенты поддерживают редактирование ответа модели.
Всё что нужно это отредактировать ответ и нажать 'continue', модель продолжит генерацию ответа.

Кажется, LLM программирует лучше меня

Так это LLM такая классная, или у вас настолько плохо с программированием?

Кажется, единственная (внезапная) польза от LLM - это когда тебе лень в чем-то разбираться, и ты думаешь "а засуну в гпт, вдруг что выйдет".
Выходит конечно же мусор, однако местами правдоподобный. И вот ты уже половину выходного осваиваешь новый инструмент, потому что уже как-то втянулся после нескольких попыток заставить гпт довести до ума полученный код и бросать жалко.
С гуглежом и молитвами картинка более-менее начинает складываться. А без гпт так бы и не дошли руки

С гуглежом и молитвами

"Добрым словом и пистолетом гуглежом и молитвами легче добиться нужного результата, чем одними молитвами!" почти (с)

Есл (не дай бог) поисковики заменят подобными системами без возможности увидеть другие варианты - то и это будет нереально. Ведь ИИ - непогрешим! чур меня чур....

Проблема как раз в том что мусор выходит правдоподобный. Люди (как я заметил) редко удосуживаются разбираться в предмете если есть готовый ответ. А потом еще и настаивают что они правы, потому что "но ведь так было написано". Искать первоисточник - как то лениво почему то. Хотя уж точно события последних лет показывают что доверять чему либо на слово БЕЗ доказательства или хотя бы подробного описания фактов - опасно. Но, увы...

Примеров полно. Начиная с Ковида или лоскоземельщиков. Это прям примеры за которые не посадят. Да и Гороскопы из той же оперы - доказывать что-то иногда бестолково. Сейчас прикручивают ДНК в обоснование чего либо бездоказательного, но зато красивого. Из чего можно сделать вывод что chatGPT и подобные ему это из той же оперы. Хороший поисковик снабженный деньгами, не более того. А вот если в поисковике представлен ответ который после логического вывода может быть другим - этого уж и не узнаешь - ты же его НЕ увидишь! А разбираться в предмете - ну нафиг, это время.

Кажется, LLM программирует лучше меня

Мне уже который день хочется спросить — а Вы точно уверены, что это достижение LLM, а вовсе не Ваша недоработка?

Так что "в наше время этим не гордились" (c)

Кажется, LLM программирует лучше меня

Да-да, а ещё кажется, что CAD конструирует лучше меня. Вот читал я текст, и описание процесса что-то смутно мне напоминало. Вот стоит конструктор перед интерактивным экраном. То там чертёж поправит, то что-то дорисует. А, может быть, уберёт. А система автоматически правильно всё нарисует. Лучше, чем я это сделаю. Ничего не упустит. Линии нужной толщины, шрифты по правилам, проекции - залюбуешься, и ни разу не ошибётся, зараза.

Помните, в старые добрые времена в новостях показывали огромные залы с рядами кульманов. За кульманами стоят люди. Чертят. Они кто? Если спросить их самих? Кто-то, вероятно, ответит, что он конструктор. Но хочется верить, что большинство ответит как есть - чертёжник. СпросИте писателя кода, кто он. Все ответят - программист. Звучит гордо.

В обсуждаемом тексте, на мой взгляд, автор как раз, наконец, занялся программированием. А роль кодировщика передал машине. Он что-то задумал, сформулировал (относительно непротиворечиво) свои пожелания, следил за процессом и по необходимости вмешивался в него, то есть, понимал, что происходит, и был способен понять чужой код и указать, что конкретно в нём не хватает, или является лишним. Получив результат, он способен оценить его адекватность. Но, позвольте. В индустрии конструирования это давно уже делается. Освободилась туча чертёжников. В чём катастрофа?

Линии нужной толщины, шрифты по правилам

Ну при таком подходе — пишущие машинки заменили писателей, ага. Нет, они не писателей заменили, а писцов.

Ну так и у тех, кого LLM заменит, правильное название — кодеры (code monkeys). А программист — это гораздо серьёзней.

В чём катастрофа?

В том, что все думают, что не нужны будут именно программисты, а не кодеры.

Кармы не хватает плюс воткнуть)

Кстати, продолжая аналогию, во времена всяких БЭСМ программисты писали, скажем, на Фортране, отдавали свои записи девочкам, девочки перепечатывали эти записи на клавиатуре перфораторов — получались перфокарты, которые скармливались в машину.

Потом появились терминалы, и эти девочки-перфораторщицы стали не нужны. Сделало ли это ненужными программистов?

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

P.S.

Учитесь пользоваться инструментами.

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

Для запуска LLM хватает cpu и от 8 гб опеоативной памяти (это для моделей до 8b, как правило). Если не хочется долго мучаться с настройками, то пробуйте запустить ollama. Если используете студию от JB, то там полно плагинов, которые умеют работать с api ollama, которая может быть запущена и локально и удаленно. В ollama можно загрузить самые разные модели. Подробнее сможете прочитать на их официальном сайте и github (там достаточно подробные инструкции). Так же, вместо планинов, можно запустить Open WebUI. Это вебморда в стиле chatgpt, которая умеет работать и с api ollama, и с api chatGPT и ещё с чем-то вроде. Чтобы из РФ получить оплаченный api chatGPT за рубли воспользуйтесь ProxiAI. Стоит учитывать, что открытые модели LLM сильно уступают chatGPT, довольно долго работают на cpu, с бубном запускаются на винде (я от неё уже давно отказался и радостно сижу на Debian). Чтобы работало пошустрее нужна видеокарта. В идеале nvidia поддерживающая драйвер от 525 версии. На картах amd тоже можно запустить, но только на linux и только для карт поддерживающих драйвер 15 версии (есть исключения, но там бубуен гигантский нужен).

За сим я рекомендую VPN + бесплатный chatGPT. Бесплатных запросов вполне хватает. Нужно помнить, что чем менее популярен провайдер vpn, тем болше шансов, что chatGPT его проглотит (я вообще личный на vps настроил и горя не знаю).

Зарабатываю программированием больше 30 лет. Сейчас начал использовать chatgpt4o, код сгенерированный им использую в реальных проектах (пока только небольшие куски). Может кто нибудь знает есть ли локальные llm генерирующие код не хуже gpt4o? Как называются?

4o - топ среди LLM. Локальные модели хуже и прожорливее.

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

Что-то я так и не нашёл в тексте, какую именно LLM использовали. Какую-то публичную GPT или какую-то self-hosted модель?

В качестве модели я буду использовать специально обученную для кодинга на 80 языках квантованную Codestral-22B-v0.1-Q4_K_M (Про оригинальную модель можно узнать на сайте разработчиков https://mistral.ai/news/codestral/).

Вот же. Прям в тексте. Это self-hosted модель.

Хм, видимо как-то пропустил при первом прочтении, а потом уже искал в других местах с телефона.

Спасибо. Видимо моя 8 ГБ видюха такого не потянет)

Простенькую модель может потянуть. Плюс ПО запускающее модели, как правило, умеет в одновременное использование cpu и gpu

Видимо моя 8 ГБ видюха такого не потянет)

Всегда есть квант, который влезет =3

А если взять новую DeepSeek Coder-V2 Lite на 19B, то там и IQ3 влезет в 8гб. Плюс как уже подсказали, часть слоев можно вынести на видяху, а часть оставить на процессоре.

По поводу низкой квантизации, чем больше модель, тем лучше она переносит квантование, вот тут я показывал, что даже 1-битная квантизация с матрицей важности на модели 72B умнее, чем 8B модели: https://habr.com/ru/news/822167/comments/#comment_26941921

Если у вас AMD видяха, то на Windows с ускорением koboldcpp-rocm (rocm аналог cuda).

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

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

Более того - некоторые из таких "костылей" в принципе невозможно оценить на тему "можно ли это убрать", если смотреть только на код. У меня в одном легаси-проекте есть здоровенный комментарий вида "да, здесь математика очень странная, но заказчик сказал, что результат правильный, так что не трогаем", например.

У меня в одном проекте было такое. Босс сказал "сделать вот так", и мы сделали. Зачем, почему — никто не мог понять. Годика через два я наконец понял — действительно, с математической точки зрения было правильно, но мы не врубались.

Нет, не лучше. Как секретарша, для написания рутинного кода - прекрасно. Как только начинаешь промптами корректировать написанное - сразу вылазит куча несогласованного кода, прут ошибки. Чем больше правишь, тем больше косяков вылазит.

А ещё есть временная сессия, после истечения которой тупой LLM анализирует не весь диалог, а только последние сообщения. Там начинается вообще печаль.

Так что повторюсь, как LLM секретарша - норм, как прогер - нет.

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

Публикации

Истории