Новый метод STEP-KTODER улучшает генерацию кода за счет контроля на уровне функций

Новый метод STEP-KTODER улучшает генерацию кода за счет контроля на уровне функций

Исследователи представили новый подход к оптимизации генерации кода — фреймворк STEP-KTODER. Метод использует обратную связь на уровне отдельных функций, а не только по итоговому результату, что повышает качество синтеза программ.

В математических задачах пошаговый контроль процессов хорошо зарекомендовал себя, но для кода не было стандартного понятия шага. Разные подходы предлагают оценивать строки, трассы рассуждений или состояния программы, из-за чего непонятно, что именно маркировать и оптимизировать. STEP-KTODER решает эту проблему, определяя шаги как функции внутри декомпозированной программы.

Авторы присваивают каждой функции бинарную метку корректности на основе автоматически сгенерированных юнит-тестов. Это сочетает контроль процесса на уровне функций с итоговой оценкой всей программы. По сути, это кодоспецифичный вариант пошаговой оптимизации KTO.

Метод протестирован на наборах HumanEval(+), MBPP(+), BigCodeBench и LiveCodeBench. По данным статьи, STEP-KTODER стабильно превосходит стандартные подходы KTO и DPO, которые учитывают только финальный результат.

Отдельный анализ показал, что решающее значение имеет именно исполняемая обратная связь. Оценки с помощью LLM-судьи систематически завышают количество ошибок в функциях, портят положительные метки и ухудшают последующую оптимизацию предпочтений.

Код фреймворка опубликован на GitHub, что позволяет воспроизвести результаты и использовать метод в собственных пайплайнах.