Autori : Michele Tufano (Microsoft, Redmond, USA) Anisha Agarwal (Microsoft, Redmond, USA) Jinu Jang (Microsoft, Redmond, USA) Roshanak Zilouchian (Microsoft, Redmond, USA) Neel Sundaresan (Microsoft, Redmond, USA) Autori : Michele Tufano (Spoločnosť Microsoft, Redmond, USA) Anisha Agarwal (Microsoft, Redmond, Spojené štáty americké) Jinu Jang (Spoločnosť Microsoft, Redmond, USA) Roshanak Zilouchian (spoločnosť Microsoft, Redmond, USA) Neel Sundaresan (Spoločnosť Microsoft, Redmond, USA) abstraktné Krajina vývoja softvéru bola svedkom zmeny paradigmy s príchodom asistentov poháňaných umelou inteligenciou, ako je napríklad GitHub Copilot. existujúce riešenia však nevyužívajú všetky potenciálne možnosti dostupné v IDE, ako je budovanie, testovanie, spustenie kódu, operácie git atď. Preto sú obmedzené ich obmedzenými schopnosťami, pričom sa zameriavajú predovšetkým na navrhovanie odrezkov kódu a manipuláciu so súbormi v rozhraní založenom na chate. Na vyplnenie tejto medzery predstavujeme AutoDev, plne automatizovaný rámec pre vývoj softvéru založený na umelej inteligencii. Plánovanie a vykonávanie zložitých úloh softvérového inžinierstva. AutoDev umožňuje používateľom definovať zložité ciele softvérového inžinierstva, ktoré sú priradené autonómnym agentom AI spoločnosti AutoDev na dosiahnutie cieľov. Títo agenti AI môžu vykonávať rôzne operácie na základe kódu vrátane úprav súborov, vyhľadávania, procesov budovania, vykonávania, testovania a operácií git. Majú tiež prístup k súborom, výstupom kompilátora, denníkom budovania a testovania, statickým analytickým nástrojom a ďalším. To umožňuje agentom AI vykonávať úlohy plne automatizovaným spôsobom s komplexným pochopením potrebných kontextových informácií. Okrem toho AutoDev vytvára bezpečné vývojové prostredie obmedzením všetkých operácií v kontaj autonómny V našom hodnotení sme testovali AutoDev na databáze HumanEval a získali sľubné výsledky s 91,5 % a 87,8 % Pass@1 pre generovanie kódu a testovacie generovanie, čo preukázalo jeho účinnosť pri automatizácii úloh softvérového inžinierstva pri zachovaní bezpečného a používateľsky kontrolovaného vývojového prostredia. 1 Úvod Ako vývojári čoraz viac prijímajú AI asistentov, ako je ChatGPT pre svoje vývojové úlohy, zvýšenie produktivity sa stáva zrejmým. ], kde ponúkajú návrhy kódu v rozhraní chatu aj priamo v súboroch. 2 Avšak, tieto AI kódovanie asistentov, napriek ich integrácii do IDE, vykazujú obmedzené funkčnosti a chýba kontextové povedomie. , , Často nevyužívajú všetky schopnosti IDE, ako je volanie lanterov, kompilátorov alebo vykonávanie operácií príkazového riadka, a preto vývojári stále potrebujú manuálne overiť syntax a zabezpečiť správnosť kódu generovaného AI, spustiť kódovú základňu a skontrolovať denníky chýb. 3 6 AutoDev premostí túto medzeru tým, že ponúkne autonómnym agentom AI schopnosť vykonávať akcie, ako je úprava súborov, opätovné vyskúšanie, budovanie, testovanie a príkazy CLI priamo v repozitári na dosiahnutie cieľov definovaných používateľom, čím umožní dokončenie zložitých úloh autonómne. AutoDev ponúka nasledujúce kľúčové funkcie: (i) schopnosť sledovať a spravovať konverzácie používateľov a agentov AI prostredníctvom , (ii) knižnica prispôsobených na dosiahnutie rôznych cieľov súvisiacich s kódom a SE, (iii) schopnosť naplánovať rôznych agentov AI na spoluprácu smerom k spoločnému cieľu prostredníctvom , a (iv) schopnosť spustiť kód a spustiť testy prostredníctvom . manažér konverzácie nástroje Agent Plánovač Hodnotenie životného prostredia figúrka ilustruje príklad pracovného postupu AutoDev na vysokej úrovni. Používateľ definuje cieľ (napr. testovanie konkrétnej metódy). Agent AI píše testy do nového súboru a iniciuje príkaz na vykonanie testu, a to všetko v bezpečnom prostredí hodnotenia. Výstup z vykonania testu, vrátane denníkov zlyhania, je potom začlenený do konverzie. Agent AI analyzuje tento výstup, spúšťa príkaz na získanie, začleňuje získané informácie úpravou súboru a opätovne vyvoláva vykonanie testu. 1 Celý proces je autonómne orchesterovaný spoločnosťou AutoDev, čo si nevyžaduje žiadny zásah vývojára nad rámec nastavenia cieľa ini-tial.Na rozdiel od toho, s existujúcimi asistentmi kódovania AI integrovanými do IDE by vývojári museli manuálne vykonávať testy (napr. spustiť pytest), poskytovať protokoly zlyhania do rozhrania AI chat, prípadne identifikovať ďalšie kontextové informácie, ktoré sa majú začleniť, a opakovať akcie validácie, aby sa zabezpečil úspech testov po tom, čo AI generuje revidovaný kód. AutoDev čerpá inšpiráciu z predchádzajúcej práce v oblasti autonómnych agentov AI. Napríklad AutoGen [ AutoDev rozširuje AutoGen tým, že presahuje riadenie konverzácie a umožňuje agentom priamo interagovať s kódovým úložiskom, vykonávať príkazy a akcie autonómne. ], open-source AI agent pre autonómne vykonávanie úloh tým, že ponúka kód a IDE špecifické schopnosti umožňujúce vykonávanie komplexných úloh softvérového inžinierstva. 22 8 V našom hodnotení hodnotíme schopnosti AutoDev us-ing HumanEval dataset[ ], pôvodne navrhnutý pre generovanie kódu z popisov prirodzeného jazyka (docstrings). Okrem toho sme rozšírili hodnotenie tak, aby zahŕňalo úlohu generovania testových prípadov, čo ukázalo všestrannosť spoločnosti AutoDev pri riešení rôznych cieľov softvérového inžinierstva.Výsledky preukazujú sľubný výkon, pričom spoločnosť AutoDev dosiahla pozoruhodné skóre 91,5 % a 87,8 % pre Pass@1 pre generovanie kódu a testovú generáciu.Tieto výsledky zdôrazňujú účinnosť spoločnosti AutoDev pri automatizácii úloh softvérového inžinierstva pri zachovaní bezpečného a používateľom kontrolovaného vývojového prostredia. 5 2 Autodev dizajn Prehľad dizajnu je znázornený na fig. Po dokončení počiatočných konfigurácií organizuje AutoDev svoje schopnosti do štyroch skupín: Správca konverzácií, ktorý sleduje a spravuje konverzácie používateľov a agentov; knižnica nástrojov, kde sú agentom k dispozícii rôzne nástroje súvisiace s kódom a IDE, plánovač agentov, ktorý plánuje rôzne agenty, a prostredie hodnotenia, ktoré umožňuje vykonávanie operácií. 2 2.1 Pravidlá, akcie a konfigurácia cieľov Používateľ iniciuje proces konfiguráciou pravidiel a akcií prostredníctvom súborov yaml. Tieto súbory definujú dostupné príkazy (akcie), ktoré môžu AI agenti vykonávať. Používatelia môžu využiť predvolené nastavenia alebo jemné povolenia povolením / vypnutím špecifických príkazov, prispôsobením AutoDev ich špecifickým potrebám. Tento konfiguračný krok umožňuje presnú kontrolu nad schopnosťami AI agentov. V tejto fáze môže používateľ definovať počet a správanie AI agentov, priradenie špecifických zodpovedností, povolení a dostupných akcií. Napríklad používateľ mohol definovať agenta "Developer" a agenta "Reviewer", ktorý spolupracuje s cieľom. Podľa pravidiel a konfigurácie akcií používateľ špecifikuje softvérovú inžiniersku úlohu alebo proces, ktorý má AutoDev vykonať. Napríklad, používateľ môže požiadať o generovanie testovacích prípadov a uistite sa, že sú syntaxne správne, prejdú a že neobsahujú chyby (to zahŕňa úpravu súborov, spustenie testovacej sady, vykonávanie syntaxných kontrol a nástrojov na nájdenie chýb). 2.2 Správca konverzácie Správca konverzácií, ktorý je zodpovedný za inicializáciu histórie konverzácie, zohráva kľúčovú úlohu pri dohľade nad riadením na vysokej úrovni prebiehajúcej konverzácie.Robí úlohu rozhodnutia o tom, kedy proces prerušiť a zabezpečuje bezproblémovú komunikáciu medzi používateľom, agentmi AI a systémom ako celkom. The Parser interprets the responses generated by agents, extracting commands and arguments in a predefined format. It ensures that the instructions are correctly formatted, validating the number and accuracy of arguments (e.g., a file editing command requires the file path argument). In case of parsing failures, error messages are injected into the conversation, preventing further actions on the repository. Successfully parsed commands are further analysed, by enforcing specific agent permissions and conducting additional semantic checks. It ensures that the suggested actions comply with the fine-grained permissions specified by the user. If the command passes scrutiny, the conversation manager invokes the corresponding action in the tools library. 2.2.1 Parser. Modul Organizátor výstupu spracováva výstup prijatý z prostredia hodnotenia. Vyberá kľúčové informácie, ako sú stav alebo chyby, voliteľne zhrnie relevantný obsah a pridá dobre štruktúrovanú správu do histórie konverzácie.Toto zabezpečuje, že používateľ má jasný a organizovaný záznam o akciách a výsledkoch Au-toDev. 2.2.2 Output Organizer. Prehľad rámca AutoDev: Používateľ iniciuje proces definovaním cieľa, ktorý sa má dosiahnuť. Správca konverzácií iniciuje konverzáciu a nastavenia. Agent Scheduler organizuje agentov AI na spoluprácu na úlohe a posiela ich príkazy správcovi konverzácií. Správca konverzácií analyzuje tieto príkazy a volá do knižnice nástrojov, ktorá ponúka rôzne akcie, ktoré sa dajú vykonať na úložisku. Akcie agentov sa vykonávajú v zabezpečenom prostredí Docker a výstup sa vráti do Správcu konverzácií, ktorý ich začleňuje do prebiehajúcej konverzácie. Tento iteratívny proces pokračuje, kým úloha nie je úspešne dokončená. Figure 2. Konverzačný manažér určuje, kedy ukončiť konverzáciu.To sa môže stať, keď agent signalizuje dokončenie úlohy (stop príkaz), konverzácia dosiahne maximálny užívateľsky definovaný počet iterácií / tokenov, alebo sa problémy zistia buď v procese alebo v rámci hodnotenia prostredia.Komplexný dizajn AutoDev zaisťuje systematický a kontrolovaný prístup k vývoju založenému na AI. 2.2.3 Conversation Conclusion. 2.3 Agent Plánovač Agent Scheduler je zodpovedný za zorganizovanie agentov AI s cieľom dosiahnuť používateľom definovaný cieľ. Agenty, ktoré sú konfigurované s konkrétnymi osobami a súbormi dostupných príkazov, spolupracujú na vykonávaní rôznych úloh. Plánovač používa rôzne algoritmy spolupráce, ako napríklad Round Robin, Token-Based alebo Priority-Based, na určenie poradia a spôsobu, akým agenti prispievajú k konverzácii. Konkrétne, algoritmy plánovania zahŕňajú, ale nie sú obmedzené na: (i) spoluprácu Round Robin, ktorá vyvoláva každého agenta postupne, čo každému umožňuje vykonávať vopred určený počet operácií; (ii) spoluprácu založenú na tokenoch, ktorá umožňuje agentovi vykonávať viaceré operácie, k Agenty, ktoré zahŕňajú veľké jazykové modely (LLM) ako OpenAI GPT-4 a malé jazykové modely (SLM) optimalizované na generovanie kódu, komunikujú prostredníctvom textového prirodzeného jazyka.Títo agenti prijímajú ciele a históriu konverzácie od plánovača agentov, reagujú akciami špecifikovanými v konfigurácii pravidiel a akcií.Každý agent so svojou jedinečnou konfiguráciou prispieva k celkovému pokroku smerom k dosiahnutiu cieľov používateľa. 2.3.1 Agents. 2.4 Knižnica nástrojov Knižnica nástrojov v AutoDev poskytuje rad príkazov, ktoré umožňujú agentom vykonávať rôzne operácie v archíve. Tieto príkazy sú navrhnuté tak, aby zahŕňali zložité akcie, nástroje a nástroje za jednoduchú a intuitívnu štruktúru príkazov. Napríklad komplikácie súvisiace s budovaním a vykonávaním testov sú odstraňované jednoduchými príkazmi, ako sú build a test <test_file>. • Táto kategória zahŕňa príkazy na úpravu súborov vrátane kódu, konfigurácie a dokumentácie. Nástroje v tejto kategórii, ako je napísať, upraviť, vložiť a odstrániť, ponúkajú rôzne úrovne granularity.Agenti môžu vykonávať akcie od písania celých súborov až po úpravu konkrétnych riadkov v súbore. , umožňuje agentovi prepisovať rad riadkov s novým obsahom. File Editing <filepath><start_line>-<end_line> <content> Retrieval: V tejto kategórii sa nástroje na vyhľadávanie pohybujú od základných nástrojov CLI ako grep, find a ls až po sofistikovanejšie techniky založené na vkladaní. Tieto techniky umožňujú agentom vyhľadávať podobné kódy, čím sa zvyšuje ich schopnosť vyhľadávať relevantné informácie z kódovej databázy. Napríklad príkaz pre vyhľadávanie <content> umožňuje agentovi vykonávať vyhľadávanie podobných snímok založené na vkladaní k poskytnutému obsahu. Build & Execution: Príkazy v tejto kategórii umožňujú agentom bez námahy kompilovať, budovať a spúšťať kódovú základňu pomocou jednoduchých a intuitívnych príkazov.Zložitosť príkazov build na nízkej úrovni je abstraktná, čo zjednodušuje proces v rámci infraštruktúry hodnotenia prostredia.Príklady príkazov v tejto kategórii zahŕňajú: build, run <file>. Testovanie a overovanie: Tieto príkazy umožňujú agentom testovať kódovú základňu vykonaním jedného testovacieho prípadu, konkrétneho testovacieho súboru alebo celého testovacieho súboru. Agenty môžu vykonávať tieto akcie bez toho, aby sa spoliehali na príkazy na nízkej úrovni špecifické pre konkrétne testovacie rámce. Táto kategória zahŕňa aj overovacie nástroje, ako sú lintery a nástroje na nájdenie chýb. Príklady príkazov v tejto kategórii zahŕňajú: syntax <file>, ktorý kontroluje správnosť syntaxu, a test, ktorý spúšťa celý testovací súbor. Git: Fine-grained povolenia pre operácie git môžu byť nakonfigurované používateľom. To zahŕňa operácie ako commits, push, a fúzií. Napríklad, agenti môžu byť udelené povolenie vykonávať iba lokálne commits alebo, ak je to potrebné, presunúť zmeny do pôvodného úložiska. Komunikácia: Agenti môžu zavolať súbor príkazov zameraných na uľahčenie komunikácie s ostatnými agentmi a/alebo používateľom.Najmä príkaz konverzácie umožňuje odosielať správy v prirodzenom jazyku (nie je interpretovaný ako príkazy pre akcie repozitára), príkaz ask sa používa na požiadanie o spätnú väzbu používateľa a príkaz stop prerušuje proces, čo naznačuje dosiahnutie cieľa alebo neschopnosť agentov pokračovať ďalej. Knižnica nástrojov v AutoDev tak poskytuje všestranný a prístupný súbor nástrojov pre agentov AI na interakciu s kódovou základňou a efektívnu komunikáciu v prostredí spolupráce. 2.5 Evaluation Environment Po spustení v kontajneri Docker umožňuje prostredie hodnotenia bezpečné vykonávanie príkazov na úpravu súborov, vyhľadávanie, zostavenie, spustenie a testovanie. Odstraňuje zložitosť príkazov nízkej úrovne a poskytuje zjednodušené rozhranie pre agentov. 2.6 Všetko dohromady Používateľ iniciuje konverzáciu špecifikovaním cieľa a súvisiacich nastavení. Správca konverzácie iniciuje objekt konverzácie, konsoliduje správy od agentov AI a z prostredia hodnotenia. Následne správca konverzácie posiela konverzáciu agentovi Schedulerovi, ktorý je zodpovedný za koordináciu činností agentov AI. V ich úlohe agentov AI jazykové modely (veľké alebo malé LM) navrhujú príkazy prostredníctvom textových interakcií. Rozhranie príkazov zahŕňa rôznorodú sadu funkcií vrátane úprav súborov, vyhľadávania, budovania a vykonávania, testovania a operácií Git. Tieto navrhované príkazy potom analyzuje správca konverzácií, ktorý ich následne nasmeruje do prostredia hodnotenia na vykonanie na kódovej báze. Vykonávanie týchto príkazov prebieha v bezpečných medziach prostredia hodnotenia, ktoré je zapustené v kontajneri Docker. Po vykonaní sa výsledné akcie bezproblémovo integrujú do histórie konverzácie, čo prispieva k následným iteráciám. Tento iteratívny proces pretrváva, kým sa úloha nepovažuje za dokončenú agentmi, dôjde k zásahu používateľa alebo k dosiahnutiu maximálneho limitu iterácie. Dizajn spoločnosti AutoDev zabezpečuje systematickú a bezpečnú orchestráciu agentov AI na dosiahnutie komplexných úloh softvérového inžinierstva autonómnym a používateľsky ovládaným spôsobom. 3 Empirický dizajn V našom empirickom hodnotení sa snažíme posúdiť schopnosti a účinnosť AutoDev v úlohách softvérového inžinierstva, skúmať, či môže zlepšiť výkon modelu AI nad rámec jednoduchého záveru. Výskumné otázky RQ1: Ako efektívne je AutoDev v úlohe generovania kódu? RQ2: Ako efektívne je AutoDev v testovacej generácii? RQ3: Ako efektívne je AutoDev pri dokončovaní úloh? Q1: Ako efektívne je AutoDev v úlohe generovania kódu? Na riešenie RQ1 hodnotíme výkon AutoDev v úlohe generovania kódu pomocou databázy na riešenie problémov HumanEval v Pythone. Táto databáza pozostáva zo 164 problémov s programovaním napísanými ručne, z ktorých každá obsahuje podpis funkcie, doktrínu, telo a v priemere 7,7 testov jednotiek. Účinnosť AutoDev sa meria pomocou metriky Pass@k, kde k predstavuje počet vykonaných pokusov. Úspešne vyriešený problém je definovaný ako ten, kde Au-toDev generuje kód tela metódy, ktorý spĺňa všetky ľudské písomné testy. Jeden pokus zodpovedá celej konverzácii AutoDev, ktorá zahŕňa viaceré výpočtové hovory a kroky. To je v kontraste s inými prístupmi, ako je priame povolanie GPT-4, ktoré zvyčajne zahŕňa jeden výpočtový hovor. Podrobnosti týkajúce sa viacerých výpočtových hovorov a krokov sú ďalej preskúmané v RQ3. Pre toto hodnotenie nastavujeme k = 1, teda počítať Pass@1, berúc do úvahy len úspech dosiahnutý v prvom pokuse. RQ2: Ako efektívne je AutoDev v testovacej generácii? Pre túto výskumnú otázku modifikujeme databázu HumanEval, aby sme vyhodnotili schopnosti spoločnosti AutoDev v testovacej generácii. Zvažujeme riešenie napísané ľuďmi a odmietame poskytnuté testy napísané ľuďmi. AutoDev dostane pokyn na vytvorenie testovacích prípadov pre fokálnu metódu a hodnotí sa na základe úspechu testovania, odvolania sa na fokálnu metódu a pokrytia testov. Hlásime Pass@1, pričom testy považujeme za úspešné, ak prejdú a odvolávajú sa na fokálnu metódu. Q3: Ako efektívne je AutoDev pri dokončovaní úloh? V tejto výskumnej otázke skúmame účinnosť AutoDev pri dokončovaní úloh SE. Analyzujeme počet krokov alebo záverových volaní potrebných, distribúciu použitých príkazov (napr. napísať, testovať) a celkový počet tokenov použitých v konverzácii. AutoDev nastavenia Pre toto hodnotenie AutoDev udržiava konzistentné nastavenia s jedným agentom založeným na modeli GPT-4 (gpt-4-1106-preview). Povolené akcie zahŕňajú úpravu súborov, vyhľadávanie a testovanie. Jediným dostupným komunikačným príkazom je príkaz Stop, ktorý indikuje dokončenie úlohy. Iné príkazy, ako napríklad Ask, sú zakázané, čo vyžaduje, aby AutoDev fungoval autonómne bez ľudskej spätnej väzby alebo zásahu nad rámec pôvodného nastavenia cieľa. 4 Empirické výsledky Q1: Ako efektívne je AutoDev v úlohe generovania kódu? stôl zobrazuje výsledky pre RQ1, porovnávanie AutoDev proti dvom alternatívnym prístupom a nulovej východiskovej línii.Tabuľka obsahuje informácie o modeli, ktorý poháňa každý prístup, potrebu ďalšieho školenia a metriky Pass@1. 1 Porovnali sme AutoDev s Language Agent Tree Search (LATS) a Reflexion, dva hlavné prístupy na Hu-manEval vedúcej tabuľke od marca 2024 [ ].Výsledky pre nulovú základňu (GPT-4) sú prevzaté z technickej správy OpenAI GPT-4 [ A to aj napriek tomu, že sú to ľudia, ktorí si myslia a myslia, že sú to ľudia, ktorí si myslia, že sú to ľudia, ktorí si myslia, že sú to ľudia. 1 11 1 Jazykový agent stromu vyhľadávanie (LATS) [ ] je všestranný rámec, ktorý využíva veľké jazykové modely (LLM) pre plánovanie, konanie a uvažovanie. Inšpirovaný hľadaním stromu Monte Carlo, LATS zamestnáva LLM ako agenti, funkcie hodnoty a optimizátory, prehodnocuje ich schopnosti pre lepšie rozhodovanie. 23 Rozmýšľanie [ ] zavádza jedinečný rámec na posilnenie jazykových agentov prostredníctvom jazykovej spätnej väzby bez aktualizácií hmotnosti.Agenti v Reflexion verbálne odrážajú signály spätnej väzby z úloh, pričom si zachovávajú svoj reflexný text v epizodickom pamäťovom vyrovnávači pre lepšie rozhodovanie. 17 stôl indicates that AutoDev achieves a Pass@1 rate of 91.5%, securing the second-best position on the HumanEval leaderboard. Notably, this result is obtained without addi-tional training data, distinguishing AutoDev from LATS, which achieves 94.4%. Furthermore, the AutoDev framework enhances GPT-4 performance from 67% to 91.5%, marking a 30% relative improvement. 1 Tieto výsledky zdôrazňujú schopnosť spoločnosti AutoDev výrazne zlepšiť výkonnosť LLM pri dokončovaní úloh softvérového inžinierstva.Je však potrebné poznamenať, že účinnosť spoločnosti AutoDev môže zahŕňať viaceré výzvy a kroky záveru, pretože sa ponoríme do ďalších podrobností v RQ3. RQ2: Ako efektívne je AutoDev v testovacej generácii? stôl prezentuje výsledky pre RQ2, porovnávanie AutoDev s nulovým výstrelom GPT-4 (základná línia) a ľudsky napísané testy v skúšobnej generácii úlohy.Keďže OpenAI nehodnotil GPT-4 na skúšobnej generácii úlohy, získali sme nulové výsledky GPT-4 tým, že sa odvolávame na záver s pokynmi na rovnakom modeli GPT-4 používanom pre AutoDev. 2 AutoDev dosiahol skóre Pass@1 vo výške 87,8 % v databáze HumanEval modifikovanej pre úlohu generovania testov, čo predstavuje relatívne zlepšenie o 17 % v porovnaní so základnou hodnotou, ktorá používa rovnaký model GPT-4. vykazuje celkové pokrytie celého súboru testovacích prípadov, pričom nesprávne alebo neúspešné testy považuje za nedostatočné pokrytie. 2 Tieto výsledky potvrdzujú schopnosť spoločnosti AutoDev riešiť rôzne softvérové inžinierske úlohy. Q3: Ako efektívne je AutoDev pri dokončovaní úloh? figúrka ilustruje kumulatívny počet príkazov používaných spoločnosťou AutoDev pre úlohy generovania kódu a generovania testov, pričom sa berie do úvahy priemerný počet príkazov používaných na hodnotenie každého problému HumanEval v RQ1 a RQ2. 3 Pre Code Generation, AutoDev vykonal priemerný počet 5.5 príkazov, pozostávajúcich z 1,8 písomných operácií, 1,7 testovacích operácií, 0,92 zastavených operácií (ukazujúcich dokončenie úlohy), 0.25 nesprávnych príkazov, spolu s minimálnym vyhľadávaním (grep, find, cat), operáciami kontroly syntaxe a príkazmi hovorovej komunikácie. V prípade Test Generation sa priemerný počet príkazov zhoduje s úlohou Code Generation. Avšak, Test Generation zahŕňa viac operácií vyhľadávania a zvýšený výskyt nesprávnych operácií, čo vedie k celkovému priemeru 6,5 príkazov na každé spustenie. Príkaz klasifikujeme ako nesprávny, ak odkazuje na nedostupný príkaz alebo sa neúspešne analyzuje (napr. nesprávne formátovanie alebo počet parametrov).Najčastejšie nesprávne príkazy zahŕňajú AI agentov, ktorí miešajú prirodzený jazyk s kódom alebo príkazmi. Zatiaľ čo AutoDev vyvoláva viac výpočtových výziev v porovnaní s prístupmi, ktoré generujú kandidátsky kód v jednom výzve, je dôležité poznamenať, že AutoDev vykonáva aj testovacie a overovacie operácie, úlohy zvyčajne vykonávané vývojármi na overenie generovaných kandidátov. Okrem toho AutoDev často komunikuje dokončenie úlohy prostredníctvom hovorových príkazov, ktoré poskytujú vhľad a interpretovateľnosť riešenia. Ďalším pozoruhodným komunikačným príkazom, ktorý prispieva k celkovému počtu, je príkaz stop. To predstavuje relatívne lacný záverový hovor, ktorý generuje iba jeden token.Potenciálne optimalizácie by mohli zahŕňať batovanie takýchto operácií s inými príkazmi alebo závermi. Priemerná dĺžka konverzácií AutoDev na riešenie každého problému HumanEval v RQ1 a RQ2 je 1656 a 1863 tokenov. To zahŕňa cieľ používateľa, správy od agenta AI a odpovede z prostredia hodnotenia. Na porovnanie, nulový GPT-4 (základná linka) používa 200 tokenov (odhadované) na generovanie kódu a 373 tokenov na generovanie testov v priemere pre každú úlohu. Napokon AutoDev znáša náklady na vykonávanie súvisiace s organizovaním AI agentov, spravovaním konverzácií a vykonávaním príkazov v prostredí Docker.Zaujímavosťou je, že prostredie hodnotenia založené na Docker je zodpovedné za hlavné náklady na vykonanie, čo predstavuje vyššie náklady v porovnaní s priamymi príkazmi CLI v prostredí používateľa. 5 Diskusia 5.1 Autodev v akcii Čísla (časť I) a (Časť II) poskytujú pohľad na Au-toDev v akcii počas testovacieho generovania úlohy, pričom niektoré interakcie sú zhrnuté alebo vynechané pre stručnosť. , stanovili sme cieľ pre AutoDev generovať najnáročnejšie testovacie prípady podľa konkrétneho formátu. AutoDev agent iniciuje príkaz písať-nový, poskytuje súborovú cestu a obsah testovacieho súboru. AutoDev vykonáva operáciu, potvrdzujúc úspešné písanie obsahu agentovi. Následne AutoDev agent spúšťa testovaciu operáciu a AutoDev spúšťa test v jeho zabezpečenom prostredí Docker, prezentuje správu o vykonávaní testu JSON (zhrnutie na obrázku pre stručnosť). 4 5 4 Agent AutoDev identifikuje chybu v najnáročnejšom výstupe a uznáva, že je potrebná oprava na zosúladenie testu s očakávaným správaním funkcie. Pokračovanie v figúre , agent AutoDev vydáva príkaz napísať, pričom špecifikuje rozsah súborov a číslic (5-5) pre prepis nesprávneho tvrdenia. Po tomto, agent AutoDev pokračuje s testom, ktorý je teraz úspešný. 5 Tento príklad zdôrazňuje schopnosť spoločnosti AutoDev vyhodnotiť svoj generovaný kód a riešiť chyby v rámci vlastného výstupu.Okrem toho demonštruje, ako spoločnosť AutoDev uľahčuje používateľom vhľad do akcií agentov, čo umožňuje agentom komunikovať počas úlohy. 5.2 Spolupráca viacerých agentov AutoDev podporuje spoluprácu viacerých agentov na úlohách, ktoré organizuje Agent Scheduler. V našom hodnotení, vzhľadom na relatívnu jednoduchosť databázy HumanEval, sme obmedzili našu inštaláciu na jediného agenta GPT-4 pre úlohy. Predbežné výsledky však naznačujú pozitívny vplyv spolupráce s viacerými agentmi na zložitejšie úlohy. Experimentovanie s vývojárom AI a revízorom AI, každý s odlišnými zodpovednosťami a dostupnými akciami, spoluprácou na opravách zložitých chýb odhalilo zaujímavé interakcie. revízor AI mohol predbežne identifikovať chyby vývojára AI pred vykonaním akcií validácie kódu a poskytnúť relevantné návrhy. Naše budúce plány zahŕňajú rozšírenie hodnotení tak, aby zahŕňali zložitejšie scenáre, v ktorých môže spolupráca viacerých agentov výrazne zlepšiť výkonnosť spoločnosti AutoDev. 5.3 Človek v kruhu AutoDev umožňuje AI agentom komunikovať pokrok v úlohách alebo požiadať o spätnú väzbu pomocou konverzácie a príkazov na otázky, resp. Anecdotálne, tieto príkazy sa ukázali ako užitočné pre vývojárov, ktorí používajú AutoDev na pochopenie zámerov agenta a získanie poznatkov o pláne agenta. Naše budúce plány zahŕňajú hlbšiu integráciu ľudí v kruhu AutoDev, čo umožňuje používateľom prerušiť agentov a poskytnúť okamžitú spätnú väzbu. 5.4 AutoDev Integrations Naša pilotná štúdia zahŕňala vývojárov, ktorí používali AutoDev ako príkaz CLI, pričom konverzácia bola k dispozícii na pozorovanie v rámci VSCode IDE. Pokračujúc vpred, naším cieľom je integrovať AutoDev do IDE, vytvoriť chatbot zážitok a začleniť ho do CI / CD potrubia a PR preskúmacích platforiem. 6 Súvisiace práce Naša práca je založená na rozsiahlej literatúre, ktorá aplikuje umelú inteligenciu na rôzne úlohy softvérového inžinierstva.V tejto časti skúmame nedávny vývoj a kontextualizujeme AutoDev v tejto bohatej výskumnej krajine. 6.1 AI v softvérovom inžinierstve Integrácia umelej inteligencie, najmä veľkých jazykových modelov (LLM), do softvérového inžinierstva zaznamenala značný pokrok. ], inštruktážne riadenie [ ], a GPT-4 [ ] využili transformátorovú architektúru [ ] pochopiť a generovať nielen prirodzený jazyk, ale aj zdrojový kód. masívne veľkosti parametrov LLM, ako sú tie v Gropher [ ] a Megatron-Turing NLG [ ], a GPT-4 [ ] umožnili týmto modelom AI dosiahnuť pôsobivý výkon v rôznych úlohách. 7 14 13 20 15 18 13 Keď sa postupy vývoja softvéru naďalej vyvíjajú, integrácia najmodernejších technológií sa stáva kľúčovou pre zvýšenie produktivity vývojárov. ].Medzi pozoruhodné pokroky, využitie LLM v rámci integrovaného rozvojového prostredia (IDEs) získal významnú pozornosť [ , , ]. LLMs, including prominent models such as OpenAI’s GPT-3.5 [ ] a GPT-4 [ ], rovnako ako robustné open-source modely ako Code Llama [ , vykazujú potenciál pôsobiť ako inteligentní programátori asistentov. 5 4 10 12 13 16 V tomto článku predstavujeme AutoDev, komplexný rámec pre autonómne softvérové inžinierske úlohy v bezpečnom vývojovom prostredí. AutoDev presahuje existujúce práce tým, že poskytuje univerzálnu knižnicu nástrojov, ktorá umožňuje agentom AI autonómne vykonávať zložité úlohy, ako je úprava kódu, testovanie a integrácia. AutoDev je tiež LLM-agnostic, s infraštruktúrou, ktorá umožňuje rôznorodú sadu modelov AI s rôznymi veľkosťami parametrov a architektúrami, aby spolupracovali na danej úlohe. 6.2 Hodnotenie LLM v softvérovom inžinierstve Evaluating LLMs for software engineering tasks poses unique challenges. Traditional language-based metrics, such as BLEU, have been the focus of previous research, with evaluations conducted on static datasets like GLUE [ ] a BIGBench [ Tieto metriky však často chýbajú pri zachytení dôležitých aspektov programovania, ako je správnosť syntaxe a metriky založené na vykonávaní, ako je budovanie a testovanie. 21 19 Zoznam kódov [ ] sa zaoberá týmito obmedzeniami tým, že poskytuje komplexnú platformu hodnotenia pre LLM v softvérovom inžinierstve. ponúka rôznorodý súbor údajov o referenčných hodnotách spolu so základnými modelmi, ako sú CodeBERT a CodeGPT. 9 Ľudský život [ ] prispieva k oblasti tým, že sa zameriava na funkčnú správnosť LLM, zavedenie referenčnej databázy problémov s ručne napísaným programovaním v Pythone. 5 [ Podobne ako HumanEval, Copilot Evaluation Harness zahŕňa úvahy o vykonávaní kódu, ale rozširuje spektrum úloh softvérového inžinierstva (kód, testovanie a generovanie dokumentácie, pochopenie pracovného priestoru a riešenie dotazov), ako aj zvyšovanie metrík používaných na hodnotenie. 3 Zatiaľ čo naše súčasné hodnotenie spolieha na HumanEval na posúdenie účinnosti AutoDev v dvoch kódovacích úlohách, naša budúca práca sa zameriava na rozšírenie tohto hodnotenia na náročnejšie a reálne dátové súbory, ako sú tie, ktoré ponúka Copilot Evaluation Harness. 6.3 AI v softvérovom inžinierstve Interakcie Zatiaľ čo predchádzajúce práce skúmali križovatku AI a softvérového inžinierstva, len málo sa ponorilo do programovania riadeného AI v rámci interakcií IDE. AutoDev, ako je uvedené v tomto článku, čerpá inšpiráciu z existujúcich prác v literatúre a zároveň posilňuje ich príspevky. LATS (Language Agent Tree Search – vyhľadávanie jazykových agentov) ) a uvažovanie [ Každá prezentuje jedinečné prístupy k úlohám riadeným AI. 8 23 17 Autopožičovňa [ ] pracuje spájaním GPT-3.5 a GPT-4 s sprievodným botom, čo umožňuje používateľom poučiť tieto jazykové modely o konkrétnych cieľoch. 8 Látka [ ] , na druhej strane, je všeobecný rámec, ktorý synergizuje schopnosti LLM v plánovaní, konaní a uvažovaní. Inšpirovaný Monte Carlo strom hľadanie, bežne používané v modelových posilnenie učenia, LATS zamestnáva LLM ako agenti, funkcie hodnoty, a optimizátory, zlepšenie rozhodovania. Zavádza prostredie pre vonkajšiu spätnú väzbu, ktorá ponúka zámerné a adaptívne mechanizmus riešenia problémov. 23 Rozmýšľanie [ ] introduces a novel framework to reinforce language agents through linguistic feedback. Reflexion agents verbally reflect on task feedback signals, maintaining their reflective text in an episodic memory buffer for improved decision-making. This flexible framework incorporates various types and sources of feedback signals and exhibits significant improvements over baseline agents in diverse tasks, including sequential decision-making, coding, and language reasoning. 17 AutoDev sa špecializuje na tieto nápady v oblasti softvérového inžinierstva a ponúka flexibilný rámec, ktorý umožňuje agentom AI dokončiť zložité úlohy SE v plnej autonómii.Naša práca sa zameriava na preklenutie medzery medzi tradičnými postupmi softvérového inžinierstva a automatizáciou riadenou AI, čo uľahčuje spoluprácu medzi vývojármi a agentmi AI. Zavedením univerzálnej knižnice nástrojov AutoDev umožňuje agentom AI vykonávať zložité úlohy autonómne, čo poskytuje sľubný pokrok v krajine vývoja softvéru podporovaného AI. 7 Záver In this paper, we introduced AutoDev, a framework enabling AI Agents to autonomously interact with repositories, perform actions, and tackle complex software engineering tasks. We’ve shifted the responsibility of extracting relevant context for software engineering tasks and validating AI-generated code from users (mainly developers) to the AI agents themselves. Agents are now empowered to retrieve context through Retrieval actions and validate their code generation through Build, Execution, Testing, and Validation actions. Úloha vývojára v rámci rámca AutoDev sa mení z manuálnych akcií a validácie návrhov AI na nadriadeného, ktorý dohliada na spoluprácu viacerých agentov na úlohách, s možnosťou poskytovať spätnú väzbu. Naše hodnotenie databázy HumanEval pre generovanie kódu a testovanie ukázalo impozantné výsledky, dosiahnuté skóre Pass@1 91.5 pre generovanie kódu – druhý najlepší výsledok na tabuľke v čase písania a najlepší medzi prístupmi, ktoré nevyžadujú ďalšie údaje o výcviku. Looking ahead, our goal for future work is to integrate AutoDev into IDEs as a chatbot experience and incorporate it into CI/CD pipelines and PR review platforms. Referencie [1] Generácia kódu na humaneval - state-of-the-art. 2024. prístup: 2024-02-27. HNPS je na paperswithcode.com/sota/code-generation-on-humaneval [2] GitHub copilot: Váš programátor pre pár. 2024. hNps://github.com/ funkcie/ copilot, [3] Agarwal, A., Chan, A., Chandel, S., Jang, J., Miller, S., Moghad-dam, R. Z., Mohylevskyy, Y., Sundaresan, N., a Tufano, M. Hodnotenie kopírovania položiek: Hodnotenie programovania riadeného softvérom, 2024. [4] Chen, B., Mustakin, N., Hoang, A., Fuad, S., a Wong, D. Vscuda: rozšírenie cuda založené na Llm pre vizuálny štúdiový kód. (New York, NY, USA, 2023), SC-W ’23, Association for Computing Machinery, s. Výsledky 23 workshopov Medzinárodnej konferencie o vysokovýkonných výpočtoch, sieťach, ukladaní a analýze [5] Chen, M., Tworek, J., Jun, H., Yuan, Q., de Oliveira Pinto, H. P., et al. Hodnotenie veľkých jazykových modelov vyškolených na kóde. [6] Ding, Y., Wang, Z., Ahmad, W., Ding, H., Tan, M., Jain, N., Ra-manathan, M. K., Nallapati, R., Bhatia, P., Roth, D., et al. Cross-codeeval: Rozmanitá a viacjazyčná referenčná hodnota pre dokončenie kódu cez súbory. 2024 ) Neurálne systémy spracovania informácií 36 [7] Floridi, L., a Chiriatti, M. Gpt-3: Jeho povaha, rozsah, limity a dôsledky. (2020), 681 až 694. Myšlienky a stroje 30 [8] Gravitas a S. Autogpt 2024 GitHub úložisko. hNps://github.com/Significant-Potravinárstvo/ Autopožičovňa , [9] Lu, S., Guo, D., Ren, S., Huang, J., Svyatkovskiy, A., Blanco, A., Clement, C., Drain, D., Jiang, D., Tang, D., Li, G., Zhou, L., Shou, L., Zhou, L., Tufano, M., Gong, M., Zhou, M., Duan, N., Sundaresan, N., Deng, S. K., Fu, S., a Liu, S. Codexglue: Dataset referenčných hodnôt strojového učenia pre pochopenie a generovanie kódu, 2021. [10] Nam, D., Macvean, A., Hellendoorn, V., Vasilescu, B., a Myers, B. In-ide generácie informačná podpora s veľkým jazykovým modelom, 2023. [11] FedAI, :, Achiam, J., Adler, S., Agarwal, S., Ahmad, L., Akkaya, I., Aleman, F. L., Almeida, D., Altenschmidt, J., Goonti, S., Anadkat, S., Avila, R., Babuschkin, I., Boyd, M., Cumling, S., Brockman, G., Baltescu, P., Bao, H., Bavarian, M., Brundage, M., Button, K., Cai, T., Berdine, R., Cann, Fulyiro, G., Berner, C., Bogdonoff, L., Boiko, O., Boyd, M., Cumling-man, A.-L., Brockman, G., Brockman, T., Brundage, M., Button, K., Cai, T., Campbell, R., A Grafstein, M., Gray, S., Greene, R., Gross, J., Gu, S. S., Guo, Y., Hallacy, C., Han, J., Harris, J., He, Y., Heaton, M., Heidecke, J., Hesse, C., Hickey, A., Hickey, W., Hoeschele, P., Houghton, B., Hsu, K., Hu, S., Hu, X., Huizinga, J., Jain, S., Jain, S., Jang, J., Jiang, A., Jiang, R., Jin, H., Jin, D., Jomoto, S., Jonn, B., Jun, H., Kaftan, T., Łukasz Kaiser, Kamali, A., Kanitscheider, I., Keskar, N. S., Khan, T., Kilpatrick, L., Kim, J. W., Kim, C., Kim, Y., Kirchner, J. H., Kiros, J., Knight, M., Kokotajlo, D., Łukasz Kondraciuk, Kondrich, A., Konstantinidis, A., Kosic, K., Krueger, G., Kuo, V., Lampe, M., Lan, I., Lee, T., Leike, J., Leung, J., Levy, D., Li, C. M., Lim, R., Lin, M., Lin, S., Litwin, M., Lopez, T., Lowe, R., Lue, P., Makanju, A., Mal-facini, K., Manning, S., Markov, T., Markovski, Y., Martin, B., Mayer, K., Mayne, A., McGrew, B., McKinney, S. M., McLeavey, C., McMillan, P., Mély, D., Nair, A., Medina, D., Mehta, A., Menik, J., Metz, L., Mishchenko, A., Mishkin, P., Monaco, V., Morikawa, E., Poking, D., Mu, T., Murati, M., Murk, O., Mély, D., Nair, A., Nakano, R., Mehta, R., Neelak, A., Ngo, R., Noh, A., Weihang, J., Ramesh, A., Raymond, C., Real, F., Rimbach, K., Ross, C., Rotsted, B., Roussez, H., Ryder, N., Saltarelli, M., Sanders, Xu, T., Santurkar, S., Sastry, G., Schmidt, K., Sohl, I., Sokolowsky, B., Song, Y., Schulman, J., Selsam, D., Sheppard, K., Sherbakov, T., Summers, N., Sutieh, I., Shoker, S., J., Temba, Yoo, P., Sidor, S., Sigler, E., Simens, M., Sitkin, J., Slama, K., Sohl, I., Sokolowsky, B., Song, Y., Selsam, D., Sheppard, N., Such, F [12] OpenAI. Gpt 3.5 modely, 2023 [13] OpenAI. Gpt-4 technická správa, 2023 [14] Ouyang, L., Wu, J., Jiang, X., Almeida, D., Wainwright, C., Mishkin, P., Zhang, C., Agarwal, S., Slama, K., Ray, A., et al. Školenie lan-guage modelov nasledovať pokyny s ľudskou spätnou väzbou. (2022), 27730 až 27744. Neurálne systémy spracovania informácií 35 [15] Rae, J. W., Borgeaud, S., Cai, T., Millican, K., a ďalšie. škálovanie jazykových modelov: metódy, analýzy a poznatky z tréningu gopher, 2022. [16] Roziere, B., Gehring, J., Gloeckle, F., Sootla, S., Gat, I., Tan, X. E., Adi, Y., Liu, J., Remez, T., Rapin, J., et al. Kódová llama: Modely otvoreného základu pre kód. 2023 Ťažká arXiv preprint arXiv:2308.12950 [17] Shinn, N., Cassano, F., Berman, E., Gopinath, A., Narasimhan, K., and Yao, S. Reflexion: Language agents with verbal reinforcement learning, 2023. [18] Smith, S., Patwary, M., Norick, B., LeGresley, P., Rajbhandari, S., Casper, J., Liu, Z., Prabhumoye, S., Zerveas, G., Korthikanti, V., Zhang, E., Child, R., Aminabadi, R. Y., Bernauer, J., Song, X., Shoeybi, M., He, Y., Houston, M., Tiwary, S., and Catanzaro, B. Using deepspeed and megatron to train megatron-turing nlg 530b, a large-scale generative language model, 2022. [19] Srivastava, A., Rastogi, A., Rao, A., Shoeb, A. A. M., et al. Beyond the imitation game: Quantifying and extrapolating the capabilities of language models, 2023. [20] Vaswani, A., Shazeer, N., Parmar, N., Uszkoreit, J., Jones, L., Gomez, A. N., Kaiser, Ł., a Polosukhin, I. Pozornosť je všetko, čo potrebujete. (2017). Advances in neural information processing systems 30 [21] Wang, A., Singh, A., Michael, J., Hill, F., Levy, O., a Bowman, S. R. Glue: Multi-task benchmark a analytická platforma pre pochopenie prirodzeného jazyka, 2019. [22] Wu, Q., Bansal, G., Zhang, J., Wu, Y., Li, B., Zhu, E., Jiang, L., Zhang, X., Zhang, S., Liu, J., Awadallah, A. H., White, R. W., Burger, D., a Wang, C. Autogen: Umožnenie ďalšej generácie aplikácií llm prostredníctvom konverzácie s viacerými agentmi, 2023. [23] Zhou, A., Yan, K., Shlapentokh-Rothman, M., Wang, H., a Wang, Y.-X. Jazykový agent strom vyhľadávanie zjednocuje uvažovanie konanie a plánovanie v jazykových modeloch, 2023. Tento dokument je k dispozícii v archíve pod licenciou CC by 4.0 Deed (Attribution 4.0 International). Tento dokument je k dispozícii v archíve pod licenciou CC by 4.0 Deed (Attribution 4.0 International).