Flux de processus d'invite utilisateur GitHub Copilot
Dans cette unité, nous allons décomposer la façon dont GitHub Copilot transforme vos invites en code intelligent et utilisable. En général, GitHub Copilot reçoit des prompts et retourne des suggestions de code ou des réponses dans son flux de données. Ce processus suggère un flux entrant et un flux sortant.
Flux entrant :
Examinons toutes les étapes que Copilot suit pour traiter l'invite d'un utilisateur dans une suggestion de code.
1. Transmission sécurisée des prompts et collecte du contexte
Le processus commence par la transmission sécurisée de l'invite de l'utilisateur via HTTPS. Cette transmission garantit que votre commentaire en langage naturel est envoyé aux serveurs de GitHub Copilot de manière sécurisée et confidentielle, en protégeant les informations sensibles.
GitHub Copilot reçoit en toute sécurité l'invite de l'utilisateur, qui peut être une conversation Copilot ou un commentaire en langage naturel fourni par vous dans votre code.
Simultanément, Copilot collecte les détails du contexte :
- Code avant et après la position du curseur, ce qui lui permet de comprendre le contexte immédiat de l'invite.
- Nom de fichier et type du fichier en cours de modification, ce qui lui permet d'adapter les suggestions de code au type de fichier spécifique.
- Informations sur les onglets ouverts adjacents, en veillant à ce que le code généré s'aligne sur d'autres segments de code dans le même projet.
- Informations sur la structure du projet et les chemins d’accès aux fichiers
- Informations sur les langages et frameworks de programmation
- Prétraitement à l’aide de la technique de remplissage au milieu (FIM, Fill-in-the-Middle) pour prendre en compte le contexte du code qui précède et du code qui suit, élargissant ainsi efficacement la compréhension du modèle pour permettre à Copilot de générer des suggestions de code plus précises et plus pertinentes en tirant profit d’un contexte plus vaste.
Ces étapes traduisent la demande générale de l’utilisateur en tâche de codage concrète.
2. Filtre proxy
Une fois le contexte collecté et le prompt créé, ce dernier est passé de manière sécurisée à un serveur proxy hébergé dans un locataire Microsoft Azure appartenant à GitHub. Le proxy filtre le trafic et bloque les tentatives de piratage du prompt ou de manipulation du système pour révéler des détails sur la façon dont le modèle génère des suggestions de code.
3. Filtrage de toxicité
Copilot intègre des mécanismes de filtrage de contenu avant de poursuivre avec l'extraction d'intentions et la génération de code, afin de s'assurer que le code et les réponses générés n'incluent pas ou ne favorisent pas :
- Discours haineux et contenu inapproprié : Copilot utilise des algorithmes pour détecter et empêcher la diffusion de discours de haine, de langage offensant ou de contenu inapproprié qui pourrait être dangereux ou offensant.
- Données personnelles : Copilot filtre activement les données personnelles comme les noms, les adresses ou les numéros d'identification,afin de protéger la confidentialité des utilisateurs et la sécurité des données.
4. Génération de code avec des LLM
Enfin, le prompt filtré et analysé est transmis aux modèles LLM qui génèrent des suggestions de code appropriées. Ces suggestions sont basées sur la compréhension du prompt et du contexte environnant par Copilot, ce qui garantit que le code généré est pertinent, fonctionnel et aligné sur les exigences propres au projet.
Flux sortant :
5. Post-traitement et validation de la réponse
Une fois que le modèle produit ses réponses, le filtre de toxicité supprime tout contenu dangereux ou offensant généré. Le serveur proxy applique ensuite une dernière série de vérifications pour garantir la qualité du code, la sécurité et le respect des normes éthiques. Ces vérifications incluent :
- Qualité du code : Les réponses sont vérifiées pour détecter les vulnérabilités ou bogues courants, notamment le scripting inter-site (XSS) ou l’injection de code SQL, garantissant ainsi que le code généré est robuste et sécurisé.
- Code public correspondant (facultatif) : Les administrateurs peuvent éventuellement activer un filtre qui empêche Copilot de retourner des suggestions de plus de 150 caractères environ si elles ressemblent étroitement à du code public existant sur GitHub. De cette façon, des correspondances fortuites ne sont pas suggérées comme du contenu original. Si une partie de la réponse échoue à ces vérifications, elle est tronquée ou abandonnée.
6. Remise de suggestions et lancement d’une boucle de rétroaction
Seules les réponses qui satisfont à tous les filtres sont remises aux utilisateurs. Copilot lance ensuite une boucle de rétroaction basée sur vos actions pour atteindre les objectifs suivants :
- Développer ses connaissances à partir de suggestions acceptées.
- Apprendre et améliorer par le biais de modifications et de rejet de ses suggestions.
7. Répéter pour les prompts suivants
Le processus est répété lorsque vous fournissez davantage d'invites. Copilot gère en permanence les demandes des utilisateurs, comprend leur intention et génère du code en réponse. Au fil du temps, Copilot applique les données cumulatives de commentaires et d'interaction, y compris les détails du contexte, pour améliorer sa compréhension de l'intention de l'utilisateur et affiner ses fonctionnalités de génération de code.