В последние годы возможности программирования искусственного интеллекта (ИИ) продолжают развиваться, но еще не достигли совершенства. Недавно Макс Вульф, старший специалист по данным в BuzzFeed, в ходе экспериментов обнаружил, что если большая языковая модель (LLM) постоянно снабжена подсказками «написать лучший код», ИИ действительно может генерировать лучший код. Это открытие привлекло широкое внимание, и известные ученые в отрасли ИИ также проявили к нему большой интерес, подчеркнув важность итерации и быстрого дизайна слов.
В эксперименте Вульфа он использовал версию модели ИИ Claude3.5Sonnet для выполнения ряда задач по программированию. Сначала он поставил перед моделью простую задачу программирования: как найти разницу между минимальным и максимальным значениями среди миллиона случайных целых чисел, сумма цифр которых равна 30. Получив это задание, Клод сгенерировал код, отвечающий требованиям, но Вульф считал, что в коде еще есть место для оптимизации.
Затем Вульф решил попросить Клода выполнить итеративную оптимизацию, используя подсказку «Пишите лучший код» каждый раз после генерации кода. После первой итерации Клод реорганизовал код в объектно-ориентированный класс Python и реализовал две существенные оптимизации, увеличив скорость работы в 2,7 раза. Во второй итерации Клод добавил многопоточную обработку и векторизованные вычисления, благодаря чему в итоге код стал работать в 5,1 раза быстрее базовой версии.
Однако по мере увеличения количества итераций улучшение качества кода начинает замедляться. После нескольких раундов оптимизации, хотя в модели пытались использовать некоторые более сложные методы, такие как JIT-компиляция и асинхронное программирование, некоторые итерации привели к снижению производительности. В конечном итоге эксперимент Вулфа выявил потенциал и ограничения итеративных подсказок, заставив людей по-новому взглянуть на будущее программирования ИИ.
Это исследование не только демонстрирует потенциал применения ИИ в области программирования, но и напоминает нам, что, хотя ИИ может улучшить качество кода за счет непрерывной итерации, в реальных приложениях вопрос о том, как правильно разрабатывать подсказки и балансировать между производительностью и сложностью, по-прежнему имеет важное значение. Темы обсуждаются подробно.