ИЗСЛЕДОВАТЕЛСКА БЕЛЕЖКА

Локализирана промяна на код с генеративни модели

Как да се предотврати ненужното пренаписване на цялата функция, като същевременно се запази достатъчно свобода генеративният модел да извърши поисканата промяна в кода.

Споделете тази изследователска бележкаСподеляне

ПРЯК ОТГОВОР

Как генеративен модел може да променя код, без да пренаписва цялата функция?

Преди генерирането определете защитените и редактируемите области, използвайте повторно или ограничете защитеното представяне, генерирайте само варианти на промяната и отхвърляйте резултатите, които изменят защитения код или не преминават специфичните за задачата проверки. Локалността и успешното изпълнение на задачата трябва да се измерват съвместно.

Защо разграничението е важно

Методът и заявената гаранция трябва да имат една и съща наблюдаема граница.

Локализираната промяна на код е задача за редактиране, а не просто по-кратка заявка за генериране на код. Входът вече съдържа артефакт, който си струва да бъде запазен, затова методът се нуждае от явна граница на запазване между областта, в която са разрешени промени, и свойствата, които трябва да останат стабилни.

Границата може да бъде диапазон от изходния код, синтактичен възел, API сигнатура, поведение при тест, договор за зависимост или научена латентна позиция. Тези варианти не са взаимозаменяеми: всеки защитава различно наблюдаемо свойство и изисква съответна стъпка за проверка.

Практическа процедура

  1. Формулирайте договора за запазване

    Определете областта за редактиране и точния текст, структура, интерфейс или поведение, които трябва да останат непроменени.

  2. Изберете най-тесния приложим интерфейс за контрол

    Използвайте повторно непроменените фрагменти от изходния код, прилагайте декодиране с попълване или с насоченост към редактиране и формални ограничения или заключвайте избрани латентни позиции според изискваното свойство.

  3. Генериране само там, където промяната е разрешена

    Запазете достатъчно свобода в областта за редактиране, за да бъде решена задачата; копирането на целия вход е локално, но не води до напредък.

  4. Проверявайте едновременно локалността и успеха

    Отхвърляйте кандидатите, които променят защитени области, не преминават синтактичен анализ или компилация, нарушават структурни инварианти или не удовлетворяват заявената промяна.

Изисквани доказателства

Едно твърдение е убедително само доколкото е надеждно измерено съответното свойство след генерирането или декодирането.

  • Разлика извън областта или друга пряка мярка за стабилността на защитената област.
  • Успешно изпълнение на задачата в редактируемата област.
  • Синтактичен анализ, компилация, тестове, статични проверки или специфични за задачата инварианти според приложимото.
  • Дял на промените в редактируемата област, така че копирането да не се приема погрешно за контрол.
  • Уникалност на кандидатите и изменчивост при повторни изпълнения, така че локалността да не се смесва с колапс на модите.

Какво отчита свързаното изследване

  • Свързаният експеримент компресира Python функции от 64 токена до йерархични дискретни позиции и генерира наново избрани латентни позиции при частични ограничения.
  • Фиксирането на четири кода от най-горното ниво повиши дела на успешно синтактично анализираните примери от 0.453 на 0.591; делът на променените нефиксирани позиции беше 0.936, а условните извадки останаха уникални с дял 0.998.
  • Тези измервания разкриват компромис между стабилност и свобода над равнището на токените; те не доказват точно запазване на отрязъка от изходния код, AST, семантиката или поведението.

Прочетете обзора на публикацията Търсене в пълния текст на статията

Граница на обхвата

  • Заключеният латентен код не представлява автоматично възел в AST, защитен фрагмент от изходния текст или формален инвариант.
  • Делът на успешно синтактично анализираните примери установява синтактична коректност, но не и функционална правилност или успешна поправка.
  • Отчетените доказателства произхождат от кратки предварително обработени Python функции и не установяват поведение в мащаба на хранилище.
Сравнете интерфейсите за контрол при локализирано редактиране

Основни и сродни източници

Направете справка в свързаните публикации за първоначалните методи, измервания и посочени ограничения.

  1. Inspectable Control for Structure-Preserving Software Regeneration

    Основна статия и експеримент с ограничени йерархични латентни представяния.

  2. EfficientEdit: Accelerating Code Editing via Edit-Oriented Speculative Decoding

    Ориентирано към редактирането декодиране, което използва повторно непроменените области от изходния код.

  3. PAFT: Preservation Aware Fine-Tuning for Minimal-Edit Program Repair

    Задава явно запазването и минималната промяна при обучението за поправяне на програми.