Processtroom voor GitHub Copilot-gebruikersprompt
In deze les wordt uitgelegd hoe GitHub Copilot uw prompts verandert in slimme, bruikbare code. Over het algemeen ontvangt GitHub Copilot prompts en retourneert codesuggesties of antwoorden in de gegevensstroom. Dit proces stelt een binnenkomende en uitgaande stroom voor.
Binnenkomende stroom:
Laten we alle stappen doorlopen die Copilot neemt om de prompt van een gebruiker in een codesuggesties te verwerken.
1. Veilige promptoverdracht en contextverzameling
Het proces begint met de beveiligde overdracht van de gebruikerprompt via HTTPS. Dit zorgt ervoor dat uw opmerking in natuurlijke taal veilig en vertrouwelijk wordt verzonden naar de servers van GitHub Copilot, waardoor gevoelige informatie wordt beschermd.
GitHub Copilot ontvangt de gebruikersprompt veilig. Dit kan een Copilot-chat of een opmerking in natuurlijke taal zijn die u in uw code hebt ontvangen.
Tegelijkertijd verzamelt Copilot contextdetails:
- Code vóór en na de cursorpositie, zodat deze inzicht krijgt in de directe context van de prompt.
- Bestandsnaam en type van het bestand dat wordt bewerkt, zodat codesuggesties kunnen worden aangepast aan het specifieke bestandstype.
- Informatie over aangrenzende geopende tabbladen, zodat de gegenereerde code overeenkomt met andere codesegmenten in hetzelfde project.
- Informatie over projectstructuur en bestandspaden
- Informatie over programmeertalen en frameworks
- Preverwerking met behulp van de FIM-techniek (Fill-in-the-Middle) om rekening te houden met zowel de voorgaande als de volgende codecontext, waardoor copilot meer nauwkeurige en relevante codesuggesties kan genereren door gebruik te maken van een bredere context.
Met deze stappen wordt de aanvraag op hoog niveau van de gebruiker omgezet in een concrete coderingstaak.
2. Proxyfilter
Zodra de context is verzameld en de prompt is gemaakt, wordt deze veilig doorgegeven aan een proxyserver die wordt gehost in een Microsoft Azure-tenant die eigendom is van GitHub. De proxy filtert verkeer, blokkeert pogingen om de prompt te hacken of het systeem te manipuleren in het onthullen van details over hoe het model codesuggesties genereert.
3. Toxiciteitsfiltering
Copilot bevat mechanismen voor het filteren van inhoud voordat u doorgaat met het ophalen van intenties en het genereren van code, om ervoor te zorgen dat de gegenereerde code en antwoorden geen inhoudsfiltering bevatten of promoveren:
- Haatspraak en ongepaste inhoud: Copilot maakt gebruik van algoritmen om de opname van haatspraak, aanstootgevende taal of ongepaste inhoud te detecteren en te voorkomen die schadelijk of aanstootgevend kan zijn.
- Persoonlijke gegevens: Copilot filtert alle persoonlijke gegevens, zoals namen, adressen of identificatienummers, actief uit om de privacy van gebruikers en gegevensbeveiliging te beschermen.
4. Codegeneratie met LLM
Ten slotte wordt de gefilterde en geanalyseerde prompt doorgegeven aan LLM-modellen, waarmee de juiste codesuggesties worden gegenereerd. Deze suggesties zijn gebaseerd op copilot's begrip van de prompt en de omringende context, zodat de gegenereerde code relevant, functioneel en afgestemd is op projectspecifieke vereisten.
Uitgaande stroom:
5. Validatie na verwerking en reactie
Zodra het model de reacties produceert, verwijdert het toxiciteitsfilter schadelijke of aanstootgevende gegenereerde inhoud. De proxyserver past vervolgens een laatste laag controles toe om codekwaliteit, beveiliging en ethische normen te garanderen. Deze controles zijn onder andere:
- Codekwaliteit: antwoorden worden gecontroleerd op veelvoorkomende bugs of beveiligingsproblemen, zoals CROSS-site scripting (XSS) of SQL-injectie, om ervoor te zorgen dat de gegenereerde code robuust en veilig is.
- Overeenkomende openbare code (optioneel): optioneel kunnen beheerders een filter inschakelen dat voorkomt dat Copilot suggesties retourneert van meer dan circa 150 tekens als ze nauw lijken op bestaande openbare code op GitHub. Dit voorkomt dat samenvallende overeenkomsten worden voorgesteld als oorspronkelijke inhoud. Als een deel van het antwoord deze controles mislukt, wordt het afgekapt of verwijderd.
6. Introductie van suggesties en feedbacklus
Alleen antwoorden die alle filters doorgeven, worden aan de gebruiker geleverd. Copilot initieert vervolgens een feedbacklus op basis van uw acties om het volgende te bereiken:
- Breid de kennis uit van geaccepteerde suggesties.
- Leer en verbeter door wijzigingen en afwijzingen van de suggesties.
7. Herhaal dit voor volgende prompts
Het proces wordt herhaald wanneer u meer prompts opgeeft, waarbij Copilot continu gebruikersaanvragen verwerkt, inzicht krijgt in de intentie en code genereert in reactie. In de loop van de tijd past Copilot de cumulatieve feedback- en interactiegegevens toe, inclusief contextdetails, om het begrip van de gebruikersintentie te verbeteren en de mogelijkheden voor het genereren van code te verfijnen.