AI inawezaje kuhariri msimbo bila kuzalisha upya programu nzima?

Mwongozo wa kivitendo wa utafiti kuhusu urekebishaji wa msimbo uliojanibishwa kwa miundo zalishi: kinachopaswa kubaki bila kubadilika, kinachoweza kubadilika, na ushahidi unaohitajika kabla ya kuita ugeuzaji kuwa unaohifadhi muundo.

Shiriki mwongozo huuShiriki

Tatizo halisi ni nini

Uhariri wa msimbo si uzalishaji wa msimbo kwa kidokezo kifupi tu. Kihariri hupokea zao lililopo, badiliko lililokusudiwa, na mkataba wa uhifadhi usiotajwa wazi. Kwa hiyo, swali kuu lina pande mbili: ni eneo gani linaweza kubadilika, na ni sifa zipi za sehemu iliyosalia zinazopaswa kubaki thabiti?

Mwongozo huu unawalenga wasomaji wenye ujuzi wa kiufundi wanaoingia katika uhariri wa programu unaosaidiwa na AI. Unatenganisha wazo la kawaida la uhariri wa sehemu mahususi na madai makali zaidi ya uhifadhi wa sintaksia, muundo, semantiki na utendaji.

Wazo kuu

Kihariri chenye mipaka kinahitaji mpaka wa uhifadhi ulio wazi, si lengo la uzalishaji pekee.

Kinachopaswa kubaki thabiti

Hii inaweza kuwa sehemu ya matini, sarufi, sahihi ya API, eneo la AST, tabia ya jaribio, mkataba wa utegemezi, au uwakilishi wenye ukwaru uliofunzwa. Kila chaguo hulinda dhana tofauti ya uthabiti.

Kinachoweza kubadilika

Eneo linaloweza kuhaririwa linahitaji uhuru wa kutosha kutatua kazi iliyoombwa. Mbinu ya udhibiti inayonakili kila kitu ni thabiti lakini haina manufaa; ile inayoandika kila kitu upya hutoa uhuru bila ujanibishaji.

Mfano unaoeleweka kwa urahisi: karabati chumba kimoja, hifadhi jengo

Fikiria kukarabati chumba kimoja huku ukiacha muundo unaobeba uzito, viunganishi vya mabomba, na vyumba jirani bila kuathiriwa. Uzalishaji upya kamili ni kama kujenga nyumba upya kutokana na maelezo ya maneno. Badala yake, uhariri uliowekewa mipaka huashiria muundo unaolindwa, hufungua eneo la kazi lenye mipaka, hufanya badiliko, na hukagua matokeo kabla ya kuyakubali.

Mahali ambapo ulinganisho huo haufai. Msimbo fiche uliojifunzwa si mpango wa usanifu uliothibitishwa. Kufunga msimbo wa jumla kunaweza kuongeza uthabiti wa muundo uliopimwa, lakini hakuhakikishi kuwa kifundo fulani cha AST, tabia au kiolesura hubaki bila kubadilika.

Mtazamo sahihi zaidi wa uzalishaji upya wa sehemu

Acha kisimbaji kiwakilishe programu x kwenda kwenye uwakilishi wa nafasi fiche wenye muundo z. Barakoa ya uhifadhi huchagua nafasi L kubaki thabiti. Kizalishaji huchukua sampuli katika nafasi zinazokamilishana pekee huku kikilazimisha z'ₗ = zₗ kwa kila nafasi iliyofungwa. Kisha kisimbuzi hubadilisha kiwakilishi kilichokamilishwa z' kurudi kwenye msimbo chanzo.

Utaratibu huu huunda uso wa udhibiti unaokaguliwa juu ya tokeni. Maana yake bado lazima ithibitishwe kwa majaribio: watafiti wanapaswa kupima kile ambacho nafasi zilizofungwa huhifadhi baada ya usimbuaji na kama nafasi zinazoharirika zinabakiza uhuru wa kutosha.

Mtiririko wa uhariri wa hatua nne

  1. Bainisha mpaka

    Bainisha maeneo au sifa zinazolindwa, kisha fafanua badiliko lililokusudiwa.

  2. Wakilisha artefakti

    Tumia matini, sintaksia, muktadha wa urejeshaji, au misimbo iliyofunzwa yenye ukwaru na yenye undani.

  3. Zalisha upya kwa uteuzi

    Sampulisha nafasi zinazoweza kuhaririwa pekee huku ukihifadhi vikwazo vilivyoteuliwa.

  4. Thibitisha kabla ya kukubali

    Pima ujanibu, sintaksia, muundo, tabia na athari zisizokusudiwa.

Uhariri wa msimbo, urekebishaji wa programu, na uzalishaji wenye masharti si kazi moja

MkabalaLengo kuuUtaratibu wa kawaida wa uhifadhiKinachohitaji kuthibitishwa bado
Uzalishaji kamili wa msimboZalisha artefakti kamiliAgizo na muktadhaKila kitu kilicho nje ya badiliko lililoombwa
Urekebishaji wa programu kiotomatikiOndoa hitilafu iliyobainishwaUainishaji wa mahali pa hitilafu, majaribio, violezo au virakaUsahihi unaozidi majaribio yanayopatikana na udogo wa kiraka
Modeli za ujazaji wa nafasi au uhaririRekebisha maeneo teule ya maandishiKiambishi awali, kiambishi tamati, tofauti au muktadha wa uhariri unaoonekanaMabadiliko yasiyokusudiwa ya muundo na tabia
Usimbuaji wenye masharti ya sarufiDumisha matokeo ndani ya lugha rasmiHali za usimbuaji zinazokubalika kisarufiMaana ya programu, usahihi wa kazi na ujanibishaji wa mabadiliko
Udhibiti wa kidaraja wa nafasi ficheZalisha upya nafasi teule zilizojifunzwaMisimbo fiche pana au mahususi iliyofungwaKile ambacho misimbo hiyo huhifadhi baada ya usimbuaji

Jinsi ya kupima uthabiti wa eneo na uhifadhi wa muundo

Mabadiliko nje ya eneo
Pima tofauti nje ya sehemu iliyoombwa ihaririwe. Thamani ndogo inaunga mkono ujanibu, lakini kunakili pekee si mafanikio.
Uhuru wa eneo linaloharirika
Pima iwapo eneo lisilofungwa hubadilika kweli na iwapo watahiniwa wengi halali bado wanawezekana.
Sintaksia na sarufi
Kiwango cha uchanganuzi wa kisintaksia au uhalali wa sarufi hutambua towe lenye muundo potovu, lakini peke yake hakielezi chochote kuhusu tabia.
Visivyobadilika vya muundo
Linganisha saini, maeneo ya AST, mtiririko wa udhibiti, mtiririko wa data, uingizaji, au API ambazo kazi inataka zibaki thabiti.
Ushahidi wa kiutendaji
Tekeleza majaribio, ukaguzi tuli, ukompaili na tathmini ya kitabia mahususi kwa kazi kila artefakti hizo zinapopatikana.
Uanuwai na kutokuwa na uhakika
Ripoti upekee wa mapendekezo na ubadilikaji katika urudiaji wa utekelezaji ili uthabiti usichanganywe na kuporomoka kwa modi.

Ni uso upi wa udhibiti unaofaa kwa kazi ya uhariri?

“Usiandike upya kitendakazi kizima” ni sharti, si mbinu kamili. Anza na matokeo yanayopaswa kutabirika, kisha chagua uso wa udhibiti na ushahidi unaolingana nao.

Dhamana inayohitajikaUso wa udhibiti unaolingana vizuri zaidiUshahidi wa kudai
Uundaji upya unaosaidiwa na AI unaohifadhi tabiaRuhusu LLM ibainishe au ipendekeze mageuzi, kisha iyatekeleze kwa injini inayoaminika ya urekebishaji wa muundo wa msimbo inapowezekana. Tazama RefactoringMirror.Ukusanyaji, majaribio, ukaguzi tuli, na ugunduzi wa urekebishaji wa muundo. SWE-Refactor huweka ukaguzi huu wazi katika kiwango cha hazina ya msimbo.
Ubadilishaji wa msimbo uliowekewa mipaka bila kuandika upya kitendakazi kizimaTumia tena vipande vya msimbo chanzo ambavyo havijabadilika na uzalishe maeneo yanayopendekezwa kuhaririwa pekee, kama ilivyo katika EfficientEdit.Tofauti nje ya eneo, mafanikio ya kazi, matumizi upya ya tokeni zilizokubaliwa, na iwapo muktadha ulioachwa husababisha mabadiliko kati ya faili kutotambuliwa.
Uzalishaji wa msimbo wenye vizuizi kwa uhandisi wa programuLazimisha sifa rasmi wakati wa usimbuaji, kama ilivyo katika ueneaji wenye masharti ya sarufi, au kuweka kituo cha ukaguzi kwenye viambishi-awali halali na kurejea nyuma katika eneo linalohusika pekee, kama ilivyo katika Hydra.Mafanikio ya sarufi, kikompilishi au kikagua aina pamoja na majaribio ya kiutendaji, ujanibishaji, ukawio wa urekebishaji, na kiasi cha msimbo halali uliozalishwa upya.
Uzalishaji upya teule wa kitendakazi cha Python wenye uwiano wa ujanibishaji na anuwaiFunga nafasi fiche teule, pana au mahususi, na uchukue sampuli za nafasi zilizosalia pekee.Ujanibishaji wa matokeo yaliyosimbuliwa, sintaksia, sifa za muundo zisizobadilika, uhuru wa kuhariri, utofauti, na kutokuwa na uhakika. Kufunga nafasi fiche pekee hakuhakikishi urekebishaji wa muundo.
Uzalishaji wa msimbo unaotabirika chini ya mkataba bayana wa uhifadhiBainisha kabla ya uzalishaji sifa zinazolindwa na zinazoonekana pamoja na ukaguzi wa kufaulu au kushindwa, kisha chagua utaratibu wenye upeo finyu zaidi unaoweza kuzitekeleza au kuzidhihirisha.Pima sifa hizo hasa baada ya usimbuaji na uripoti viwango vya kukubaliwa, kukataliwa na kushindwa katika marudio kadhaa ya utekelezaji. Usampulishaji deterministi pekee si hakikisho la uhifadhi.

Maswali ya utafiti yanayojibiwa na mwongozo huu

Majibu haya mafupi yanafafanua mipaka ya madai na ushahidi inayotumiwa kote katika mwongozo huu.

  1. Modeli zalishi inawezaje kurekebisha msimbo bila kuandika upya kitendakazi kizima?

    Bainisha mpaka unaoweza kuhaririwa kabla ya uzalishaji, hifadhi au tumia tena chanzo kilicho nje yake, zalisha mabadiliko teule pekee, na kataa matokeo yanayoshindwa kazi au kubadili maeneo yanayolindwa. Kufunga nafasi fiche za ngazi ni kiolesura kimoja cha udhibiti wa majaribio, lakini hakuhakikishi maeneo yanayofanana kabisa katika msimbo chanzo. Linganisha violesura vya udhibiti wa uhariri katika maeneo maalumu.

  2. Ni ushahidi gani unaoonyesha kuwa uhariri wa msimbo ni wa eneo mahususi badala ya kuwa halali kisintaksia tu?

    Pima tofauti nje ya eneo lililoombwa pamoja na mafanikio ya kazi, mabadiliko katika eneo linaloharirika, sifa za muundo zisizobadilika, majaribio au ukaguzi tuli, na ubadilikaji kati ya marudio ya utekelezaji. Kiwango cha uchanganuzi wa kisintaksia pekee huthibitisha tu uundikaji sahihi wa kisintaksia. Kagua orodha hakiki ya ushahidi wa ujanibishaji wa mabadiliko.

  3. Uthabiti wa eneo la uhariri wa msimbo unapaswa kusawazishwaje na uanuwai wa uzalishaji?

    Ripoti uthabiti wa eneo linalolindwa sambamba na uhuru katika eneo linaloweza kuhaririwa na upekee wa mapendekezo. Kunakili ingizo kunaweza kuongeza uthabiti hadi upeo bila kuendeleza kazi; uandishi upya usio na vikwazo unaweza kuongeza mabadiliko hadi upeo huku ukiharibu ujanibishaji wa mabadiliko. Tazama ushahidi wenye mipaka kuhusu uthabiti na uhuru.

  4. Uhariri wa msimbo uliowekewa mipaka, uzalishaji wenye masharti, na urekebishaji wa programu vinatofautianaje?

    Uhariri uliowekewa mipaka husisitiza kinachopaswa kubaki bila kubadilika, uzalishaji wenye masharti hutekeleza sifa rasmi ya matokeo kama vile kufuata sarufi, na urekebishaji wa programu huhitaji badiliko likidhi ubainishaji wa kasoro au jukumu. Sintaksia peke yake haithibitishi ulinganifu wa kisemantiki, usahihi wa kiutendaji, mafanikio ya jukumu, wala ujanibu. Linganisha malengo hayo matatu.

  5. Sehemu teule za kitendakazi cha Python zinawezaje kuzalishwa upya huku sehemu zilizosalia zikibaki thabiti?

    Bainisha maeneo yanayolindwa na yanayoweza kuhaririwa kabla ya uzalishaji, badilisha uwakilishi unaoharirika pekee, simbua, kisha kataa matokeo teule yanayobadili msimbo unaolindwa au yanayoshindwa sintaksia, majaribio, ukaguzi tuli, au sifa zisizobadilika za kazi husika. Jaribio lililoripotiwa la nafasi fiche za ngazi hupima uthabiti wa kiuwezekano kwenye vitendakazi vyenye tokeni 64; halihakikishi maeneo au tabia kubaki bila kubadilika. Kagua mtiririko wa kazi wa uzalishaji upya teule.

  6. Ni mkakati upi wa udhibiti unaofaa kwa urekebishaji unaosaidiwa na AI unaohifadhi tabia?

    Tumia modeli kubainisha au kupendekeza badiliko, kisha litekeleze kwa injini ya kuaminika ya urekebishaji inapowezekana na uthibitishe ukalimani, majaribio, ukaguzi tuli na urekebishaji uliokusudiwa. Kiraka kinachoonekana kukubalika hakitoshi kuwa ushahidi. Fungua safu ya uamuzi wa urekebishaji wa msimbo.

  7. Ni nini kinachofanya uzalishaji wa msimbo utabirike badala ya kudhibitika tu?

    Eleza mkataba wa uhifadhi unaoonekana na ukaguzi wa ukubalifu kabla ya kuchagua kizalishaji. Utabirikaji hutegemea kinachobaki thabiti baada ya usimbuaji na uthibitishaji, si tu iwapo kidokezo, kinyago, sarufi au msimbo fiche uliwekwa bila kubadilika. Bainisha mkataba wa uhifadhi.

Yanayoonyeshwa na jaribio la sasa—na yasiyoonyeshwa

Katika Udhibiti Unaokaguliwa kwa Uzalishaji Upya wa Programu Unaohifadhi Muundo, VQ-VAE ya kihierarkia huwakilisha vitendakazi vya Python vyenye tokeni 64 katika nafasi tambufu 16 za ngazi ya juu na 32 za ngazi ya chini. Kufunga misimbo minne ya ngazi ya juu huongeza kiwango cha uchanganuzi kutoka 0.453 hadi 0.591, huku nafasi zisizofungwa zikiendelea kubadilika kwa kiwango cha 0.936 na sampuli zenye masharti hubaki 0.998 vya kipekee.

Huu ni ushahidi wa mabadilishano yaliyopimwa kati ya uthabiti na uhuru katika mazingira moja madogo. Si hakikisho la uhifadhi kamili wa AST, usawa wa kisemantiki, usahihi wa kiutendaji, urekebishaji uliofaulu, wala tabia katika kiwango cha hazina.

Utafiti andamizi Where Quality Breaks in Compressed Short-Text Generation huongeza funzo muhimu la tathmini: kuboreka kwa vipimo mbadala vya nafasi fiche si lazima kuboreshe matokeo yaliyosimbuliwa. Uwakilishi, uzalishaji na tabia iliyosimbuliwa vinapaswa kukaguliwa kama hatua tofauti.

Kwa utaratibu wa uamuzi unaoweza kutumiwa tena, tazama mwongozo andamani kuhusu kutenganisha hasara ya kodeki na hasara ya kizalishaji.

Maelewa potofu ya kawaida

“Inachanganuliwa, kwa hiyo ni sahihi.”

Uchanganuzi wa kisintaksia huthibitisha tu uundikaji sahihi wa kisintaksia. Programu bado inaweza kukiuka majaribio, mikataba au kusudio.

“Msimbo wa jumla ni kifundo cha AST.”

Si hivyo, isipokuwa ulinganifu bayana umethibitishwa. Misimbo iliyofunzwa inaweza kuchanganya vipengele kadhaa vya kijuujuu na vya kimuundo.

“Vigeu fiche vilivyofungwa humaanisha matini chanzo isiyobadilika.”

Usimbuaji hutenda katika zao zima na hujifunzwa. Nafasi fiche zisizobadilishwa zinaweza kuongeza uthabiti bila kuhakikisha eneo la matini linalofanana kabisa.

“Mabadiliko machache ni bora daima.”

Kihariri kinachonakili ingizo hupata uthabiti kamili bila kutimiza sehemu yoyote ya kazi. Uthabiti wa eneo na mafanikio ya uhariri lazima vipimwe pamoja.

Cha kusoma baadaye

Tafiti zinazokaribiana hutumia violesura tofauti vya udhibiti; hakuna inayopaswa kuchukuliwa kuwa msingi linganishi unaoweza kubadilishwa na mwingine bila ulinganifu wa kazi.

  1. Self-Edit: Fault-Aware Code Editor for Code Generation

    Huchukulia uzalishaji kama mchakato unaoweza kuhaririwa na hutumia hitilafu zilizogunduliwa kuongoza usahihishaji.

  2. Coeditor: Leveraging Contextual Changes for Multi-round Code Auto-editing

    Huunda modeli ya mabadiliko ya msimbo kulingana na muktadha katika raundi mbalimbali za uhariri badala ya kuzalisha upya kutoka mwanzo.

  3. PAFT: Uboreshaji Mahususi Unaotambua Uhifadhi kwa Urekebishaji wa Programu wenye Uhariri Mdogo

    Huweka wazi uhifadhi na badiliko la kiwango cha chini katika mafunzo ya urekebishaji wa programu.

  4. Constrained Decoding of Diffusion LLMs with Context-Free Grammars

    Huonyesha jinsi masharti rasmi yanavyoweza kutoa dhamana za sintaksia wakati wa usimbuaji wa usambaaji.

  5. Ujifunzaji wa Uwakilishi Bainifu kwa Mitandao ya Neuroni

    Inatambulisha VQ-VAE, utaratibu wa msingi wa viwakilishi fiche bainifu vinavyojifunzwa.

  6. Simple and Effective Masked Diffusion Language Models

    Hutoa mfumo wa uenezaji bainifu uliofichwa unaotumiwa kama kizalishaji cha nafasi fiche katika utafiti andamizi wa kiuchunguzi.

  7. Utafiti wa Kijarabati kuhusu Uwezo wa LLM katika Uundaji Upya wa Programu Kiotomatiki

    Hubaini marekebisho ya muundo yasiyo salama yaliyopendekezwa na LLM na kutathmini utekelezaji upya wa mageuzi yaliyogunduliwa kupitia injini zinazoaminika za kurekebisha muundo.

  8. SWE-Refactor: A Repository-Level Benchmark for Real-World LLM-Based Code Refactoring

    Hutathmini urekebishaji muundo katika kiwango cha hazina unaohifadhi tabia, kwa kutumia ukompilishaji, majaribio na utambuzi wa urekebishaji muundo.

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

    Hutumia tena sehemu za msimbo chanzo ambazo hazijabadilika na kutabiri maeneo ya uhariri badala ya kuchukulia uhariri kuwa uzalishaji upya kamili wa kiotoregresi.

  10. Hydra: Efficient, Correct Code Generation via Checkpoint-and-Rollback Support

    Hutumia ukaguzi tuli, vituo vya kuhifadhi hali na urejeshaji lengwa ili kuepuka kuzalisha upya viambishi awali ambavyo tayari ni halali baada ya hitilafu.

Muhtasari mfupi

Uzalishaji upya wa msimbo uliowekewa mipaka ni mkataba baina ya badiliko na uhifadhi. Vigeu fiche tambufu vya kihierarkia hutoa njia moja inayokaguliwa ya kueleza mkataba huo, lakini uwakilishi huo huwa na manufaa tu programu zilizosimbuliwa zinapotathminiwa kwa ujanibishaji, sintaksia, muundo, tabia, utofauti na kutokuwa na uhakika.

Machapisho katika mwelekeo huu wa utafiti