Как научить LLM исправлять код без лишних изменений

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

При исправлении простых ошибок модели вроде GPT-5.4 часто делают избыточную редактуру: вместо точечного патча они переписывают функции, меняют структуру и добавляют лишнюю логику. Это усложняет код-ревью, потому что diff становится большим и трудночитаемым, хотя баг можно было исправить одной строкой. Проблема особенно критична при доработке существующего кода, где важно сохранить исходную структуру.

Для оценки ввели метрики минимальности изменений: нормализованное расстояние Левенштейна на уровне токенов и добавленную когнитивную сложность. Эксперименты на BigCodeBench показали, что даже топовые модели склонны к лишним изменениям, а модели с рассуждениями переписывают код сильнее, чем без них. Простое указание в промпте сохранять оригинальный код заметно снижает diff и повышает точность.

При обучении лучше всего себя показало RL с функцией вознаграждения, учитывающей корректность и минимальность правок: оно снижает объём изменений без потери качества и не вызывает деградации навыков. SFT, наоборот, приводит к переобучению и ухудшает обобщение. Упрощённый вариант с LoRA даёт близкий эффект, что делает настройку таких моделей дешевле и практичнее.

Коротко

  • Избыточная редактура возникает, когда модель исправляет баг, но переписывает значительную часть кода без необходимости, увеличивая diff и усложняя ревью.
  • Для оценки минимальности правок используются метрики: расстояние Левенштейна на уровне токенов и добавленная когнитивная сложность.
  • GPT-5.4 показала одну из худших метрик по объёму лишних изменений, тогда как Claude Opus 4.6 делает более точечные правки.
  • Явное указание в промпте сохранять оригинальный код снижает объём изменений и одновременно улучшает Pass@1 у большинства моделей.
  • RL-обучение даёт лучший баланс: снижает лишние изменения, сохраняет качество и не вызывает катастрофического забывания.

FAQ

Зачем бороться с избыточной редактурой в кодинг-моделях, если код остаётся корректным?

Потому что лишние изменения увеличивают diff, усложняют ревью и повышают риск незаметной деградации кодовой базы.

Как можно быстро снизить объём лишних изменений без обучения модели?

Добавить в промпт явное требование сохранять оригинальный код и его логику — это сразу уменьшает diff и повышает точность.

Какая методика обучения лучше всего учит модели делать минимальные правки?

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

Читайте также

  1. Как я дообучал модель на своих текстах после провала статьи на Хабре
  2. Как я локально тестировал новый Qwen 3.6 и Gemma 4
  3. Как писать промпты для разработки: опыт, который экономит часы
  4. Как тимлид заменил десятки вкладок на файловую систему и Claude Code
  5. Как в рабочий чат добавили ИИ-ассистента и что из этого вышло
Ключевые инсайты из новости (по версии ChatGPT)
  • Избыточная редактура как отдельный failure mode LLM: LLM при исправлении багов склонны менять больше кода, чем требуется, даже если результат корректен. Это создает большой diff и усложняет код-ревью, увеличивая риск незаметной деградации кодовой базы, особенно при работе с существующим кодом.
    [LLM / Failure Modes]
Для получения полного доступа оформите подписку PubMag PRO.
Зарегистрированные пользователи видят только два тезиса.
Зарегистрироваться
Инсайты автоматически генерируются с помощью искусственного интеллекта на основе текста статьи.
← Назад в лентуЧитать оригинал →
✈️ Подписывайтесь на мой Telegram-канал — там еще больше интересного про AdTech, MarTech, AI и многое другое!