IntelliCode-Teamvervollständigungen: KI-gestützte IntelliSense auf der Grundlage Ihres Codes

Verwenden Sie IntelliCode-Teammodelle für Vervollständigungen, um KI-gestützte IntelliSense-Empfehlungen auf Basis Ihrer C#- und C++-Codebasis zu erhalten. Teamvervollständigungen sind nützlich, wenn Sie mit ihren eigenen Typen oder domänenspezifischen Bibliotheken arbeiten, die häufig nicht in Open-Source-Code verwendet werden. Dies ist der Fall, weil die Empfehlungen auf Grundlage von Basismodellen von IntelliCode allein auf Mustern basieren, die aus Open-Source-Repositorys auf GitHub abgeleitet werden. Wenn Sie mit Code arbeiten, der nicht in diesen Repositorys enthalten ist, sind diese Empfehlungen für Sie weniger nützlich. C#- und C++-Benutzer in Visual Studio können nun IntelliCode verwenden, um Muster aus ihrem Code zu erlernen, um Empfehlungen zu geben, die auf Ihren Code abgestimmt sind.

Bei einem IntelliCode-Modell handelt es sich um eine Kapselung mehrerer Regeln, mit denen einige nützliche Informationen (z. B. Empfehlungen in der IntelliSense-Liste) auf Basis einer Codeanalyse vorhergesagt werden können. IntelliCode erstellt Teammodelle mit denselben Lernprozessen wie denen für die IntelliCode-Basismodelle. Erstere werden allerdings mit Ihrem eigenen Code trainiert. Je mehr Code Sie für Ihre typischen Nutzungsmuster bereitstellen, desto nützlicher sind die Empfehlungen Ihres Teammodells.

Um das Teammodell zu erstellen, extrahieren wir eine Zusammenfassungsdatei mit Metadaten zu ihren Typen und deren Verwendungen und laden sie sicher in unseren Dienst hochladen.

Hinweise zur Anwendung von Modellen

IntelliCode erstellt Empfehlungen durch das Zusammenführen mehrerer Modelle. Dazu gehören folgende:

  • das Basismodell für die verwendete Sprache, das mithilfe Tausender öffentlicher GitHub-Repositorys trainiert wird
  • Alle Teammodelle, die Sie trainiert haben
  • Alle Teammodelle, die dem Git-Repository zugeordnet sind, in dem Sie arbeiten

Sie müssen nicht festlegen, welche Modelle auf welche Projektmappe oder Codebasis angewendet werden, da IntelliCode diese Aufgabe für Sie übernimmt.

Typen von Teamvervollständigungsmodellen

Es gibt zwei Möglichkeiten, Teamvervollständigungsmodelle abzurufen:

  1. Dem Repository zugeordnete Modelle sind an das Repository gebunden: Alle Benutzer, die das Repository klonen und bearbeiten können, erhalten automatischen Zugriff auf das Modell. Um ein dem Repository zugeordnetes Modell zu erstellen, muss sich Ihre Codebasis unter der Git-Quellcodeverwaltung befinden und mithilfe unserer Azure Pipelines-Aufgabe oder unserer GitHub-Aktion aus Ihrem CI-Build auf einen Remotecomputer gepusht werden.

  2. Dem Computer zugeordnete Modelle sind nur auf dem Computer verfügbar, auf dem sie trainiert wurden.

Einem Repository zugeordnete Teammodelle

Dem Repository zugeordneten Teammodelle sind für Benutzer verfügbar, die diese entweder mit Azure Pipelines oder GitHub Actions trainieren.

  • Hier erfahren Sie, wie Sie Ihren CI-Workflow (z. B. YML-Datei) konfigurieren und automatisieren, um Teamvervollständigungen mithilfe von GitHub Actions zu trainieren.
  • Lernen Sie hier, wie Sie Ihre Azure DevOps-Pipeline konfigurieren, um Teamvervollständigungen zu trainieren.

Freigeben Ihrer einem Repository zugeordneten Modelle

Einem Repository zugeordnete Modelle werden automatisch für andere freigegeben, die in derselben Codebasis arbeiten, solange Benutzer den automatischen Erwerb von Teammodellen in Visual Studio aktiviert haben. Aktivieren Sie den automatischen Erwerb, indem Sie zu Tools > Optionen > IntelliCode > Erwerben von Teammodellen für Vervollständigung wechseln.

Wenn jemand die Codebasis klont und öffnet, an der das Modell trainiert wurde, werden alle mit den konfigurierten Git-Remoterepositorys verbundenen Modelle heruntergeladen und aktiviert. Wenn Sie an einem Fork der Codebasis arbeiten, fügen Sie einfach die Upstreamcodebasis als Remoterepository hinzu, um das Modell zu erhalten.

Der Zugriff auf das Repository ist der Zugriff auf das Modell. Beim Training sammeln wir einige Informationen über den ausgecheckten Commit. Jede Person, die dieses Modell anfordert, muss in ihrem Repository denselben Commit haben und die gleichen Informationen produzieren können, die beim Training gesammelt wurden, um das Teammodell zu erhalten.

Hinweis

Die Möglichkeit, Ihre benutzerzugewiesenen Teamvervollständigungsmodelle über einen Freigabelink zu teilen, der in einigen Vorschaureleases von Teamvervollständigungen verfügbar ist, ist als veraltet markiert.

Löschen Ihres Modells

Sie haben die Möglichkeit, Modelle aus Ihrem Konto zu entfernen, damit sie nicht mehr verwendet werden können.

Löschen eines benutzerzugeordneten Modells, das in Visual Studio erstellt wurde

Deaktivieren Sie einfach das Kontrollkästchen, mit dem das Modelltraining akzeptiert wird, während Ihre Lösung in Visual Studio geöffnet ist. Klicken Sie hierzu auf Ansicht > Weitere Fenster > IntelliCode-Seite. Das Modell wird daraufhin gelöscht.

Löschen eines einem Repository angefügten Modells, das mit Azure DevOps oder einem GitHub-CI-Workflow erstellt wurde

Entfernen Sie einfach die Trainingsaufgabe aus Ihrer Pipeline. Das zugehörige Modell wird innerhalb von 30 Tagen entfernt, wenn es nicht trainiert wird.

Dem Computer zugeordnete Modelle

Erstellen und erneutes Trainieren des Modells

Trainieren eines dem Computer zugeordneten Modells:

  1. Öffnen Sie das Projekt oder die Projektmappe in Visual Studio.
  2. Öffnen Sie die IntelliCode-Seite über Ansicht > Weitere Fenster > IntelliCode.
  3. Lesen Sie die Lizenzbedingungen, und aktivieren Sie das zugehörige Kontrollkästchen unten auf der Seite. Ein dem Computer zugeordnetes Modell wird automatisch trainiert.

Hinweis

Sie müssen die obigen Schritte für jede Lösung wiederholen, die Sie trainieren möchten.

Visual Studio trainiert die dem Computer zugeordneten Teamvervollständigungsmodelle in regelmäßigen Abständen.

Trainieren eines Modells mithilfe einer öffentlichen Codebasis

Bevor Sie Ihr Modell mit Ihrem eigenen Code trainieren, sollten Sie ein Vervollständigungsmodell auf Grundlage einer öffentlichen Codebasis erstellen. Dabei sehen Sie, wie sich das Vervollständigungsmodell auf IntelliSense auswirkt. Wenn Sie Bedenken bezüglich der Art der Daten haben, die IntelliSense sammelt, können Sie die extrahierten Daten überprüfen. Für das Training sind einige interessante Beispiele verfügbar:

  • Azure ConferenceBuddy

    Forken Sie das Repository auf Ihr persönliches Konto, und öffnen Sie die Projektmappe ConferenceBuddy.sln. Überprüfen Sie anschließend mit dem Buildvorgang, ob alles funktioniert, und trainieren Sie danach das Modell. Für Instanzen der AskWhoTask-Klasse werden einige hilfreiche Vervollständigungen angezeigt.

  • RSSReader für Windows

    Forken Sie das Repository auf Ihr persönliches Konto, und öffnen Sie die Projektmappe RssReader.sln. Überprüfen Sie anschließend mit dem Buildvorgang, ob alles funktioniert, und trainieren Sie danach das Modell. Für Instanzen der MainViewModel-Klasse werden einige hilfreiche Vervollständigungen angezeigt.

Datenschutz

Um das Teammodell zu erstellen, extrahieren wir eine Zusammenfassungsdatei mit Metadaten zu ihren Typen und deren Verwendungen. Beispielsweise enthält die Zusammenfassungsdatei die Namen von Klassen und Methoden sowie die Häufigkeit, mit der diese in unterschiedlichen Situationen aufgerufen werden. IntelliCode erfasst keine Tastaturanschläge und extrahiert auch keine vollständigen Ausdrücke, Anweisungen oder Literalwerte wie Zeichenfolgen aus Ihrem Code.

Die extrahierten Daten werden über HTTPS an den IntelliCode-Dienst übertragen. Dieser verwendet dann Machine Learning-Algorithmen, um ein Modell für Ihren Code zu trainieren. Das Modell wird anschließend auf Ihren Computer übertragen und dort mit dem Basismodell zusammengeführt.

Anzeigen der extrahierte Daten

So untersuchen Sie den Inhalt der extrahierten Daten:

  1. Öffnen Sie das Verzeichnis extrahierter Daten:

    • Für einem Repository zugeordnete Modelle: „%temp%\Intellicode_Extraction_2019-10-23—234524“
    • Für einem Computer zugeordnete Modelle: %TEMP%\Visual Studio IntelliCode
  2. Sortieren Sie die Elemente in der Ordneransicht nach Datum und in absteigender Reihenfolge, um die zuletzt verwendete Trainingssitzung zu finden und zu öffnen. Der Ordner für diese Trainingssitzung befindet sich nun ganz oben.

    Tipp

    Im Verzeichnis %TEMP%\Visual Studio IntelliCode ist pro Trainingssitzung ein Ordner vorhanden, der über einen zufälligen Namen verfügt.

Dieser Ordner enthält alle Dateien, die nach Abschluss der Extraktion an Microsoft gesendet werden. Im Unterordner UsageOutput befindet sich eine JSON-Datei mit den Informationen, die IntelliCode aus Ihrem Code extrahiert, um das Modell zu trainieren. Die Datei UsageOutput_ErrorStats enthält alle Fehler, die beim Erstellen der extrahierten Datei aufgetreten sind, und kann Microsoft beim Debuggen von Problemen unterstützen.

Verzeichnis für IntelliCode-Modelltraining

Wenn Sie sich die extrahierten Daten für eine andere Codebasis ansehen möchten, bevor Sie ein Modell mit eigenem Code trainieren, können Sie ein Modell auf Grundlage einer öffentlichen Codebasis trainieren.

Vorgehensweise von Microsoft zum Schützen von Daten

Sämtliche Daten, die Sie an den IntelliCode-Dienst senden und von diesem empfangen, werden über HTTPS übertragen. Sie müssen sich bei Visual Studio anmelden, um eine Verbindung mit dem Dienst herstellen zu können.

Nur folgende Modelle können abgerufen werden:

  • Einem Computer zugeordnete Modelle: Vom Computer, der die extrahierten Daten für das Training übermittelt hat
  • Einem Repository zugeordnete Modelle: Von Benutzern, die belegen können, dass sie Zugriff auf das Repository für einem Repository zugeordnete Modelle besitzen

Ihr Modell und die Rückschlüsse aus Ihrem Code stehen daher nur Ihnen und ausgewählten Projektmitarbeitern zur Verfügung.

Wenn Microsoft Problembehandlungen durchführen muss, erhalten autorisierte Servicemitarbeiter von Microsoft zu Diagnosezwecken möglicherweise Zugriff auf Ihre Modelle und extrahierten Daten.

Siehe auch