Agentic GRPO: RL с групповым преимуществом побеждает в кодинге | AiManual
AiManual Logo Ai / Manual.
23 Май 2026 Гайд

Agentic GRPO: как RL с групповым преимуществом позволяет ИИ побеждать людей в соревнованиях по программированию

Разбор прорыва 2026: как Agentic GRPO с tool calling и поздней наградой позволил ИИ впервые обогнать людей на Codeforces. Полное руководство с кодом.

Когда фидбек приходит только на финише

Представьте: вы пишете код, запускаете, он падает с ошибкой. Вы правите, снова падает. И так 40 минут. А потом судья говорит — "неправильный ответ на 5-м тесте". Никаких промежуточных очков, никаких подсказок. Только бинарный вердикт в конце.

Именно в таком аду живут LLM-агенты на соревнованиях по программированию. Поздняя награда — классическая проблема RL: сигнал подкрепления приходит лишь после десятков шагов, и непонятно, какой именно шаг привёл к успеху или провалу. До недавнего времени лучшие кодинг-агенты застревали на уровне синего рейтинга Codeforces (1700-1900), уступая топ-людям (2700+).

В мае 2026 команда исследователей из Китая и США опубликовала результаты, которые взорвали чаты: их агент на базе Agentic GRPO впервые в истории превзошёл всех участников-людей на раунде Codeforces #1000. Рейтинг — 2850, золото и абсолютное первое место. Как им это удалось? Давайте разберём механику.

Ключевое отличие: Agentic GRPO — это не просто дообучение LLM на задачах. Это полноценная RL-система, где агент учится эффективно вызывать инструменты (компилятор, отладчик, тест-раннер) и пересматривать свои действия на основе группового сравнения.

GRPO без критика — почему это идеально для агентов

Напомню основную идею GRPO: вместо того чтобы обучать отдельную модель критика (как в PPO), мы берём группу траекторий от текущей политики, усредняем их награды и используем отклонение каждой траектории от этого среднего как преимущество. Никакой оценщик ценности — только эмпирическое сравнение.

В контексте кодинг-агентов это даёт две суперсилы:

  • Устойчивость к шуму наград. Если одна траектория случайно прошла тест благодаря везению, а другая упала из-за таймаута — среднее смещение сглаживает выбросы.
  • Естественное соревнование внутри группы. Агент учится быть лучше, чем он сам в среднем, а не лучше, чем предсказание критика (которое может быть неточным).

Но есть нюанс: стандартный GRPO применяется к генерации цепочек мыслей (CoT) без внешних вызовов. Для агента с tool calling нужна модификация — Agentic GRPO.

Анатомия Agentic GRPO: конвейер с рефлексией

Давайте разложим по шагам, как работает эта штука. На входе — задача с Codeforces (условие, примеры, скрытые тесты). На выходе — финальное решение.

1 Запуск группы агентов

В каждом шаге обучения мы генерируем N траекторий (обычно N=8-16) из текущей политики. Каждая траектория — это последовательность действий: написать код → скомпилировать → запустить на примерах → прочитать вывод ошибки → отредактировать код → снова запустить → ... → отправить финальную версию.

Здесь кроется первая хитрость: максимальная длина траектории ограничена не числом токенов, а количеством вызовов инструментов. В статье они использовали лимит в 20 вызовов. Если агент не укладывается — траектория обрезается, и награда = 0.

2 Вычисление наград с учётом затрат

Награда не бинарная. Она состоит из двух компонентов:

  • Score — количество пройденных тестов (от 0 до 100). Если решение прошло все тесты, score=1.0.
  • Penalty — штраф за количество вызовов инструментов. За каждый вызов (кроме финальной отправки) вычитается 0.01. Если агент сделал 15 вызовов, его награда = score - 0.15.

Зачем штраф? Чтобы агент не спамил компиляциями, а учился думать головой. В реальных соревнованиях время тоже ограничено.

3 Групповое преимущество и обновление политики

Для каждой траектории i вычисляем преимущество A_i = (R_i - mean(R_group)) / std(R_group). Затем обновляем политику через клиппированную surrogate loss, как в GRPO, но дополнительно применяем маску на действия, относящиеся к tool calling. То есть штрафуем или поощряем только те логиты, которые привели к вызову инструмента (или к отказу от вызова).

Ошибка новичка: не разделять loss для текстовой генерации и для вызовов инструментов. В результате модель начинает менять стиль сообщений (пофиг), а не улучшать логику вызова. В Agentic GRPO градиенты по tool-call токенам масштабируются отдельно.

После обновления политики весь цикл повторяется на следующем батче задач. Обучение шло 3 дня на 256 H100 с использованием RLVR-инфраструктуры.

Почему это сработало там, где упали предшественники

До Agentic GRPO были попытки использовать Agentic RL с PPO и отдельным критиком. Проблема: критик обучается на тех же траекториях, что и политика, и быстро переобучается под узкое распределение задач. GRPO же использует только эмпирические средние — это радикально упрощает стабильность.

Второй фактор — контекстная память. Агент не просто генерирует fix, а пишет в историю "я попробовал A, получил ошибку X, теперь попробую B". Эта цепочка рассуждений позволяет поздней награде распространяться назад. Исследователи использовали Qwen3.5-27B как базовую модель — не случайно: Game Agent Coding League показал, что эта модель оптимальна для coding agents по соотношению цена/качество.

Смертельные грабли: на чём можно поймать SIGSEGV

Если вы решите повторить этот подвиг — вот ловушки, в которые наступили авторы до того, как получили результат.

  1. Слишком маленькая группа (N < 4): среднее становится шумным, и алгоритм сходится к локальному оптимуму — агенту, который просто копирует первое решение из интернета (overfit на train set).
  2. Отсутствие penalties за количество вызовов: модель выучивает стратегию "напиши мусор, скомпилируй, прочитай ошибку, исправь" — но делает по 40 итераций, что нереалистично. Со штрафом она учится отлаживать в голове.
  3. Игнорирование KL-регуляризации: GRPO по умолчанию добавляет KL-дивергенцию к целевой функции, чтобы политика не улетала далеко от референсной модели. Без неё агент начинал галлюцинировать несуществующие функции API.
💡
Авторы опубликовали ablation study: без штрафа за вызовы инструментов средний рейтинг упал на 150 пунктов. Без группового сравнения (замена на PPO) — на 200 пунктов. А без рефлексии (истории действий) агент просто не учился исправлять ошибки.

Что дальше — от кодинг-агента к Software 3.0

Этот успех — не про Codeforces. Это доказательство того, что Agentic GRPO может эффективно решать задачи с длинным горизонтом и инструментальными вызовами, где награда приходит только в конце. Теперь эту технику примеряют к автономной разработке софта: постановка задачи → написание кода → тестирование → деплой. Уже есть первые эксперименты, где агент находит баги в opensource репозиториях и предлагает патчи, которые принимают мейнтейнеры.

Как говорил Андрей Карпати — мы движемся от Vibe Coding к Agentic Engineering. И теперь у нас есть RL-алгоритм, который реально этому учит.

Но если вы думаете, что после этой статьи ваши джуниоры заменятся агентами — подождите. Агент пока решает только изолированные задачи с чёткими тестами. А понимать бизнес-требования и договариваться с заказчиком он не умеет. Пока.

Подписаться на канал