EG-CFG: Улучшение генерации кода с помощью обратной связи в реальном времени
Современные языковые модели (LLMs) достигли значительных успехов в генерации кода для различных программных задач. Однако они в основном полагаются на распознавание шаблонов из статических примеров кода, а не на понимание того, как код ведет себя во время выполнения. Это часто приводит к созданию программ, которые выглядят корректно, но не работают при запуске. Хотя недавние методы предлагают итеративное уточнение и самодебаггинг, они обычно работают в отдельных этапах — генерация, тестирование и затем исправление. В отличие от человеческих программистов, которые постоянно запускают фрагменты кода и корректируют их на основе обратной связи в реальном времени, эти модели не могут интегрировать обратную связь выполнения непрерывно, что ограничивает их эффективность в создании действительно функционального кода.
Роль синтеза программ и подсказок в генерации кода
Синтез программ давно используется для оценки LLM и автоматизации бенчмарков генерации кода, таких как MBPP, HumanEval и CodeContests, путем тестирования моделей на различных задачах программирования. Хотя стратегии подсказок, такие как few-shot и Chain-of-Thought, улучшили производительность, новые методы теперь включают обратные связи, которые используют инструменты или результаты выполнения для уточнения выходных данных. Некоторые фреймворки даже распределяют задачи между несколькими агентами LLM, каждый из которых решает разные аспекты проблемы. Однако большинство подходов по-прежнему полагаются на простые методы декодирования. В отличие от традиционных стратегий, новые методы управления, такие как граф управления потоком (CFG), предлагают более динамический подход, но еще не были широко применены с обратной связью в реальном времени.
Представляем EG-CFG: Генерация кода с учетом выполнения от Тель-Авивского университета
Исследователи Тель-Авивского университета представили EG-CFG, новый метод генерации кода, который активно использует обратную связь выполнения в процессе генерации, что является обычной практикой для человеческих программистов. Вместо того чтобы ждать до конца, EG-CFG оценивает частичный код по мере его написания, направляя модель к правильным и исполняемым выходным данным. Он использует поиск по лучам для генерации нескольких вариантов кода, запускает их и интегрирует результаты выполнения, чтобы повлиять на последующие шаги. Этот цикл обратной связи в реальном времени значительно повышает производительность по стандартным бенчмаркам, таким как MBPP, HumanEval и CodeContests, даже превосходя закрытые модели, а также позволяет эффективно проводить параллельное рассуждение и динамическое исследование.
Как работает EG-CFG: Обратная связь в реальном времени встречает поиск по лучам и парсинг AST
Метод EG-CFG улучшает генерацию кода, направляя языковые модели с помощью обратной связи выполнения в реальном времени во время вывода. Для данной задачи программирования он генерирует частичные решения кода и исследует несколько продолжений с помощью поиска по лучам. Эти продолжения проверяются на синтаксис с использованием парсинга абстрактного синтаксического дерева (AST), и только допустимые варианты выполняются на тестовых случаях для сбора детализированных трасс выполнения, включая состояния переменных и ошибки. Эта обратная связь затем вводится в подсказку модели, чтобы информировать будущие предсказания. Механизм управления интерполирует между стандартным выводом модели и предложениями, основанными на обратной связи, помогая модели уточнять свое решение шаг за шагом, пока оно не пройдет все тестовые случаи.
Результаты бенчмарков: EG-CFG превосходит GPT-4 и Claude на HumanEval и MBPP-ET
Метод EG-CFG был протестирован с использованием двух версий моделей DeepSeek: модели с 1.3 миллиарда параметров локально и более крупной модели V3-0324 через API. Он был оценен по пяти бенчмаркам кода: MBPP, HumanEval, CodeContests, MBPP-ET и HumanEval-ET. На HumanEval EG-CFG с DeepSeek V3 правильно решил 90.1% задач, превосходя GPT-4 (85.5%) и Claude 2 (83.2%). На MBPP-ET он достиг точности 81.4%, установив новый рекорд. Примечательно, что меньшая модель с 1.3 миллиарда параметров также показала сильные результаты, улучшив свои показатели с 46.3% до 61.7% на HumanEval при использовании EG-CFG. Исследование абляции подтвердило важность таких компонентов, как динамическая обратная связь и поиск по лучам, в достижении этих результатов.
Заключение: EG-CFG имитирует отладку человека для продвижения генерации кода
В заключение, метод EG-CFG представляет собой новый способ генерации кода с использованием языковых моделей, включая обратную связь выполнения в реальном времени в процессе генерации. В отличие от традиционных подходов, которые полагаются на статические шаблоны, EG-CFG имитирует то, как человеческие программисты тестируют и уточняют код. Он использует поиск по лучам для исследования возможных завершений кода, тестирует их с реальными входными данными и затем направляет генерацию на основе результатов. Этот процесс происходит построчно, обеспечивая, чтобы обратная связь была как структурированной, так и действенной. Метод также поддерживает работу нескольких агентов параллельно, что повышает эффективность. EG-CFG достигает высокой точности по стандартным бенчмаркам, демонстрируя сильные результаты даже по сложным задачам программирования и с меньшими моделями.
Посмотрите статью и страницу на GitHub. Все заслуги за это исследование принадлежат исследователям этого проекта.
Возможности спонсорства
Достигните самых влиятельных разработчиков ИИ по всему миру. Более 1 миллиона читателей в месяц, более 500 тысяч строителей сообщества, бесконечные возможности. Изучите спонсорство.