Procesforløb for GitHub Copilot-brugerprompt

Fuldført

I dette undermodul opdeler vi, hvordan GitHub Copilot omdanner dine prompter til smart, brugbar kode. Generelt modtager GitHub Copilot prompter og returnerer kodeforslag eller svar i dataflowet. Denne proces foreslår et indgående og udgående flow.

Indgående flow:

Illustration af det indgående flow for GitHub Copilot.

Lad os gennemgå alle de trin, Som Copilot udfører for at behandle en brugers prompt i et kodeforslag.

1. Sikker hurtig overførsel og kontekstindsamling

Processen starter med sikker overførsel af brugerprompten via HTTPS. Dette sikrer, at din kommentar på naturligt sprog sendes til GitHub Copilots servere sikkert og fortroligt, så følsomme oplysninger beskyttes.

GitHub Copilot modtager sikkert brugerprompten, som kan være en Copilot-chat eller en kommentar på et naturligt sprog, som du har angivet i din kode.

Samtidig indsamler Copilot kontekstoplysninger:

  • Kode før og efter markørens placering, hvilket hjælper den med at forstå promptens øjeblikkelige kontekst.
  • Filnavn og filtype for den fil, der redigeres, så den kan skræddersy kodeforslag til den specifikke filtype.
  • Oplysninger om tilstødende åbne faner, der sikrer, at den genererede kode er i overensstemmelse med andre kodesegmenter i det samme projekt.
  • Oplysninger om projektstruktur og filstier
  • Oplysninger om programmeringssprog og -strukturer
  • Forbehandling ved hjælp af FIM-teknikken (Fill-in-the-Middle) til at overveje både den foregående og følgende kodekontekst og effektivt udvide modellens forståelse, så Copilot kan generere mere nøjagtige og relevante kodeforslag ved at udnytte en bredere kontekst.

Disse trin oversætter brugerens anmodning på højt niveau til en konkret kodningsopgave.

2. Proxyfilter

Når konteksten er indsamlet, og prompten er bygget, overføres den sikkert til en proxyserver, der hostes i en GitHub-ejet Microsoft Azure-lejer. Proxyen filtrerer trafik, blokerer forsøg på at hacke prompten eller manipulere systemet til at afsløre detaljer om, hvordan modellen genererer kodeforslag.

3. Toksicitetsfiltrering

Copilot inkorporerer mekanismer til filtrering af indhold, før han fortsætter med udtrækning af hensigt og kodeoprettelse for at sikre, at den genererede kode og de genererede svar ikke inkluderer eller fremhæver:

  • Hadefuld tale og upassende indhold: Copilot anvender algoritmer til at registrere og forhindre indtagelse af hadefuld tale, stødende sprog eller upassende indhold, der kan være skadeligt eller stødende.
  • Personlige data: Copilot filtrerer aktivt alle personlige data, f.eks. navne, adresser eller identifikationsnumre, ud for at beskytte brugerens personlige oplysninger og datasikkerhed.

4. Kodeoprettelse med LLM

Til sidst sendes den filtrerede og analyserede prompt til LLM-modeller, som genererer relevante kodeforslag. Disse forslag er baseret på Copilots forståelse af prompten og den omgivende kontekst, hvilket sikrer, at den genererede kode er relevant, funktionel og tilpasset projektspecifikke krav.

Udgående flow:

Illustration af GitHub Copilot-udgående flow.

5. Validering af efterbehandling og svar

Når modellen producerer sine svar, fjerner toksicitetsfilteret alt skadeligt eller stødende genereret indhold. Proxyserveren anvender derefter et endeligt kontrollag for at sikre kodekvalitet, sikkerhed og etiske standarder. Disse kontroller omfatter:

  • Kodekvalitet: Svar kontrolleres for almindelige fejl eller sikkerhedsrisici, f.eks. krydsscripting på tværs af websteder (XSS) eller SQL-injektion, der sikrer, at den genererede kode er robust og sikker.
  • Matchende offentlig kode (valgfrit): Administratorer kan eventuelt aktivere et filter, der forhindrer Copilot i at returnere forslag på mere end ca. 150 tegn, hvis de ligner den eksisterende offentlige kode på GitHub. Dette forhindrer tilfældige matches i at blive foreslået som oprindeligt indhold. Hvis en del af svaret ikke kan kontrolleres, afkortes eller kasseres det.

6. Initiering af forslag om levering og feedbackløkke

Det er kun svar, der sender alle filtre, der leveres til brugeren. Copilot starter derefter en feedbackløkke baseret på dine handlinger for at opnå følgende:

  • Få mere viden ud fra accepterede forslag.
  • Få mere at vide om og bliv bedre ved hjælp af ændringer og afvisninger af forslagene.

7. Gentag for efterfølgende prompter

Processen gentages, når du giver flere prompter, hvor Copilot løbende håndterer brugeranmodninger, forstår deres hensigt og genererer kode som svar. Copilot anvender med tiden de akkumulerede feedback- og interaktionsdata, herunder kontekstdetaljer, for at forbedre forståelsen af brugerhensigt og forfine sine kodegenereringsfunktioner.