Kapitel 4. GitHub Copilot

Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com

In diesem Kapitel werden wir uns den GitHub Copilot ansehen, den ich kurz Copilot nenne. Es ist der Platzhirsch in der Welt der KI-Codierassistenten. Manche nennen ihn sogar die "Killerapplikation" der generativen KI. Das liegt vor allem an seinen fortschrittlichen Funktionen zum Vorschlagen, Erstellen und Erklären von Code, die die Produktivität von Entwicklern erheblich steigern. Durch das Verstehen und Vorhersagen von Codierungsmustern auf der Grundlage des Kontexts spart er nicht nur Zeit, sondern hilft auch dabei, effizienteren und fehlerfreien Code zu schreiben.

In diesem Kapitel gehen wir auf die Feinheiten von Copilot ein: wie viel es kostet, wie du es einrichtest und welche coolen Funktionen es bietet. Und wir werden auch die Nachteile nicht verschweigen. Außerdem gebe ich dir ein paar praktische Tipps, damit du das Beste aus Copilot herausholen kannst. Das ist aber noch nicht alles: Wir werden auch sehen, wie Copilot mit anderen Unternehmen im Rahmen des Copilot-Partnerprogramms zusammenarbeitet. In diesem Kapitel geht es darum, den vollen Umfang der Möglichkeiten von Copilot zu sehen.

GitHub Copilot

Im Juni 2021 stellte Microsoft den GitHub Copilot vor. Der CEO von GitHub, Nat Friedman, beschrieb ihn in einem Blogbeitrag als "KI-Paarprogrammierer", der die Arbeit von Entwickler/innen beschleunigen soll, indem er sie bei der effizienten Erledigung von Aufgaben unterstützt.

Copilot ist das Ergebnis einer Partnerschaft zwischen Microsoft und OpenAI. Zunächst wurde ein umfangreiches Sprachmodell namens Codex verwendet, eine Variante von GPT-3, die auf die Programmierung zugeschnitten ist. Microsoft verbesserte die Fähigkeiten dieses Sprachmodells durch die Integration eines neuen Ansatzes, der als FIM (Fill-in-the-Middle ) bekannt ist und den Code-Kontext besser versteht. Dadurch wurde die Qualität der Code-Vorschläge verbessert und die Antwortzeiten verkürzt. Dank des fortschrittlicheren GPT-3.5 Turbo führte diese Verbesserung zu einem deutlichen Anstieg der Akzeptanzrate von Codevorschlägen. Um die Sicherheit zu verbessern, wurde ein KI-System integriert, das riskante Codemuster sofort blockiert und sich auf Schwachstellen wie hartkodierte Anmeldeinformationen und SQL-Injections konzentriert.

Preise und Versionen

Du kannst Copilot 30 Tage lang kostenlos testen:. Nach diesem Tag hast du drei Möglichkeiten.

Copilot für Einzelpersonen

Dieser Plan kostet $10 pro Monat oder $100 für ein Jahresabonnement. Es bietet Funktionen wie mehrzeilige Funktionsvorschläge, die deinen Arbeitsablauf beim Codieren vereinfachen. Besonders hervorzuheben ist die Fähigkeit, die Testgenerierung zu beschleunigen, ein wichtiger Faktor, um sicherzustellen, dass dein Code zuverlässig und solide ist. Außerdem gibt es eine Funktion, die anfällige Codierungsmuster herausfiltert. Außerdem werden Vorschläge verhindert, die den öffentlichen Code widerspiegeln, um sicherzustellen, dass das, was du erstellst, einzigartig und originell ist.

Copilot für Unternehmen

Dieses Paket ist umfangreicher und kostet $19 pro Nutzer und Monat. Es enthält alles aus dem Copilot for Individuals Plan und einige zusätzliche Vorteile für Unternehmen. Es vereinfacht die Lizenzverwaltung, was für Unternehmen ein großes Plus bei der Verwaltung ihrer Abonnements und Zugriffe ist. Außerdem gibt es eine Funktion zur Verwaltung von Richtlinien im gesamten Unternehmen, die für eine einheitliche Verwaltung und Konsistenz aller Projekte sorgt. Besonders hervorzuheben sind die erstklassigen Datenschutzvorkehrungen, die für die Sicherheit sensibler Geschäftsdaten unerlässlich sind. Darüber hinaus unterstützt es Unternehmens-Proxys, die eine sichere und reibungslose Konnektivität im gesamten Unternehmensnetzwerk garantieren.

GitHub Copilot Enterprise

Der Preis beträgt 39$ pro Monat und Nutzer. Das Hauptmerkmal des Enterprise-Tarifs ist die Möglichkeit, das System auf internen Codebasen zu trainieren. Die Enterprise-Version steigert die Effizienz von Entwicklern, da das Tool nun noch genauere Code-Vorschläge macht. Es hilft dabei, bessere Praktiken einzuführen und die Sicherheitsregeln einzuhalten. Es ist auf die Art und Weise zugeschnitten, wie Entwickler intern codieren, und auf ihre bevorzugten APIs, Frameworks und Pakete.

Ein weiterer Vorteil der Enterprise-Version ist, dass du sie auf klassischen Sprachen wie COBOL und Fortran trainieren kannst. Allzweck-LLMs sind bei diesen Sprachen möglicherweise nicht so effektiv, weil es an Trainingsdaten aus öffentlichen Repositories mangelt. Natürlich haben sie keine Ahnung von proprietären Sprachen, die für dein Unternehmen spezifisch sind.

Das GitHub-System stärkt auch das Modell für die Enterprise Edition, indem es die Repositories eines Unternehmens kontinuierlich durchsucht. So werden z.B. die letzten Pull Requests und Merges sowie Daumen-hoch- und Daumen-runter-Bewertungen ausgewertet. All dies hilft dabei, die neuesten Methoden und Strategien eines Unternehmens zu erkennen.

Benutzerdefinierte Modelle helfen dabei, das Know-how in der Organisation zu verbreiten. Die KI nimmt das subtile Wissen, das im Code versteckt ist, auf und gibt es weiter. Durch ständiges Training hält die KI mit der sich verändernden Codebasis Schritt, sodass ihre Hilfe mit der Zeit immer präziser wird. Dennoch ist es für Unternehmen sehr wichtig, die Risiken für den Datenschutz und das geistige Eigentum zu berücksichtigen, die mit der Integration dieser KI-Tools in den Entwicklungsprozess verbunden sind.

Hinweis

Gartners Untersuchungen zeigen, dass im Jahr 2023 weniger als 10 % der großen Unternehmen mit dem Einsatz von KI-gestützten Programmierwerkzeugen begonnen haben. Dieses Zögern ist zum Teil auf Bedenken hinsichtlich Sicherheit und Präzision zurückzuführen. Mit den rasanten Fortschritten in der Technologie ist jedoch zu erwarten, dass immer mehr Unternehmen diese Tools in naher Zukunft einsetzen werden. Kurz gesagt, die Vorteile, die sie bieten, sind einfach zu bedeutend, um sie zu übersehen.

Anwendungsfall: Programmierung von Hardware

Eine interessante Fallstudie von kundenspezifischen Modellen betrifft Advanced Micro Devices (AMD). Das 1969 gegründete Unternehmen ist ein Pionier der CPUs (Central Processing Units). Heute ist das Unternehmen führend bei Halbleitern für Rechenzentren, eingebettete Systeme, Spieleplattformen und PCs.

Bevor wir einsteigen, sollten wir uns erst einmal mit den Grundlagen der Entwicklung für Hardwaresysteme vertraut machen. Das ist ein ganz anderes Spiel als die Entwicklung von Software für eine Web-App. Die größte Herausforderung ist, dass die Entwickler/innen das Hardwaresystem in- und auswendig kennen müssen. Im Gegensatz zu normaler Software, die auf universellen Computern funktioniert, spricht Firmware direkt mit der Hardware. Das erfordert eine sehr viel höhere Präzision und Kompatibilität.

Dieses Maß an Präzision ist entscheidend, denn Fehler in der Firmware-Entwicklung können sehr teure Folgen haben. Ein einziger Fehler kann einen finanziellen Schaden in Millionenhöhe bedeuten. Und es geht nicht nur ums Geld - auch die Zeit ist ein wichtiger Faktor. Um ein Firmware-Problem zu beheben, muss in der Regel der Herstellungsprozess überarbeitet werden, und das kann den Zeitplan um Monate verlängern. Eine solche Verzögerung wirkt sich nicht nur auf den Veröffentlichungszeitplan aus, sondern auch darauf, wie wettbewerbsfähig das Produkt auf dem Markt ist.

Es ist klar, dass die in der agilen Softwareentwicklung übliche Denkweise "schnell handeln und Dinge kaputt machen" in diesem Umfeld nicht funktioniert. Die Risiken sind zu groß für diesen Ansatz. Deshalb müssen Firmware-Entwickler/innen viel Zeit und Mühe in eine detaillierte Planung und umfangreiche Tests investieren. Dieser sorgfältige Ansatz stellt sicher, dass die Firmware so solide und fehlerfrei wie möglich ist, bevor sie mit der Hardware gekoppelt wird.

Als AMD im Jahr 2023 einen Blick auf Copilot warf, wurden die Anforderungen sehr hoch angesetzt, und es herrschte verständlicherweise eine gewisse Skepsis. In einem Pilotprojekt entwickelte AMD eine eigene Version von Copilot für verschiedene Hardwarebeschreibungssprachen (HDLs) wie Verilog und SystemVerilog. HDLs sind spezielle Programmiersprachen, die darauf zugeschnitten sind, die Architektur, das Design und die Funktion elektronischer Schaltkreise zu beschreiben, vor allem die der digitalen Logik. Sie sind entscheidend für die Modellierung und Simulation elektronischer Systeme auf verschiedenen Abstraktionsebenen.

Die Ergebnisse des Pilotprojekts fielen viel besser aus als erwartet. Überraschenderweise entsprach der Stil des von Copilot generierten Codes sogar eher den Standards von AMD als dem, was die eigenen Programmierer produzierten. Die Verbesserung war so signifikant, dass einige der Programmierer sogar von Vim, einem stark anpassbaren Texteditor, zu Visual Studio Code als IDE wechselten.

Anwendungsfall: Shopify

Eine weitere interessante Fallstudie ist Shopify. Dieses Unternehmen betreibt eine Plattform, auf der Kunden E-Commerce-Websites einrichten können. Shopify hat einen Marktanteil von etwa 10 % in den Vereinigten Staaten und 6 % in Europa.

Dies hat zweifellos einen Bedarf an einer massiven Infrastruktur geschaffen. Man bedenke, dass es rund 300 öffentliche und etwa 5.000 private Repositories gibt. Außerdem nimmt Shopify jeden Tag etwa 1.500 Änderungen an seinem Code vor.

Shopify war eines der ersten Unternehmen, das auf den Copilot-Zug aufgesprungen ist, und es hat die Produktivität von Entwicklern deutlich gesteigert. Derzeit nutzen fast 2.000 Shopify-Entwickler das Tool. Und jetzt kommt das Beste: 70 % von ihnen sagen, dass es hilfreich ist, und 75 % nutzen es sehr häufig. Etwa 26 % der Code-Vorschläge von Copilot werden angenommen.

Sicher, es gibt ein paar Funktionen, die sich nicht durchgesetzt haben, wie die Integration mit der Befehlszeilenschnittstelle (CLI). Trotzdem nutzen viele Entwickler die Code-Vervollständigung und den Chat täglich.

Hier sind einige interessante Erkenntnisse:

Wert der Code-Vorschläge

Selbst wenn ein Entwickler einen Vorschlag nicht nutzt, ist das kein Totalverlust. Jede Anregung kann Ideen für noch besseren Code liefern.

Rate der Annahme

Die Nutzung nimmt mit der Zeit zu, was nicht weiter verwunderlich ist. Es braucht Zeit, um die täglichen Arbeitsabläufe zu optimieren und sich an neue Funktionen zu gewöhnen. Auch bei Copilot gibt es eine Lernkurve.

Akzeptanz durch erfahrene Entwickler

In den ersten Tagen der Einführung von Copilot waren die erfahreneren Entwickler nicht besonders begeistert von der Anwendung. Sie betrachteten es eher als Spielzeug denn als ernstzunehmendes Werkzeug. Aber mit der Zeit, als sie sahen, dass andere Entwickler/innen echte Ergebnisse erzielten, begannen sie sich dafür zu erwärmen.

Verbesserung des Lernens

Shopify hat festgestellt, dass Copilot gut darin ist, Menschen dazu zu bewegen, eine neue Sprache oder ein neues Framework auszuprobieren. Zum Beispiel gab es einen deutlichen Anstieg bei der Einführung von Rust.

Etwa eine Million Zeilen der Shopify-Codebasis wurden mit diesem Tool geschrieben, was zeigt, dass Copilot für dieses Unternehmen eine sehr große Bedeutung hat.

Anwendungsfall: Accenture

Accenture ist ein großes Dienstleistungsunternehmen, das seine Kunden dabei unterstützt, ihre Abläufe und ihr Wachstum durch innovative Technologien und Systeme zu verbessern. Das Unternehmen hat über 733.000 Mitarbeiter in mehr als 120 Ländern.

Im Jahr 2023 testete Accenture Copilot mit 450 seiner internen Entwickler. Das Unternehmen gab keine spezifischen Aufgaben oder Ziele vor. Stattdessen forderten die Manager alle auf, ihrer Arbeit wie gewohnt nachzugehen.

Der Versuch mit Copilot bei Accenture dauerte sechs Monate. Und was ist passiert? Bei der Programmierung wurden die Vorschläge von Copilot zu 35 % angenommen, und 88 % der Änderungen wurden auch nach Codeüberprüfungen beibehalten. Auch die Produktivität wurde deutlich gesteigert. Die Zahl der Pull Requests stieg um 50 % und die Merge-Rate um 15 %. Auch die Effizienz machte einen großen Sprung nach vorne: 50% mehr Builds und eine 45%ige Steigerung der Erfolgsquote. Und die Entwickler? Sie waren sehr zufrieden damit: Satte 96 % waren der Meinung, dass sie vom ersten Tag an erfolgreich waren.

Als Accenture diese Ergebnisse sah, entschied es sich, Copilot weltweit bei seinen 50.000 Entwicklern einzuführen.

Sicherheit

Gartner hat mehr als 2.000 Chief Information Officers (CIOs) befragt und herausgefunden, dass 66% von ihnen planen, im Jahr 2023 die meisten Ressourcen in Cyber- und Informationssicherheit zu investieren. Dieser Trend hält schon seit Jahren an.

In einer Zeit, in der die Bedrohungen aus dem Internet immer komplexer und weit verbreiteter werden, kann ein Sicherheitsverstoß große finanzielle Verluste, Rufschädigung, rechtliche Probleme und Betriebsunterbrechungen bedeuten. Da die Datenschutzbestimmungen immer strenger werden, müssen CIOs auf die Einhaltung der Vorschriften achten, um Geldstrafen zu vermeiden und das Vertrauen der Kunden zu erhalten.

Deshalb ist die Sicherheit für GitHub ein wichtiger Schwerpunkt des Copilot-Programms. GitHub hat ein auf LLMs basierendes System entwickelt, das unsichere Codierungsmuster sofort erkennt und behebt, wenn sie auftreten.

Dann gibt es noch die erweiterten Sicherheitsfunktionen von GitHub, die von Copilot unterstützt werden. Hier sind die wichtigsten davon:

Code scannen

Advanced Security sucht in Echtzeit nach Sicherheitsschwachstellen und Programmierfehlern.

Heimliches Scannen

Das Produkt kann Geheimnisse wie Schlüssel und Token, die in private Repositories eingecheckt wurden, aufspüren.

Überprüfung der Abhängigkeiten

Dies zeigt die Auswirkungen von Änderungen der Abhängigkeiten. Sie liefert auch Details zu Schwachstellen, wenn du einen Pull Request zusammenführst.

Hinweis

Für Schüler/innen, Lehrkräfte und Betreuer/innen beliebter Open-Source-Projekte ist Copilot kostenlos, aber es gibt einen Verifizierungsprozess.

Erste Schritte

Um mit Copilot zu beginnen, musst du zunächst ein GitHub-Konto erstellen. GitHub ist ein Online-Dienst, der Versionskontrolle und gemeinschaftliche Softwareentwicklung unterstützt. Er basiert auf Git, einem Tool, das Funktionen zur Codeüberprüfung und zum Projektmanagement bietet.

Nachdem du dein Konto eingerichtet hast, klicke auf dein Profilfoto oben rechts auf dem Bildschirm. Du siehst ein Dropdown-Menü, wie in Abbildung 4-1 dargestellt.

Wähle Copilot und klicke dann auf GitHub Copilot aktivieren. Du kannst die Art des Plans auswählen und dann auf Weiter klicken. Du gibst deine Zahlungsdaten an, vorausgesetzt, du bist nicht für ein kostenloses Konto qualifiziert.

Abbildung 4-1. Beginn der Aktivierung von Copilot über das Dropdown-Menü des Profilfotos

Codespaces und Visual Studio Code

Es gibt zwei Möglichkeiten, Copilot zu nutzen. Eine Möglichkeit ist der Zugriff über Codespaces , eine cloudbasierte Entwicklungsumgebung, die auf Visual Studio Code (VS Code) läuft und direkt auf https://github.com verfügbar ist .

Alternativ kannst du dich für die Copilot-Erweiterung entscheiden, wenn du die Desktop-Version von Visual Studio Code verwendest. In diesem Buch werden wir uns auf die Verwendung der VS Code-Erweiterung konzentrieren.

Die IDE selbst ist kostenlos. Abbildung 4-2 zeigt den Hauptbildschirm von VS Code. Du kannst dieses System auf verschiedenen Plattformen ausführen, darunter Windows (Versionen 7, 8, 10 und 11), macOS und verschiedene Linux-Distributionen wie Ubuntu, Debian, Fedora und andere.

Abbildung 4-2. Der Hauptbildschirm von Visual Studio Code enthält eine Aktivitätsleiste und einen Bereich zum Generieren und Anzeigen von Code

Auf der linken Seite befindet sich die Aktivitätsleiste, die aus einem Stapel von Symbolen besteht. Du kannst sie zum Laden von Dateien und Ordnern verwenden. Du kannst auch das fünfte Symbol, eine Gruppe von Quadraten, auswählen, um zum Bereich für die Installation von Erweiterungen zu gelangen(Abbildung 4-3).

Wenn du "GitHub Copilot" in das Suchfeld eingibst, siehst du eine Liste mit Erweiterungen. Wähle die oberste aus und klicke auf Installieren.

Schau dann unten rechts auf dem Bildschirm nach. Wenn du das Copilot-Symbol siehst, dann ist der Dienst verfügbar.

Abbildung 4-3. Du kannst Erweiterungen in VS Code installieren, z. B. für Copilot

In der Mitte des Bildschirms siehst du den Code, um "Hallo, Copilot!" zu drucken. Dies wurde mit Hilfe der folgenden Eingabeaufforderung erstellt, die Copilot in Code umgewandelt hat:

Eingabeaufforderung: # Schreibe ein "Hallo, Copilot!"-Programm

Das Zeichen # steht für einen Kommentar. Dies ist eine der Möglichkeiten, Copilot anzuweisen, Code zu erzeugen.

Beachte, dass der Code in Python geschrieben ist. Warum ist das so? Die Erweiterung der Datei ist py. Copilot verwendet die Dateierweiterung, um die zu verwendende Sprache zu bestimmen.

Oben rechts auf dem Bildschirm befindet sich ein Symbol zum Ausführen des Programms. Klicke darauf und VS Code startet das Terminal. Du siehst dann die ausgedruckte Nachricht.

Vorschläge

Die ersten Schritte mit Copilot in VS Code sind ganz einfach. Sobald du mit der Eingabe deines Codes beginnst, bietet dir das Tool Code-Vorschläge und generiert Code-Snippets basierend auf deinen Eingaben.

Angenommen, du gibst den Header für eine Funktion in Python ein:

def find_factorial(number):

Copilot schlägt sofort einen vollständigen Funktionskörper vor, wie du in Abbildung 4-4 sehen kannst. Dieser generierte Kode wird Geistertext genannt und ist grau unterlegt.

Abbildung 4-4. Copilot schlägt Code vor, wenn ein Benutzer einen Funktionskopf schreibt

Bedenke, dass der Code auf deinem Rechner etwas anders aussehen könnte. Das ist normal, da das zugrunde liegende LLM mit einer komplexen Reihe von Wahrscheinlichkeiten arbeitet.

Aber jetzt kommt's: GitHub versteht, dass du versuchst, eine Funktion zu schreiben, die eine Fakultät anhand eines Parameters berechnet. Also schlägt es dir die If-Then-Struktur vor, die du brauchst, um das richtige Ergebnis zu erhalten.

Du kannst die Tabulatortaste drücken, um den Code-Vorschlag zu akzeptieren. Wenn es nicht das ist, wonach du suchst, drückst du einfach die Escape-Taste, um ihn zu überspringen.

Wenn du den Mauszeiger über den generierten Code bewegst, siehst du weitere Optionen, wie in Abbildung 4-5 dargestellt.

Abbildung 4-5. Wenn du mit dem Mauszeiger über den generierten Code fährst, werden oben rechts weitere Optionen angezeigt

Du kannst auf Akzeptieren klicken, um den Code-Vorschlag zu akzeptieren, genau wie beim Drücken der Tabulatortaste, oder du kannst Wort akzeptieren wählen, um jeweils ein Wort im Code auszuwählen. Wenn du auf die drei Punkte klickst, erhältst du ein Menü, mit dem du entweder eine Zeile akzeptieren oder immer die Symbolleiste anzeigen kannst.

Wenn du auf die 1/2 auf der linken Seite klickst, siehst du Alternativen für den generierten Code; in Abbildung 4-5 gibt es zwei Alternativen, von denen die erste gerade angezeigt wird. Wenn du auf ">" klickst, gelangst du zu Version 2. Wenn du dann auf "<" klickst, gelangst du zurück zu Version 1.

Du kannst auch die in Tabelle 4-1 aufgeführten Tastenkombinationen verwenden, um durch die Optionen zu navigieren.

Tabelle 4-1. Tastenkombinationen zum Blättern durch die Codevorschläge
OS Nächste Anregung Vorheriger Vorschlag
macOS Option (⌥) oder Alt+] Option (⌥) oder Alt+[
Windows Alt+] Alt+[
Linux Alt+] Alt+[

Wenn du Strg+Eingabe drückst, erstellt VS Code eine neue Registerkarte, auf der 10 alternative Lösungen angezeigt werden(Abbildung 4-6).

Abbildung 4-6. Wenn du Strg+Eingabe drückst, erscheint eine separate Registerkarte, die 10 verschiedene Versionen des Codes anzeigt

Um eine der Alternativen auszuwählen, klicke auf Lösung akzeptieren über dem Code. Andernfalls schließe die Registerkarte, um alle Alternativen abzulehnen.

Kommentare

In "Codespaces und Visual Studio Code" haben wir uns angesehen, wie du Copilot auffordern kannst, Code mit einem oder mehreren Kommentaren zu erzeugen. Dazu gibst du den Kommentar in der Syntax der Programmiersprache an, in der du arbeitest.

Aber du kannst noch mehr tun. Du kannst Kommentare verwenden, um mit dem System zu interagieren, als ob es sich um ChatGPT handeln würde. Schauen wir uns ein Beispiel an:

Eingabeaufforderung: # q: Was ist eine Klasse in der objektorientierten Programmierung?

Kopilot: # a: Eine Klasse ist ein Bauplan für die Erstellung von Objekten. Ein Objekt hat Eigenschaften und Methoden (Funktionen), die mit ihm verbunden sind. Fast alles in Python ist ein Objekt.

Du siehst, dass die Antwort auch im Kontext der Sprache steht, in der du kodierst. Angenommen, du fragst Copilot, wie das System funktioniert:

Eingabeaufforderung: # q: Wie lautet die Abkürzung, um einen Inline-Vorschlag zu akzeptieren?

Kopilot: # a: tab

Du kannst Copilot nach den Funktionen von VS Code fragen:

Eingabeaufforderung: # q: Wie lautet die Abkürzung für die Benutzereinstellungen in VS Code?

Kopilot: # a: Strg + ,

Du kannst ihn auch nach Tastenkombinationen für andere IDEs fragen:

Eingabeaufforderung: # q: Wie lautet die Abkürzung für eine neue Datei im Atom-Editor?

Kopilot: # a: ctrl + n

Beachte, dass Copilot weiß, dass ich ein Windows-System verwende und den Code auf dieser Plattform bereitstellt.

Chat

Copilot Chat ist wie ChatGPT, aber für deine Programmierumgebung. Es ist praktisch, um über Code zu chatten, z. B. wenn du die Syntax herausfinden, Fehler ausmerzen, Testfälle sortieren oder einfach nur verschiedene Programmierideen im Kopf haben willst. Es basiert auf OpenAIs GPT-4 und GPT-3.5 Turbo sowie auf einigen von Microsofts eigenen LLMs.

Du kannst direkt von https://github.com aus in den Chat einsteigen . Er eignet sich hervorragend, um Code zu analysieren, Pull Requests zu bearbeiten, die Dokumentation einzusehen oder einfach nur Fragen zum Programmieren zu stellen. Außerdem ist der Chat in den GitHub-Apps für iOS und Android verfügbar, sodass du ihn auch unterwegs nutzen kannst.

Aber jetzt wollen wir uns erst einmal darauf konzentrieren, wie das mit VS Code funktioniert. Das bedeutet, dass du eine neue Erweiterung hinzufügen musst. Schau einfach nach "GitHub Copilot Chat". Sobald du sie installiert hast, erscheint ein neues Symbol auf der linken Seite deines Bildschirms. Es hat zwei kleine Chatblasen, wie du in Abbildung 4-7 sehen kannst.

Abbildung 4-7. Ein Symbol für den Chat ist auf der linken Seite des Bildschirms erschienen

Oben im Chatfenster siehst du eine Gruppe von Symbolen in einem Menü. Das erste, bestehend aus horizontalen Linien und einem kleinen X, löscht alle deine Chat-Themen. Das ist wichtig, weil der Kontext so funktioniert. Wenn du eine Eingabeaufforderung eingibst, prüft der LLM den Gesprächsverlauf. Wenn dein Chat thematisch völlig aus dem Ruder gelaufen ist, könnte es sein, dass du weniger hilfreiche Antworten bekommst. Deshalb ist es eine gute Idee, jeden Chat auf ein bestimmtes Thema zu beschränken und für neue Themen neue Chats zu starten.

Das nächste Symbol, mit einer Person und einer Sprechblase, ermöglicht es dir, Feedback zum System zu senden. Dann gibt es noch den Verlaufsbutton, eine Uhr, die die vorherigen Threads anzeigt.

Wenn du auf die drei Punkte klickst, kannst du den Chat innerhalb des Editors benutzen, wo es viel mehr Platz für deine Chats gibt.

Unten in der Chatbox gibt es einen Eingabebereich, in dem du dem System eine Frage stellen kannst.

Das Chat-System hat zahlreiche Abkürzungen. Eine davon ist @workspace, die sich auf die in deinem Arbeitsbereich geöffneten Dateien bezieht. Wenn du zum Beispiel ein Taschenrechnerprogramm in Python hast, kannst du das eingeben:

Eingabeaufforderung: @Arbeitsbereich /erläutern

Abbildung 4-8 zeigt, dass Chat die Programmdatei analysiert und eine ausführliche Erklärung geliefert hat.

Abbildung 4-8. Der Chat kann verwendet werden, um Code zu erklären, zum Beispiel ein Taschenrechnerprogramm

Du kannst Chat bitten, nur einen Teil des Codes zu erklären. Markiere den Abschnitt, der dich interessiert, und drücke die rechte Maustaste. Daraufhin wird ein Menü angezeigt(Abbildung 4-9).

Abbildung 4-9. Fokussiere den Chat auf ein Segment deines Codes, indem du es markierst und die rechte Maustaste drückst

Wenn du Chat gesagt hast, dass er sich nur auf einen Teil des Codes konzentrieren soll, kannst du nicht nur den Code erklären, sondern ihn auch korrigieren, Dokumentation erstellen oder Tests erstellen.

Eine weitere hilfreiche Abkürzung ist der Befehl /new. Damit wird ein Gerüst für ein neues Projekt oder Feature erstellt. Hier sind einige Beispiele:

Eingabeaufforderung: /new Erstelle ein Python-Skript, um Daten von einer Website zu scrapen

Eingabeaufforderung: /new Erstelle eine Java-Klasse für einen Schüler mit Feldern für Name, Alter und Note

Eingabeaufforderung: /new Erstelle eine einfache REST-API mit Flask

Eingabeaufforderung: /new Erstelle eine JavaScript-Funktion, um ein Array mit Zahlen in aufsteigender Reihenfolge zu sortieren

Eingabeaufforderung: /new Entwirf ein SQL-Datenbankschema für einen Blog, mit Tabellen für Benutzer, Beiträge und Kommentare

Als Antwort auf diese Eingabeaufforderungen zeigt das Chat-System die wichtigsten Schritte an und stellt dann die Code-Liste zur Verfügung. Du hast auch mehrere Optionen, was du damit machen kannst. Wie du in Abbildung 4-10 siehst, gibt es eine Menüleiste am oberen Rand.

Abbildung 4-10. Oben in der Codeliste für Chat gibt es Optionen, was mit dem Code geschehen soll

Mit dem ersten Symbol kopierst du den Code und mit dem nächsten fügst du ihn an der Stelle ein, an der sich der Cursor in der Datei befindet (du kannst auch Strg+Eingabe verwenden). Wenn du die drei Punkte auswählst, kannst du den Code in eine neue Datei oder in das Terminal einfügen.

Es gibt auch einen Shortcut, um ein neues Jupyter Notebook zu erstellen: /newNotebook. Du solltest angeben, was das Notizbuch tun soll. Hier sind einige Beispiele für Eingabeaufforderungen:

Eingabeaufforderung: /newNotebook Erstelle ein Notizbuch zur Visualisierung von Daten aus einer csv-Datei mit matplotlib

Eingabeaufforderung: /newNotebook Erstelle ein Notizbuch, um einen Datensatz für maschinelles Lernen vorzubereiten und zu bereinigen.

Eingabeaufforderung: /newNotebook Erstelle ein Notizbuch, um ein einfaches lineares Regressionsmodell mit scikit-learn zu implementieren

Eingabeaufforderung: /newNotebook Erstelle ein Notizbuch zur Analyse von Zeitreihendaten

Eingabeaufforderung: /newNotebook Erstelle ein Notizbuch, um Daten von einer Website abzugreifen und zu analysieren.

Chat bietet auch eine /terminal Verknüpfung. Du kannst Fragen zu Terminal- oder Kommandozeilenoperationen stellen oder Hilfe bekommen, z. B. beim Navigieren in Verzeichnissen, beim Ausführen von Skripten oder beim Installieren von Paketen. Hier sind einige Eingabeaufforderungen:

Eingabeaufforderung: /terminal Wie lautet der Befehl, um alle Umgebungsvariablen aufzulisten?

Eingabeaufforderung: /terminal Wie verwende ich grep, um bestimmten Text in mehreren Dateien zu finden?

Eingabeaufforderung: /terminal Wie kann ich den find-Befehl verwenden, um nach Dateien anhand ihrer Berechtigungen zu suchen?

Eingabeaufforderung: /terminal Wie kann ich die Ausgabe eines Befehls in eine Datei umleiten?

Eingabeaufforderung: /terminal Wie verwende ich awk, um Textdateien zu verarbeiten?

Dann gibt es noch @vscode, der als Agent bezeichnet wird. Mit ihm kannst du Fragen stellen oder Hilfe zu bestimmten Aspekten von VS Code erhalten, z. B. zu einer Funktion, Navigation, Konfiguration oder einer Erweiterung.

Hier sind einige Beispiele für Eingabeaufforderungen:

Eingabeaufforderung: @vscode Wie kann ich den Editor in mehrere Fenster aufteilen?

Eingabeaufforderung: @vscode Wie kann ich meine Tastaturkürzel anpassen?

Eingabeaufforderung: @vscode Wie richte ich einen Multi-Root-Arbeitsbereich ein?

Eingabeaufforderung: @vscode Wie konfiguriere ich die Aufgabenautomatisierung in VS Code?

Eingabeaufforderung: @vscode Wie kann ich Docker mit VS Code einrichten und verwenden?

Schließlich gibt es noch den Befehl /api. Hier kannst du Fragen zu Aspekten der API-Entwicklung oder -Nutzung stellen oder Hilfe bekommen, z. B. zur Erstellung, zum Testen oder zur Integration. Hier sind einige Beispiele:

Eingabeaufforderung: /api Wie stelle ich eine POST-Anfrage mit JSON-Daten in Node.js?

Eingabeaufforderung: /api Wie kann ich CORS-Probleme in einer Express.js-API behandeln?

Eingabeaufforderung: /api Wie authentifiziere ich einen Benutzer in einer Django REST API?

Eingabeaufforderung: /api Wie kann ich Ergebnisse in einer Rails-API paginieren?

Eingabeaufforderung: /api Wie kann ich eine API in ASP.NET Core versionieren?

Du kannst /api auch im Kontext von VS Code verwenden:

Eingabeaufforderung: @vscode /api Wie erstelle ich einen neuen Befehl in der VS Code-Erweiterung?

Eingabeaufforderung: @vscode /api Wie kann ich Einstellungen in der VS Code-Erweiterung lesen und schreiben?

Eingabeaufforderung: @vscode /api Wie erstelle ich ein neues Webview-Panel in der VS Code-Erweiterung?

Eingabeaufforderung: @vscode /api Wie kann ich mit dem Dateisystem in VS Code Extension interagieren?

Eingabeaufforderung: @vscode /api Wie füge ich ein neues Element zur Aktivitätsleiste in VS Code Extension hinzu?

Wenn du den Chat löschen möchtest, kannst du /clear verwenden.

Inline-Chat

Du kannst die Chat-Funktion innerhalb von für deine Codeliste nutzen. Du markierst den Code und drückst dann Strg+I für Windows oder Cmd+I für macOS. Daraufhin wird ein Popup-Fenster angezeigt, wie in Abbildung 4-11.

Abbildung 4-11. Die Inline-Chat-Funktion ermöglicht es dir, innerhalb deines Codes zu chatten

Laut GitHub ist der Inline-Chat zu einer beliebten Funktion geworden. Schließlich kann ein Entwickler so in seinem "Flow" bleiben.

Du kannst die Tastenkombinationen - die wir bereits beschrieben haben - verwenden, um Fragen zum Code zu stellen. Die Erklärung wird im Chatfenster angezeigt.

Beachte, dass neben dem Code ein orangefarbenes Symbol zu sehen ist. Wenn du darauf klickst, erhältst du ein paar Optionen, um den Code zu korrigieren, zu erklären oder neu zu schreiben, wie du in Abbildung 4-12 sehen kannst.

Abbildung 4-12. Wenn du auf das orangefarbene Glitzersymbol drückst, kannst du direkt mit dem Code interagieren

Probieren wir ein Beispiel mit dem Inline-Chat aus. Wir werden diese Eingabeaufforderung verwenden:

Eingabeaufforderung: Erstelle eine Funktion für eine Blasensortierung

Chat erstellt Code für diese Aufgabe. Aber nehmen wir an, wir wollen sehen, ob es eine schnellere Art der Sortierung gibt. Markiere die Funktion und führe Inline Chat aus. Abbildung 4-13 zeigt die Antwort.

Abbildung 4-13. Der Inline-Chat hat auf die Anfrage reagiert, eine schnellere Sortierung als die Bubble-Sortierung im oberen Bereich zu erstellen

Chat schlägt eine schnelle Sortierung vor und zeigt diese im "Diff-Modus" an. So kannst du die beiden Ansätze vergleichen und gegenüberstellen. Du kannst entweder den neuen Code in seiner Gesamtheit oder nur Teile davon akzeptieren .

Tabs öffnen

Wenn du an einem normalen Softwareentwicklungsprojekt arbeitest, ist deine IDE in der Regel vollgepackt mit einer Reihe von Dateien, von denen jede ihre eigene Rolle im Framework der App spielt. Nimm ein Webprojekt mit React als Beispiel. Du wirst .jsx- und .js-Dateien für die Komponenten sehen, zusammen mit HTML- und CSS-Dateien, ganz zu schweigen von .json und .env-Dateien.

Was bedeutet das für Copilot? Es ist eine große Hilfe. Copilot wird umso besser, je mehr er den Kontext deiner Arbeit versteht. Das bedeutet, dass er alles in der aktuellen Datei, an der du arbeitest, berücksichtigt. Was die anderen geöffneten Dateien angeht, so scannt der LLM nicht alle. Er konzentriert sich auf die Teile, die für deine Arbeit relevant sind. Außerdem sieht sich Copilot die anderen Dateien in deinem Projekt nicht an, wahrscheinlich um deine Privatsphäre zu schützen.

Kommandozeilen-Schnittstelle

Du kannst Copilot in deinem CLI verwenden. Die beiden Hauptfunktionen von Copilot bestehen darin, Befehle zu erklären und sie vorzuschlagen.

Dazu musst du das GitHub CLI installieren und dich dann bei deinem GitHub-Konto anmelden:

gh auth login

Als Nächstes wirst du Copilot installieren:

gh extension install github/gh-copilot

Du kannst die Erweiterung aktualisieren:

gh extension upgrade gh-copilot

Hier ist ein Beispiel dafür, wie du Copilot bittest, einen CLI-Befehl zu erklären:

Eingabeaufforderung: gh copilot explain xcopy

Abbildung 4-14 zeigt die Ausgabe.

Abbildung 4-14. Copilot erklärt den Befehl xcopy in einer CLI

Hier erfährst du, wie du Copilot dazu bringst, einen Befehl vorzuschlagen:

Eingabeaufforderung: gh copilot suggest

Als Nächstes fragt Copilot nach der Art des Befehls, für den du Hilfe benötigst - ein allgemeiner Shell-Befehl, ein gh-Befehl oder ein git-Befehl. Dann wird er dich fragen, was der Befehl tun soll. Hier ist ein Beispiel:

Eingabeaufforderung: Welche Befehle gibt es, um Umgebungsvariablen im System anzuzeigen und zu setzen?

Abbildung 4-15 zeigt die Antwort von Copilot, die Vorschläge für zu verwendende Befehle enthält. Du kannst diese kopieren oder Copilot um weitere Hilfe bitten, z. B. um den Befehl zu erklären oder ihn zu überarbeiten.

Abbildung 4-15. Die Vorschlagsfunktion von Copilot in der CLI bietet Befehle entsprechend der von dir angegebenen Parameter an

Copilot Partner Programm

Entwickler peppen ihre Apps oft auf und holen mehr aus ihren Daten heraus, indem sie Tools von Drittanbietern verwenden. Nimm zum Beispiel Splunk. Es ist ein beliebtes Tool für die Auswertung von Protokollen und Datenanalysen. Entwickler/innen nutzen Splunk, um ihre Anwendungen im Auge zu behalten und Probleme schnell zu beheben, dank seiner leistungsstarken Such- und Berichtsfunktionen. Dann gibt es noch New Relic, das dafür sorgt, dass deine App reibungslos läuft. New Relic gibt dir Einblicke und Diagnosen in Echtzeit und hilft dir, Leistungsprobleme zu erkennen und zu beheben, damit deine App besser läuft und du ein tolles Nutzererlebnis hast. Und nicht zu vergessen Datadog. Datadog ist ein wichtiger Akteur bei der Überwachung deiner Infrastruktur und deiner Anwendungen. Mit seiner breiten Palette an Integrationen ermöglicht Datadog es Entwicklern, Daten aus allen möglichen Quellen zu sammeln, zu mischen und darzustellen. So können sie intelligente Entscheidungen treffen, wie sie die Leistung steigern und Ressourcen verwalten können.

In Anbetracht der Bedeutung dieser Systeme hat GitHub das Copilot Partnerprogramm eingeführt. Es bietet eine wachsende Auswahl an beliebten Integrationsplattformen, die alle über Plugins zugänglich sind.

Einer der ersten Partner in diesem Programm ist DataStax, das Unternehmen hinter Astra DB, einer Vektordatenbank, die für die Entwicklung fortschrittlicher KI-Anwendungen entwickelt wurde. Dank eines Plug-ins können Entwickler die Erstellung von Datenbanken mit Chat beschleunigen. Chat bietet zum Beispiel Code-Vorschläge für die Struktur und die Metadaten einer Datenbank an, die sich an den Kodierungsstandards orientieren. So wird der Code übersichtlicher und ist leichter zu pflegen.

Um eine Frage zu stellen, verwende den @datastax-Tag. Einige Beispiele für Eingabeaufforderungen sind:

Eingabeaufforderung: Erzähl mir von meiner chat_prod Datenbank

Eingabeaufforderung: Erzähl mir etwas über das Schema einer Tabelle

Eingabeaufforderung: Schreibe eine SQL-Abfrage, um aus der Chat-Tabelle zu lesen

Hinweis

Mary-Brenda Akoda, eine KI-Forscherin mit einem Patent auf dem Gebiet der KI für die Augenheilkunde, ist eine begeisterte Nutzerin von Copilot. Sie sagt: "Einmal habe ich mit Copilot den Code für einen ganzen Modellentwicklungsprozess in weniger als einer Stunde geschrieben. Das war eine Aufgabe, die mich normalerweise viel mehr Zeit und Mühe gekostet hätte. Interessanterweise habe ich erst gemerkt, wie mühsam und langsam der Entwicklungsprozess sein kann, als ich eine Online-IDE verwenden musste, die Copilot nicht unterstützte."

Fazit

Copilot hat sich schnell zu einem unverzichtbaren KI-Tool für die Codierung entwickelt, das die Produktivität der Entwickler und die Codequalität erheblich verbessert. In diesem Kapitel hast du einen Überblick über die wichtigsten Funktionen von Copilot erhalten, darunter die Fähigkeit, komplexe Codeblöcke vorzuschlagen, die soliden Sicherheitsmaßnahmen, die beeindruckende Leistung und die einfache Verwendung in VS Code. Funktionen wie der Chat und der Inline-Chat in Copilot ermöglichen es dir, mit der KI zu interagieren, während du mitten im Code steckst. Auch wenn Copilot immer noch ein Tool ist, das von Menschen geführt werden muss, ist es definitiv ein Blick in die Zukunft des KI-gesteuerten Programmierens.

Get KI-unterstützte Programmierung now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.