Search
Write a publication
Pull to refresh

Comments 7

вход кода на JS:

Вы тут забыли вставить код.

Или написать его.

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

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

Примеры кодов из статьи похожи на применение обфускаторов и преобразователей кода (архиваторов).

Так эксперимент-то вы провели? А то лично для меня выглядит весьма вероятным, что минификация кода или не влияет на эффективность его разбора LLM вообще (грубо говоря, занимаемая токеном память не зависит от его длины), или влияет в лучшую сторону (имя токена используется как дополнительная информация, вроде его типа. Эта гипотеза подтверждается тем, что автокомплит в XCode и VS Code реагирует уже на имя переменной).

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

Я наблюдал обратный эффект. LLM обращает огромное внимание на то, что и как называется в коде. Вплоть до того, что можно ввести ее в заблуждение написав функцию subtract(a,b) которая будет делать возвращать a+b (а уж есть добавить невинный коммент "because b is always negative" - вообще развал мозга!). Эффекты бывают самые разные - начиная от того, что она просто верит названию и не обращает внимание на то что там написано, заканчивая тем, что оно по-разному помнит что эта функция делает - в двух соседних предложениях.

Замена же названий функций и переменных на безличные func_452 и int_17, float_21 - однозначно ухудшает качество выдачи. Красивое форматирование - да, можно выкинуть, LLM его как правило не видит. А вот минификация - ой!

Даже простое возвращение имен в AST - уже благотворно влияет на результаты LLM...

Да, согласен, в текущих LLM действительно есть такая проблема. Я как раз читал о ней - https://www.getpanto.ai/blogs/the-illusion-of-thinking-why-apples-findings-hold-true-for-ai-code-reviews всё сводится к тому, что для корректной проверки сложного кода LLM-ам необходим дополнительный контекст (история изменений, архитектурные документы и обсуждения команды), иначе и человек, и ИИ могут попасть в "иллюзию понимания" - видеть только "что написано", но не "зачем и почему".

Sign up to leave a comment.

Articles