Компания Anthropic провела эксперимент, сформировав группу из агентов искусственного интеллекта, которые совместными усилиями с нуля написали компилятор языка Си. Программа работает далеко от идеала, уступая существующим аналогам, но демонстрирует возможности современных систем ИИ.
Источник изображения: Luca Bravo / unsplash.com
Отчёт о проделанной работе представил исследователь Anthropic Николас Карлини (Nicholas Carlini). Он запустил в облачном окружении 16 экземпляров новейшей модели Claude Opus 4.6, подключил их к общей кодовой базе с минимальным контролем и поручил им с нуля разработать полноценный Си-компилятор. Работа заняла две недели, потребовала почти 2000 сессий работы сервиса Claude Code и обошлась примерно в $20 000 за доступ к ИИ по API. На выходе ИИ-агенты написали на языке Rust компилятор объёмом 100 000 строк кода, способный самостоятельно собрать загружаемое ядро Linux 6.19 на машинах с архитектурами x86, Arm и RISC-V.
В рамках эксперимента исследователь задействовал новую функцию Claude Opus 4.6 — «команду агентов». На практике каждый экземпляр Claude был запущен внутри собственного контейнера Docker — он клонировал общий репозиторий Git, принимал задачи посредством lock-файлов, после чего отправлял готовый код обратно в репозиторий. Центральный агент, который координировал бы работу прочих, отсутствовал. Каждый экземпляр определял наиболее очевидную задачу для дальнейшей работы и начинал её решать. Когда возникали конфликты слияния, ИИ-агенты разрешали их самостоятельно.
Получившийся таким образом компилятор Anthropic опубликовала на GitHub. Он действительно может компилировать код таких открытых проектов как PostgreSQL, SQLite, Redis, FFmpeg и QEMU, а также проходит 99 % тестов GCC. Но есть и серьёзные ограничения: он не компилирует 16-битный машинный код для запуска Linux, поэтому на этом этапе подключается GCC; ассемблер и линкер работают со сбоями; даже при наличии всех оптимизаций он производит менее эффективный код, чем GCC. Наконец, исходный код компилятора на Rust хотя и функционален, но по качеству он даже не близок к тому, что мог бы создать опытный программист.
Источник изображения: Mohammad Rahmani / unsplash.com
Автор проекта очень старался преодолеть некоторые из ограничений, но успеха так и не добился — при попытках добавить новые возможности или исправить ошибки существующие функции часто переставали работать. Сработала закономерность, при которой кодовая база разрастается до такой степени, что ни один участник проекта не может в полной мере её понять. Предел наступил на отметке около 100 000 строк кода — видимо, это максимум возможностей для автономных ИИ-агентов.
Компилятор характеризуется как «реализация в чистой комнате» — во время разработки у ИИ-агентов не было доступа в интернет. Следует также отметить, что указанные затраты в $20 000 — это только стоимость токенов при доступе к ИИ через API. Сумма не включает в себя расходы на обучение ИИ-модели, труд организовавшего проект исследователя, а также труд программистов, которые создали наборы тестов и эталонные реализации. Подготовительная работа действительно оказалась непростой — проектирование среды для ИИ-агентов потребовало больше усилий, чем непосредственное написание кода компилятора.
Обнаружилось, что многословные запросы тестов засоряют контекстное окно модели, и она теряет из виду то, чем занималась. Чтобы решить эту проблему, исследователь разработал средства запуска тестов, при которых выводятся только несколько строк сводки, а запись производится в отдельные файлы. Кроме того, у Claude отсутствует чувство времени — ИИ может часами запускать тесты, не продвигаясь вперёд; поэтому пришлось создать быстрый режим с обработкой от 1 % до 10 % тестовых случаев. Когда все 16 ИИ-агентов застряли в попытке обработать одну ошибку ядра Linux, пришлось в качестве эталона запустить GCC — он компилировал большинство кода самостоятельно, а ИИ-агентам доставались случайные фрагменты. Когда в этих фрагментах возникали ошибки, ИИ-агенты их исправляли.
Все эти недочёты отступают перед основным выводом — ещё год назад ни одна большая языковая модель не смогла бы проделать такую работу, даже при надлежащем контроле и неограниченном бюджете. Механизм параллельного запуска нескольких агентов с координацией действий через Git — новаторское решение, а разработанные автором исследования инженерные приёмы по повышению производительности ИИ-агентов способны оказать влияние на дальнейшее развитие сегмента ИИ-программирования.
Источник:


MWC 2018
2018
Computex
IFA 2018






