AI-kodeassistent
Også kendt som: kodeassistent, AI-kodehjælper
Et værktøj i programmørens editor, der foreslår, forklarer og omskriver kode ved hjælp af en stor sprogmodel.
Kladde - dette opslag er endnu ikke gennemgået.
Formelt
Software, der sender den kode, en udvikler arbejder på, sammen med nærliggende filer og en forespørgsel som kontekst til en stor sprogmodel og viser svaret som kodefuldførelse i linjen, chatsvar eller foreslåede ændringer, som udvikleren godkender eller afviser.
Forklaret enkelt
Som en hjælper, der har læst en masse og kigger dig over skulderen, mens du skriver - hurtig med idéer og glad for at forklare, men den har ikke set hele dit projekt og tager af og til selvsikkert fejl.
I praksis
En udvikler, der lige er startet i en regions IT-afdeling, spørger assistenten, hvad en gammel funktion i laboratoriesystemet gør, får en kort forklaring og lader den skrive et udkast til de manglende inputtjek, som hun læser og retter til.
Hvorfor det betyder noget
Den gør rutinearbejde hurtigere, men den kode og de hemmeligheder, der er åbne i editoren, kan blive sendt til en ekstern udbyder, og forslagene kan rumme de samme fejl som den offentlige kode, den har lært af.
Teknisk uddybning
Kategorien tog form med GitHub Copilot, der udkom som teknisk preview i juni 2021 bygget på OpenAI's Codex-model og blev generelt tilgængelig i juni 2022. Codex-artiklen (Chen et al., 2021) introducerede også benchmarket HumanEval med 164 håndskrevne Python-opgaver, der bedømmes med enhedstests og målet pass@k; Codex med 12 milliarder parametre løste 28,8 % ved pass@1, et tal, som nutidens modeller langt overgår. Nutidens assistenter kombinerer flere interaktionsformer i én editorudvidelse: kodefuldførelse i linjen, et chatpanel, redigering af en markering, ændringer på tværs af filer og i stigende grad en agenttilstand, der glider over i en egentlig kodeagent.
Arkitektonisk er det interessante kontekstmotoren, ikke modellen. Ved hver forespørgsel samler klienten kandidater til kontekst (den aktuelle fil omkring markøren, andre åbne og nyligt viste filer, symboler og typer fra language serveren, uddrag hentet fra et repository-indeks via embedding- eller nøgleordssøgning samt projektets instruktionsfiler), rangerer dem og pakker dem ind i et tokenbudget. Forespørgsler om fuldførelse kræver en latenstid på et par hundrede millisekunder og bruger derfor små, hurtige modeller med stramme budgetter; chat og redigering kan bære større modeller og længere kontekst. Svarene efterbehandles: syntakstjek, filtre for hemmeligheder og stødende indhold og eventuelt et filter, der undertrykker forslag, som matcher offentlig kode, hvilket leverandørerne tilbyder for at mindske licensrisikoen.
Datastyring er den største bekymring i virksomheder. Alt, hvad der er i den samlede kontekst, forlader arbejdsstationen, herunder hemmeligheder i åbne .env-filer, personoplysninger i testdata og proprietær kode. Organisationer bør tjekke leverandørens vilkår for opbevaring og træning på kundekode, konfigurere udelukkelse af følsomme stier og efter databeskyttelsesforordningen behandle udbyderen som databehandler, hvor personoplysninger kan blive sendt, med en databehandleraftale og et lovligt grundlag for enhver overførsel uden for EØS efter kapitel V. Selvhostede eller lokale modeller bytter kvalitet for kontrol.
Hvad angår kodekvalitet, er den klassiske måling Pearce et al. (2022), der gav Copilot 89 sikkerhedsrelevante scenarier og fandt, at ca. 40 % af de 1.689 genererede programmer indeholdt en svaghed fra CWE-listen. Assistenter gengiver mønstre, der er almindelige i offentlig kode, også usikre, og indhold i repositoryet, der læses som kontekst, kan bære prompt injection, der styrer chatsvarene. Leverandørers produktivitetsmål som acceptrate måler, hvor ofte forslag beholdes, ikke om den resulterende kode er korrekt eller vedligeholdbar, så teams bør kombinere udrulningen med samme SAST, afhængighedsscanning og gennemgang, som de bruger på kode skrevet af mennesker.
Hvad du bør lære først
Alt det, dette bygger på - grundlaget først.
- Token
- →Kontekstvindue
- →Transformer
- →Stor sprogmodel (LLM)
- →AI-kodeassistent
Relationer
- Består af
- Kodefuldførelse (code completion)
- Forudsætter
- Stor sprogmodel (LLM)Kontekstvindue
- Åbner for
- AI-parprogrammeringVibe coding
- Forveksl ikke med
- Kodeagent
Kilder og videre læsning
Opslagsværker
- Chen et al. (2021), Evaluating Large Language Models Trained on Code
- Pearce et al. (2022), Asleep at the Keyboard? Assessing the Security of GitHub Copilot's Code Contributions (IEEE S&P)
Hvor dataene kommer fra
Dette opslag er skrevet af en AI ud fra kilderne ovenfor og er endnu ikke gennemgået af et menneske. Brug det som udgangspunkt, og tjek alt vigtigt mod kilderne.
Se gennemgangskøenForeslå en rettelse på GitHubDette begreb som JSON
Nævnt i
Test dig selv
Indlæser…