hanakaz1991 - stock.adobe.com

GitHub Copilot und ChatGPT: ein Vergleich der beiden Tools

GitHub Copilot und ChatGPT sind generative KI-Tools, die Programmierer bei der Entwicklung unterstützen. Welche Stärken und Schwächen beide Tools auszeichnen.

GitHub Copilot und ChatGPT sind zwei generative KI-Tools, die Programmierer bei der Anwendungsentwicklung unterstützen.

Copilot wurde von GitHub und OpenAI entwickelt und konzentriert sich speziell auf die Codevervollständigung, indem es Vorschläge für Codezeilen oder ganze Funktionen direkt in integrierten Entwicklungsumgebungen (IDEs) liefert. Es wurde von GitHub und OpenAI entwickelt und basiert auf den Sprachmodellen von OpenAI. Andere Programmierassistenten gibt es von Anbietern wie Google, IBM und Tabnine.

ChatGPT, das von OpenAI entwickelt und im November 2022 auf den Markt gebracht wurde, ist als separates Tool verfügbar und eignet sich besser für die Zusammenfassung von komplexem Code oder für die Erstellung eines Template für eine bestimmte Programmieraufgabe. Neben ChatGPT gibt es zahlreiche weitere KI-Chat-Tools zur Codegenerierung. Viele davon lassen sich individuell einsetzen, in verschiedene Code-Entwicklungs-Tools integrieren oder werden als Funktion in einigen IDEs angeboten.

Da es für allgemeine Sprachaufgaben entwickelt wurde, kann ChatGPT Antworten auf ein breiteres Spektrum von Fragen außerhalb typischer Programmier-Workflows liefern. GitHub Copilot konzentriert sich voll und ganz auf die Codevervollständigung.

„Der Hauptunterschied [zwischen den beiden] ist die enge Integration von Copilot mit Visual Studio Code und die Tatsache, dass Copilot auf riesigen Mengen von Code von GitHub und anderen Stellen trainiert wurde“, erklärt Guido Hoffmann, technischer Mitarbeiter bei Tech Soft 3D.

Copilot-Benutzer erhalten direkt in gängigen Tools wie Visual Studio, VS Code, Neovim und JetBrains IDEs Unterstützung. Dies ermöglicht es auch, einen großen Kontext von Code zu analysieren, ohne kurze Snippets kopieren und in ChatGPT einfügen zu müssen.

Beide Tools versprechen, Entwickler produktiver zu machen, indem sie das Schreiben von alltäglichem Code automatisieren – und können Entwickler möglicherweise effektiver machen, indem sie ihnen mehr Zeit für übergeordnete Aufgaben geben.

Eine neue GitHub Copilot Chat-Schnittstelle bietet eine ChatGPT-ähnliche Erfahrung, um Code zu erklären, Best Practices vorzuschlagen, Tests zu erstellen und Fehler zu beheben. GitHub hat auch neue Filter hinzugefügt, um das Risiko zu verringern, dass bestehende Codeschnipsel generiert werden, die unter Lizenzbeschränkungen fallen, sowie ein KI-basiertes System zur Verhinderung von Schwachstellen, um Fälle von unsicherem Code zu verringern.

Sowohl ChatGPT als auch Copilot können kostenlos getestet werden. Ein ChatGPT-Abonnement mit Zugriff auf das neueste Sprachmodell ist allerdings kostenpflichtig. Dies gilt auch für Copilot.

Wie funktionieren GitHub Copilot und ChatGPT?

Obwohl ChatGPT und GitHub Copilot unterschiedliche Benutzererfahrungen und Arbeitsabläufe haben, weisen sie einige Ähnlichkeiten in Bezug auf die zugrunde liegende Technologie auf. Beide Systeme verwenden große Sprachmodelle (Large Language Model, LLM), um Antworten und Vorschläge zu generieren.

„Während das LLM von ChatGPT auf der Grundlage von menschlichen Sprachdaten trainiert wird, wird das LLM von GitHub Copilot, welches Codex heißt, auf der Grundlage eines riesigen Datensatzes von Quellcode und Text in natürlicher Sprache feinabgestimmt“, erklärt Nikita Povarov, Leiter des Teams für Datenanalyse und maschinelles Lernen (ML) bei JetBrains. „Dieser Feinabstimmungsprozess ermöglicht es Codex, die Syntax und Struktur des Codes zu verstehen“, sagt Povarov.

Hier ist die Antwort von OpenAIs Codex auf eine Anfrage des Autors:

OpenAI Codex
Abbildung 1: Dies zeigt die Antwort von OpenAIs Codex auf eine Anfrage des Autors.

Im Gegensatz dazu ist ChatGPT eine universell einsetzbare KI-Plattform, die natürliche Sprachverarbeitung (Natural Language Processing, NLP) nutzt, um auf Benutzereingaben zu reagieren. Sie ist besser für breitere, komplexere Aufgaben geeignet.

Agur Jõgi, CTO bei Pipedrive, einer CRM-Plattform, sagt, dass der häufigste Anwendungsfall bei der Softwareentwicklung mit ChatGPT das Verstehen und Schreiben von Code auf der Grundlage der Aufgabenbeschreibung ist. Hier ist ein Beispiel für ChatGPT, das den vom Autor eingereichten Code erklärt:

ChatGPT
Abbildung 2: Hier ist ein Beispiel von ChatGPT, das einen vom Autor eingereichten Code erklärt.

„Insgesamt ist Copilot ein großartiges Werkzeug für schnelle, taktische Aufgaben und ChatGPT ist besser für umfassendere Aufgaben geeignet. Wie jede frühe Technologie haben beide noch Luft nach oben und werden mit der Zeit besser und fortschrittlicher werden“, sagt Jõgi.

Die Stärken und Schwächen von GitHub Copilot und ChatGPT

Hier ist eine Übersicht über die jeweiligen Stärken und Schwächen der Tools.

GitHub Copilot

Stärken. GitHub Copilot zeichnet sich durch die Generierung von Codeschnipseln und Vorschlägen aus, die auf dem Kontext des geschriebenen Codes basieren. Copilot kann Codezeilen, Variablen und Funktionsnamen vorschlagen, die für den Kontext des Codes relevant sind, und es kann mit granularen Snippets unterstützen. GitHub Copilot fungiert auch als Codevervollständigungsagent, der Aufgaben erledigt, welche die üblichen, in die IDE integrierten Codevervollständigungs-Tools nicht leisten können.

Auf diese Weise kann er Entwicklern Zeit sparen und ihnen helfen, effizienter zu programmieren. Darüber hinaus kann GitHub Copilot aus dem von den Entwicklern geschriebenen Code lernen und so seine Vorschläge und Genauigkeit mit der Zeit verbessern.

Eine weitere Stärke von GitHub Copilot für das Schreiben von Code ist laut Jõgi die Integration in die IDE, die es für die Echtzeit-Codierung effizienter macht als ChatGPT und insgesamt eine bessere Benutzererfahrung für Programmierer bietet. "Da es in das GitHub-Ökosystem eingebettet ist, können Entwickler es nutzen, ohne den Kontext zu wechseln oder zusätzliche Tools zu öffnen", sagt er.

Schwächen. „Zu den Schwächen von GitHub Copilot gehört die Generierung falscher oder ineffizienter Codevorschläge“, sagt Jorge Torres, Mitbegründer und CEO von MindsDB. Außerdem ist es möglicherweise nicht für komplexe Programmieraufgaben geeignet, die umfangreiche Kenntnisse und Erfahrungen erfordern.

ChatGPT

Stärken. Die Stärke von ChatGPT liegt laut Torres in der Automatisierung von Kundendienstinteraktionen und der Bereitstellung virtueller Unterstützung für verschiedene Aufgaben. Es kann auch textbasierte Inhalte wie Artikel, Geschichten und Zusammenfassungen generieren, was es für die Erstellung von Inhalten nützlich macht.

Povarov findet ChatGPT auch hilfreich, um eine breite Palette von Codeantworten zu generieren und Codekonzepte zu erklären. Es ist auch für nicht-technische Beteiligte besser geeignet und flexibler: Die Benutzer kommunizieren über eine Chat-Schnittstelle mit einem Helfer, der praktisch jede Frage beantworten kann. Diese Flexibilität ermöglicht es Benutzern, Fragen zu klären und neu zu formulieren, was zu präziseren Antworten und Unterscheidungen führt.

Jõgi verwendet ChatGPT auch zur Generierung von Funktions- und Unit-Tests, um die Ergebnisse zu validieren. Dies kann testgetriebene Entwicklungspraktiken rationalisieren.

Schwächen. Was die Schwächen betrifft, so stellt Torres fest, dass ChatGPT mit komplexer oder technischer Sprache zu kämpfen hat und nicht immer genaue oder relevante Antworten erzeugt. Außerdem eignet es sich möglicherweise nicht für Anwendungen, die Echtzeit-Interaktionen erfordern, wie Spiele oder E-Commerce-Plattformen.

Einige Forscher fanden in einer Studie zum Vergleich von Stack Overflow und ChatGPT heraus (PDF), dass ChatGPT Schwierigkeiten hat, das gleiche Maß an Korrektheit, Konsistenz, Vollständigkeit und Prägnanz zu erreichen wie von Menschen verfasste Antworten auf Stack Overflow. Darüber hinaus stellten sie fest, dass 52 Prozent der ChatGPT-Antworten Ungenauigkeiten enthielten, 62 Prozent waren weniger prägnant als menschliche Antworten und 78 Prozent der Antworten wiesen einen unterschiedlichen Grad an Inkonsistenz mit menschlichen Antworten auf.

Dennoch bevorzugten die Benutzer in 39 Prozent der Fälle die Antworten von ChatGPT, weil sie umfassender waren und einen klareren Sprachstil hatten. Die Gefahr, so die Forscher, besteht darin, dass die Nutzer gelegentlich Fehler machen, indem sie falsche ChatGPT-Antworten bevorzugen, weil die Ergebnisse besser formuliert sind und die Logik scheinbar korrekt ist, wenn sie mit positiven Behauptungen präsentiert werden.

Ähnlichkeiten zwischen Copilot und ChatGPT

Beide Tools nutzen die GPT LLMs von OpenAI, um auf unterschiedliche Weise Ergebnisse zu generieren. Sie schlagen auch verschiedene Wege vor, um alle Arten von Aufgaben neben der Programmierung zu verbessern. Microsoft hat zum Beispiel eine Reihe von Copilots für verschiedene Office-Anwendungen eingeführt und integriert auch ChatGPT-Funktionen in seine Bing-Suchmaschine.

„Beide repräsentieren die Zukunft des generativen KI-Erlebnisdesigns, bei dem KI-gestützte Assistenten uns unterstützen können, Aufgaben effizienter und effektiver zu erledigen“, so Torres. Da sich die KI-Technologie weiter verbessert, werden wir immer ausgefeiltere KI-gestützte Assistenten sehen, die die menschliche Sprache und den Kontext genauer verstehen und komplexere und anspruchsvollere Ergebnisse erzeugen können.

Beide Tools haben gezeigt, wie generative KI die Produktivität von Entwicklern durch die Automatisierung von Routineaufgaben steigern kann. Beide Arten von Fähigkeiten können schließlich direkt in die Entwicklungswerkzeuge integriert werden.

„In Zukunft kann ein KI-Assistent ähnlich wie ChatGPT direkt in IDEs integriert werden, so dass Entwickler mit ihm kommunizieren und ihn bitten können, Routineaufgaben auszuführen, wie zum Beispiel das Auschecken von Code aus Repositories, die Durchführung von Tests oder das Erstellen von Code“, erläutert Povarov.

Wenn etwas schief geht, zum Beispiel ein Testfehler oder ein Absturz bei der Erstellung, kann der Entwickler den Assistenten bitten, den Fehler zu identifizieren und Vorschläge zur Behebung zu machen. Der Assistent kann dies tun und so den Zeit- und Arbeitsaufwand für die Pflege der Codebasis reduzieren.

Ein Blick in die Zukunft: Copilot Chat

GitHub hat kürzlich Copilot Chat als Teil einer privaten Beta veröffentlicht. Das neue Tool kombiniert Chat- und Terminal-Schnittstellen direkt in der IDE. Es verspricht, weitere Aspekte der Entwicklungserfahrung zu automatisieren. So kann es beispielsweise Codeänderungen erkennen und automatisch Beschreibungen vorschlagen, die als Pull Requests bezeichnet werden, um Software-Updates zu begleiten.

Das neue Angebot verspricht kontextabhängige Konversationen, um Code zu erklären, Fehler zu finden und Korrekturen vorzuschlagen. Es wird auch Antworten personalisieren, die mit der offiziellen Dokumentation verknüpft sind. Darüber hinaus verspricht es, Softwaretests zu schreiben und fehlende Tests zu identifizieren, die möglicherweise erforderlich sind.

GitHub kann in Zukunft weitere Funktionen zu Sicherheit, Dokumentation und Tests hinzufügen. Das Unternehmen erklärte, es wolle sich die Zeit nehmen, um herauszufinden, wie diese neuen Funktionen den Kunden am besten zur Verfügung gestellt werden können.

Alternativen zu GitHub Copilot und ChatGPT

GitHub Copilot und ChatGPT sind nicht mehr allein. Einige Coding-Assistenten, wie Tabnine, gingen dem jüngsten Hype um die Verwendung von LLMs zur Codegenerierung sogar voraus. Darüber hinaus wurden weitere kodierungsspezifische LLMs entwickelt, die eine verbesserte Fähigkeit zur sicheren Feinabstimmung der Modelle für bestehende oder proprietäre Codebasen und Kodierungspraktiken in Unternehmen versprechen. Nachfolgend eine Liste vielversprechender Alternativen, in keiner bestimmten Reihenfolge.

IBM Watsonx Code Assistant verwendet vortrainierte Modelle, die auf bestimmten Programmiersprachen basieren, um Vertrauen und Effizienz zu verbessern. Er kann dazu beitragen, die Transparenz zu erhöhen, indem er Einblick in den potenziellen Ursprung des generierten Codes gewährt, Code von einer Sprache in eine andere übersetzt oder Legacy-Code modernisiert. Der Watsonx Code Assistant für IBM Z soll Unternehmen dabei unterstützen, COBOL in Java umzuwandeln.

JetBrains hat im Rahmen einer technischen Preview KI-Kodierassistenten und Chat-Funktionen in sein Portfolio von IDE-Tools integriert. Die Funktionen werden durch den JetBrains AI-Service unterstützt, der Benutzer mit verschiedenen LLMs verbindet. Der Assistent muss separat vom JetBrains Marketplace installiert werden. Er umfasst eine Prompt-Bibliothek, einen KI-Chat, Dokumentationserstellung, Code-Erklärung und die Generierung von Commit-Nachrichten. Ask AI ist eine neue Funktion in der kollaborativen Data-Science-Plattform Datalore von JetBrains, die die Codierung in Python, R und SQL vereinfachen soll, indem sie die Codegenerierung und -änderung durch natürlichsprachliche Befehle unterstützt.

Google hat mehrere Tools zur Unterstützung bei der Programmierung angekündigt. Google Gemini (zuvor Bard) unterstützt jetzt die Analyse und Entwicklung von Code. Gemini in Android Studio bietet eine konversationelle Erfahrung wie ChatGPT für Android-Entwickler. Google Colab, eine Plattform für die Entwicklung von Datenwissenschaften, plant die Verwendung der Google Codey LLMs, die für Code optimiert sind, um größere Codeblöcke zu generieren und ganze Funktionen aus Eingabeaufforderungen zu schreiben.

CodeGPT ist eine Open-Source-Erweiterung für Programmierassistenten, die innerhalb der Microsoft Visual Studio IDE läuft. Sie kann sich mit einer breiten Palette von LLMs verbinden, die für Code im Backend optimiert sind, wie OpenAI, Cohere, AI21 Labs, Meta und Anthropic. Es kann direkt in der IDE Erklärungen abgeben, Verbesserungen vornehmen und neuen Code erstellen. Ein Premium-Service unterstützt beim Kontextmanagement, der Erstellung von KI-Agenten, der Synchronisierung von GitHub-Repositories und andere Funktionen.

Cursor von Anysphere ist ein neuerer KI-gestützter Code-Editor, der auf generativen KI-Fähigkeiten aufbaut und Elemente eines KI-Copiloten und einer Chat-Schnittstelle kombiniert, um Entwicklungs-Workflows zu beschleunigen. Er enthält ein Tool zum Generieren von Code mit einer bestimmten Abhängigkeit und kann Fragen zu einer Codebasis beantworten, Bibliotheken von Drittanbietern analysieren und Code automatisch debuggen.

Einführung von Coding Assistant: Mit Vorsicht vorgehen

"Entwickler müssen sowohl bei der Einführung von Programmierassistenten als auch von Chatbots vorsichtig vorgehen", sagt Kevin Smith, Technical Director bei der Systemintegrationsberatung Dootrix.

Die erste große Herausforderung betrifft die Datensicherheit. "Wenn Sie sensible Daten in ChatGPT eingeben, verstoßen Sie möglicherweise gegen ein Gesetz oder die Geheimhaltungsverpflichtung", sagt er. Es ist auch wichtig, sich über die Bedingungen, unter denen Sie die Tools nutzen, im Klaren zu sein und gegebenenfalls in alternative Pläne oder Unternehmensvereinbarungen zu investieren.

Die neuen Tools erhöhen auch den Bedarf an Rechenschaftspflicht. Diese Tools können Entwicklern helfen, produktiver zu sein, aber sie sollten keine Experten ersetzen. "Sie sollten ChatGPT wie einen Nachwuchsentwickler behandeln: Sie müssen seine Arbeit immer noch überprüfen, die Ergebnisse müssen möglicherweise noch einmal überarbeitet werden, und in manchen Fällen ist es einfach falsch", erklärt Smith.

Die Zukunft der Code-Assistenten

Smith geht davon aus, dass sich die Funktionen von Programmierassistenten immer mehr durchsetzen werden, ähnlich wie jedes Textverarbeitungsprogramm mit einer Rechtschreib- und Grammatikprüfung ausgestattet ist. Jedes Entwicklungs-Tool wird schließlich KI nutzen, um den Durchsatz der Entwickler zu verbessern.

Die Tools werden wahrscheinlich auch durch Innovationen im Bereich der Entwicklererfahrung und Coding LLMs fortschrittlicher werden. Smith rechnet auch mit zukünftigen Gewinnen durch spezifischere Modelle, die auf bestimmte Datensätze und Problembereiche trainiert wurden.

Langfristig können Programmierassistenten und Chat-Schnittstellen zusammenwachsen. "So wie wir uns alle zur Suchmaschine hingezogen fühlen und kleine Suchfelder in all unseren Apps sehen, wird vielleicht die Chat-Schnittstelle am Ende dominieren und die primäre Art sein, wie wir mit KI interagieren", sagt Smith.

Erfahren Sie mehr über Softwareentwicklung