Prozessablauf der GitHub Copilot-Benutzereingabeaufforderungen

Abgeschlossen

In dieser Lektion schauen wir uns an, wie GitHub Copilot Ihre Eingabeaufforderungen in intelligenten, verwendbaren Code verwandelt. Im Allgemeinen empfängt GitHub Copilot Prompts und gibt Codevorschläge oder Antworten im Datenfluss zurück. Dieser Prozess schlägt einen eingehenden und ausgehenden Datenfluss vor.

Eingehender Fluss:

Abbildung des eingehenden GitHub Copilot-Flusses

Sehen wir uns alle Schritte an, die Copilot ausführt, um die Eingabeaufforderung von Benutzer*innen in einen Codevorschlag zu verwandeln.

1. Sichere Prompt-Übertragung und Kontexterfassung

Der Prozess beginnt mit der sicheren Übertragung der Benutzeraufforderung über HTTPS. Dadurch wird sichergestellt, dass Ihr Kommentar in natürlicher Sprache sicher und vertraulich an die Server von GitHub Copilot gesendet wird, um sensible Informationen zu schützen.

GitHub Copilot erhält die Benutzeraufforderung auf sichere Art, als Copilot-Chat oder als einen von Ihnen in Ihrem Code bereitgestellten Kommentar in natürlicher Sprache.

Gleichzeitig sammelt Copilot Kontextdetails:

  • Code vor und nach der Cursorposition, damit es den unmittelbaren Kontext der Eingabeaufforderung versteht.
  • Name und Typ der Datei, die bearbeitet wird, sodass es Codevorschläge an den jeweiligen Dateityp anpassen kann.
  • Informationen zu benachbarten geöffneten Registerkarten, um sicherzustellen, dass der generierte Code mit anderen Codesegmenten im selben Projekt übereinstimmt.
  • Informationen zu Projektstruktur und Dateipfaden
  • Informationen zu Programmiersprachen und Frameworks
  • Vorverarbeitung mithilfe der FIM-Technik (Fill-in-the-Middle), um sowohl den vorangehenden als auch den folgenden Codekontext zu berücksichtigen und dadurch das Verständnis des Modells effektiv zu erweitern, sodass Copilot durch die Nutzung eines breiteren Kontexts präzisere und relevantere Codevorschläge generieren kann.

In diesen Schritten wird die allgemeine Anforderung der Benutzer in eine konkrete Codierungsaufgabe übersetzt.

2. Proxyfilter

Sobald der Kontext erfasst und die Prompt erstellt wurde, wird er sicher an einen Proxyserver übergeben, der in einem GitHub-eigenen Microsoft Azure-Mandanten gehostet wird. Der Proxy filtert Datenverkehr und blockiert damit Versuche, den Prompt zu hacken oder das System zu manipulieren, um Details darüber anzuzeigen, wie das Modell Codevorschläge generiert.

3. Toxizitätsfilter

Copilot wendet Inhaltsfiltermechanismen an, bevor es mit der Absichtsextraktion und Codegenerierung fortfährt, um sicherzustellen, dass der generierte Code und die generierten Antworten Folgendes nicht enthalten oder begünstigen:

  • Hassrede und unangemessene Inhalte: Copilot verwendet Algorithmen, um die Aufnahme von Hassreden, anstößiger Sprache oder unangemessenen Inhalten, die verletzend oder anstößig sein könnten, zu erkennen und zu verhindern.
  • Personenbezogene Daten: Copilot filtert aktiv personenbezogene Daten aus, z. B. Namen, Adressen oder Identifikationsnummern, aus, um den Datenschutz und die Datensicherheit der Benutzer*innen zu gewährleisten.

4. Generieren von Code mit LLM

Schließlich wird der gefilterte und analysierte Prompt an LLMs übergeben, die entsprechende Codevorschläge generieren. Diese Vorschläge basieren darauf, wie Copilot den Prompt und den umgebenden Kontext versteht, um sicherzustellen, dass der generierte Code relevant, funktionsfähig und an projektspezifische Anforderungen ausgerichtet ist.

Ausgehender Fluss:

Abbildung des ausgehenden GitHub Copilot-Flusses

5. Nachverarbeitung und Überprüfung der Antwort

Sobald das Modell seine Antworten erzeugt hat, entfernt der Toxizitätsfilter alle erzeugten schädlichen oder anstößigen Inhalte. Der Proxyserver wendet dann eine letzte Prüfung an, um Codequalität, Sicherheit und ethische Standards sicherzustellen. Diese Prüfungen umfassen:

  • Codequalität: Antworten werden auf häufige Fehler oder Sicherheitsrisiken überprüft, z. B. Cross-Site Scripting (XSS) oder SQL-Einschleusung, um sicherzustellen, dass der generierte Code stabil und sicher ist.
  • Abgleichen von öffentlichem Code (optional): Optional können Administratoren einen Filter aktivieren, der verhindert, dass Copilot Vorschläge mit mehr als ca. 150 Zeichen zurückgibt, wenn sie dem vorhandenen öffentlichen Code auf GitHub stark ähneln. Dadurch wird verhindert, dass zufällige Übereinstimmungen als Originalinhalte vorgeschlagen werden. Wenn ein Teil der Antwort diese Prüfungen nicht besteht, wird er entweder abgeschnitten oder verworfen.

6. Vorschlagsübermittlung und Initiierung einer Feedbackschleife

Nur Antworten, die allen Filter entsprechen, werden an den Benutzer übermittelt. Copilot initiiert dann eine Feedbackschleife basierend auf Ihren Aktionen, um Folgendes zu erreichen:

  • Sein Wissen durch akzeptierte Vorschläge zu erweitern.
  • Durch Änderungen und Verwerfungen seiner Vorschläge lernen und sich verbessern.

7. Wiederholen für nachfolgende Prompts

Der Prozess wird wiederholt, wenn Sie weitere Eingabeaufforderungen bereitstellen, wobei Copilot Benutzeranforderungen kontinuierlich verarbeitet, deren Absicht versteht und Code als Reaktion generiert. Nach und nach wendet Copilot die kumulativen Feedback- und Interaktionsdaten an, einschließlich Kontextdetails, um sein Verständnis von Benutzerabsichten zu verbessern und seine Codegenerierungsfunktionen zu verfeinern.