Прочее
June 17

LLM всё ещё не могут в сложное программирование

Но реальность, как обычно, оказалась куда прозаичнее. Группа исследователей, среди которых медалисты олимпиад по информатике, представила новый бенчмарк LiveCodeBench Pro, который стал для современных LLM настоящим моментом истины. И результаты этого теста говорят о многом.

Что за бенчмарк и почему он важен?

В отличие от многих других тестов, LiveCodeBench Pro — это не набор заезженных задач с LeetCode, решения которых давно есть в интернете. Это 584 свежайшие и сложные проблемы с главных соревновательных площадок: Codeforces, ICPC и IOI (Международная олимпиада по информатике).

Ключевые особенности:

  • Актуальность: Задачи берутся из живых контестов, что исключает "загрязнение" обучающих данных готовыми решениями.
  • Сложность: Это не "отсортируйте массив", а задачи, требующие глубокого алгоритмического мышления.
  • Экспертная оценка: Разметкой и анализом занимались сами программисты-олимпиадники.

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

Главный результат

Результаты оказались отрезвляющими. Даже самые продвинутые модели, включая o4-mini-high и Gemini 2.5 Pro, полностью провалили сложные задачи.

На задачах уровня "Hard" абсолютно все модели показали результат 0%.

Максимальный рейтинг Эло, которого достигла лучшая модель (o4-mini-high), составил 2116. Это уровень "Эксперта" на Codeforces. Рейтинг настоящих гроссмейстеров начинается от 2400-2600. Разрыв — пропасть.

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

Сильные и слабые стороны LLM в коде

Исследователи пошли дальше и разделили все задачи на три когнитивных типа:

  1. Knowledge-heavy (тяжёлые на знания): Задачи, где нужно знать и правильно применить готовый алгоритм или структуру данных. Здесь LLM показывают себя неплохо.
  2. Logic-heavy (тяжёлые на логику): Задачи, где нужно шаг за шагом вывести решение, часто используя комбинаторику или динамическое программирование. Здесь модели тоже справляются достойно.
  3. Observation-heavy (тяжёлые на наблюдения): Задачи, где ключ к решению — это тонкое наблюдение, "ага!-момент", креативный подход. Сюда относятся теория игр, жадные алгоритмы, сложные разборы случаев.

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

Природа ошибок: невнимательность человека vs. тупость машины

Возможно, самый интересный вывод исследования касается типов ошибок.

  • Люди чаще всего ошибаются на этапе реализации. Не тот индекс, опечатка, забыл крайний случай — то есть, алгоритм в голове верный, но подвёл код.
  • LLM ошибаются на концептуальном уровне. Они с невероятной уверенностью генерируют код, основанный на в корне неверной идее. У них провал не в реализации, а в самом алгоритме.

Вердикт

Исследование LiveCodeBench Pro отлично показывает текущее состояние дел. LLM — это мощнейший инструмент для решения шаблонных, "knowledge-heavy" задач. Они могут писать бойлерплейт, реализовывать известные алгоритмы и здорово ускорять рутинную работу.

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

Так что программисты пока не всё. А может, и всё, просто ждут модель получше 🤷🏻‍♂️.