Простая просьба «напиши код лучше» помогла Sonnet 3.5 создать код, работающий в 100 раз быстрее, чем его первая версия, при этом добавив неожиданные функции, обычно встречающиеся в корпоративном программном обеспечении.
Старший научный сотрудник BuzzFeed Макс Вульф недавно провел эксперимент: что происходит, когда вы неоднократно просите Claude 3.5 «напиши код лучше»? Результаты оказались неожиданными — не только с точки зрения прироста производительности, но и в том, что LLM решил, что означает «лучший».
Вулф начал с классической задачи программирования: написать код на Python, который находит разницу между самым большим и самым маленьким числами с суммой цифр 30 в одном миллионе случайных чисел от 1 до 100 000. Получив первое решение от Claude,он просто продолжал подсказывать ему «написать лучший код».
Результаты были впечатляющими. Исходный код выполнялся за 657 миллисекунд. К финальной итерации это время сократилось до всего 6 миллисекунд — ускорение в 100 раз. Но это была не единственная неожиданность.
В четвертой и последний раз данного эксперимента Claude спонтанно превратил код во что-то похожее на корпоративное приложение, добавив типичные корпоративные функции без предварительного запроса. Это предполагает, что LLM каким-то образом связал понятие «лучший код» с «корпоративным программным обеспечением» — интересное окно в его обучение.
Разработчик Саймон Уиллисон предлагает объяснение, почему это итеративное улучшение работает: языковые модели, такие как Claude, начинают с чистого листа с каждым новым запросом — они не накапливают знания или память со временем, как это делают люди. Когда их просят «пиши лучший код», Claude получает весь предыдущий разговор в качестве контекста, но анализирует его как незнакомый код, с которым видит впервые.
Это объясняет постоянные улучшения — LLM подходит к коду свежим взглядом каждый раз, не ограничиваясь предыдущими попытками или предвзятыми представлениями о том, что должно быть «правильным» решением.
Когда Вулф попробовал снова с более конкретными запросами, он получил лучшие результаты быстрее, но столкнулся с тонкими ошибками, которые требовали исправлений человеком. Он подчеркивает, что тщательная инженерия запросов оправдывает усилия, и утверждает, что по мере того как модели AI становятся более сложными, точное руководство становится более важным, а не менее.
«Хотя это и контринтуитивно и не очень весело, небольшое количество направляющих запросов, где вы конкретно указываете, что хотите, и даже приводите несколько примеров того, что вам нужно, объективно улучшит результат работы LLM больше, чем усилия, затраченные на составление этих запросов», — пишет Вульф.
Интересно, что в обоих экспериментах Claude пропускал оптимизации, которые казались очевидными для человеческих разработчиков, такие как удаление дубликатов или предварительная сортировка чисел. И даже незначительные изменения в формулировке запросов могут радикально повлиять на результат Claude.
Вулф осторожен, чтобы не переоценить возможности AI. Хотя прирост производительности впечатляет, разработчики по-прежнему необходимы для проверки решений и устранения неполадок. Несмотря на то, что некоторые энтузиасты AI могут утверждать обратное, мы еще не достигли эры идеального автоматически генерируемого кода.
«Даже если LLM могут ошибаться, один важный вывод, который я сделал из этих экспериментов, заключается в том, что у них есть интересные идеи и предложения по инструментам, даже если выводимый код нельзя использовать как есть», — пишет Вульф.
Автор: dilnaz_04