Erstellen effektiver Eingabeaufforderungen für GitHub Copilot

Abgeschlossen

Eine Eingabeaufforderung ist eine Natürliche Sprachanleitung, die GitHub Copilot angibt, was Sie tun möchten. Eingabeaufforderungen können verwendet werden, um Fragen zu stellen, Anfragen zu kommunizieren oder Aufgaben zu beschreiben.

Die folgenden Eingabeaufforderungen stellen beispielsweise eine Frage, eine Anforderung und eine Aufgabenbeschreibung dar.

Question: How do I create a button that submits a form?

Request: Add a button that opens a modal dialog. The button should be blue with rounded corners.

Task: Build a product page that displays a product title, product image, product description, and price. Product information should be fetched from the attached ProductsList.json file. The price should be formatted as currency. The page should also include a button to add the product to the cart.

Die Qualität Ihrer Aufforderung wirkt sich direkt auf die Qualität der Antwort von GitHub Copilot aus.

Was macht einen guten Prompt?

Das Erstellen von qualitativ hochwertigen Eingabeaufforderungen ist unerlässlich, um den größten Nutzen von GitHub Copilot zu erzielen. Die folgenden Strategien helfen Ihnen beim Erstellen von Eingabeaufforderungen, die präzisere, relevantere und nützliche Antworten generieren.

Allgemein beginnen, dann spezifisch werden

Wenn Sie eine Aufforderung für Copilot schreiben, beginnen Sie mit einer breiten Beschreibung Ihres Ziels oder Szenarios, und stellen Sie dann bestimmte Anforderungen bereit. Dieser Ansatz bietet Copilot den erforderlichen Kontext und stellt gleichzeitig sicher, dass Ihre detaillierten Anforderungen erfüllt sind.

Example:

Write a function that tells me if a number is prime.

The function should take an integer and return true if the integer is prime.

The function should error if the input is not a positive integer.

Konkrete Beispiele bereitstellen

Beispiele sind eine der effektivsten Methoden, um Ihre Absicht mit Copilot zu kommunizieren. Sie können Beispieleingabedaten, erwartete Ausgaben und sogar Beispielimplementierungen bereitstellen, um das Verständnis der KI zu unterstützen.

Example:

Write a function that finds all dates in a string and returns them in an array. Dates can be formatted like:

- 05/02/24
- 05/02/2024
- 5/2/24
- 5/2/2024
- 05-02-24
- 05-02-2024
- 5-2-24
- 5-2-2024

Example usage:
findDates("I have a dentist appointment on 11/14/2023 and book club on 12-1-23")

Expected return: ["11/14/2023", "12-1-23"]

Aufteilen komplexer Aufgaben in einfachere Schritte

Wenn sie mit einem komplexen oder großen Vorgang konfrontiert sind, zerlegen Sie sie in kleinere, verwaltbare Komponenten. Dieser Ansatz führt zu besseren Ergebnissen und erleichtert das Debuggen und Verfeinern einzelner Teile.

Beispiel: Anstatt Copilot aufzufordern, ein vollständiges Wortsuche-Puzzle zu generieren, brechen Sie es auf:

  1. Write a function to generate a 10 by 10 grid of letters
  2. Write a function to find all words in a grid of letters, given a list of valid words
  3. Write a function that uses the previous functions to generate a 10 by 10 grid containing at least 10 words
  4. Update the previous function to print the grid and 10 random words from the grid

Mehrdeutigkeit beseitigen

Vermeiden Sie vage Verweise und mehrdeutige Begriffe, die auf mehrere Arten interpretiert werden können. Seien Sie explizit darüber informiert, worauf Sie sich beziehen und was Copilot tun soll.

Schlechte Beispiele:

  • "Was macht dies?" (unklar, auf was sich "das" bezieht).
  • "Beheben des Fehlers" (gibt nicht an, welcher Fehler oder wie sie behoben werden soll).

Bessere Beispiele:

  • "Was macht die createUser-Funktion?"
  • "Was bewirkt der Code in Ihrer letzten Antwort?"
  • "Beheben Sie den Überprüfungsfehler im E-Mail-Eingabefeld."

Überlegungen zur Bibliothek:

  • Wenn Sie eine ungewöhnliche Bibliothek verwenden, beschreiben Sie ihren Zweck.
  • Fügen Sie für bestimmte Bibliotheken Importanweisungen hinzu, oder geben Sie an, welche Bibliothek Sie verwenden möchten.

Relevanten Kontext bereitstellen

Helfen Sie Copilot, Ihre Projektstruktur und Ihre Absichten zu verstehen, indem Sie Ihre Entwicklungsumgebung effektiv verwalten.

In Ihrer IDE:

  • Öffnen Sie relevante Dateien, und schließen Sie nicht verwandte Dateien.
  • Markieren Sie bestimmte Codeabschnitte, auf die Copilot verweisen soll.
  • Verwenden Sie Chatteilnehmer wie @workspace in Visual Studio Code oder @project in JetBrains-IDEs.

In Copilot Chat:

  • Verweisen Sie auf bestimmte Dateien oder Codeblöcke.
  • Fügen Sie relevante Dokumentationen oder Spezifikationen an.
  • Verwenden Sie klare Dateipfade und Funktionsnamen.

Iterieren und Verfeinern

Erwarten Sie keine perfekten Ergebnisse beim ersten Versuch. Copilot funktioniert am besten, wenn Sie an einer iterativen Unterhaltung teilnehmen und Ihre Anforderungen basierend auf den empfangenen Antworten verfeinern.

Strategien für Iteration:

  • Wenn Sie Inlinevorschläge verwenden, löschen Sie sie, und versuchen Sie es erneut mit einer geänderten Eingabeaufforderung.
  • Verweisen Sie im Copilot-Chat auf vorherige Antworten, und bitten Sie um bestimmte Änderungen.
  • Bauen Sie auf Teillösungen auf, indem Sie nach inkrementellen Verbesserungen suchen.

Relevanten Unterhaltungsverlauf beibehalten

Copilot Chat verwendet den Unterhaltungsverlauf, um den Kontext zu verstehen. Deshalb sollten Sie diesen Verlauf strategisch verwalten.

Bewährte Methoden:

  • Starten Sie neue Threads für verschiedene Aufgaben oder Projekte.
  • Löschen Sie irrelevante oder nicht erfolgreiche Anforderungen, die zukünftige Antworten verwechseln können.
  • Unterhaltungen auf verwandte Funktionen konzentrieren.

Bewährte Programmiermethoden befolgen

Die Qualität Ihrer vorhandenen Codebasis wirkt sich auf die Fähigkeit von Copilot aus, geeignete Vorschläge zu generieren. Halten Sie hohe Standards in Ihrem Code, um bessere KI-Unterstützung zu erhalten.

Codequalitätsfaktoren:

  • Verwenden Sie konsistente Codestile und -muster.
  • Wählen Sie beschreibende Namen für Variablen und Funktionen aus.
  • Fügen Sie aussagekräftige Kommentare hinzu, um komplexe Logik zu erläutern.
  • Strukturieren Sie Code in modulare, gut abgegrenzte Komponenten.
  • Umfassen Sie umfassende Komponententests.

Note

Sie können Copilot bitten, Ihre Codequalität zu verbessern, indem Sie Kommentare anfordern, Vorschläge umgestalten oder große Funktionen in kleinere, verwaltbare Teile aufteilen.

Gute Prompts sind:

  • Klar: Beschreiben Sie genau das, was Sie möchten.
  • Spezifisch: Fügen Sie Layout-, Verhaltens- oder Formatierungsdetails ein.
  • Kontextbezogener Verweis: Verweisen auf vorhandenen Code oder vorhandene Struktur.

Iterieren von Eingabeaufforderungen

Wenn die anfängliche Antwort von GitHub Copilot nicht ihren Erwartungen entspricht, müssen Sie möglicherweise ihre Aufforderung durchlaufen. Berücksichtigen Sie die folgenden Strategien:

  • Bearbeiten Sie die Eingabeaufforderung, um spezifischer zu sein.
  • Fügen Sie dem Chat Kontext hinzu, der Ihre Ziele oder Anforderungen klarstellt.
  • Verwenden Sie Copilot Chat, um Nachverfolgungsfragen zu stellen, die auf vorherigen Antworten aufbauen.

Bewerten und Beantworten von Copilot-Vorschlägen

Das Verständnis, wie man die Vorschläge von Copilot bewertet, ist entscheidend für eine effektive Stimmungscodierung. Nicht jeder Vorschlag ist perfekt, und das Wissen, wann Sie Antworten annehmen, ablehnen oder ändern möchten, wird Ihre Entwicklungserfahrung erheblich verbessern.

Wann man Vorschläge annehmen sollte

Akzeptieren Sie die Vorschläge von Copilot, wenn sie:

  • Erfüllen Sie Ihre Anforderungen: Der Code führt genau das aus, was Sie gefragt haben.
  • Befolgen Sie bewährte Methoden: Verwendet geeignete Muster, Benennungskonventionen und Struktur.
  • Sind gut strukturiert: Code ist lesbar, wartungsfähig und richtig formatiert.
  • Fügen Sie eine ordnungsgemäße Fehlerbehandlung ein: Randfälle und potenzielle Fehler werden berücksichtigt.
  • Passen Sie den Stil Ihres Projekts an: Konsistent mit vorhandenen Codebasismustern und Konventionen.

Beispiel für einen guten Vorschlag, der akzeptiert werden soll:

Prompt: "Erstellen einer Funktion zum Überprüfen von E-Mail-Adressen"

Copilot schlägt folgendes vor:

function validateEmail(email) {
    const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
    if (typeof email !== 'string') {
        throw new Error('Email must be a string');
    }
    return emailRegex.test(email.toLowerCase());
}

Dieser Vorschlag sollte akzeptiert werden, da er die Eingabeüberprüfung, fehlerbehandlung und ein angemessenes Regex-Muster enthält.

Wann Vorschläge abgelehnt werden sollen

Lehnen Sie die Vorschläge von Copilot ab, wenn sie:

  • Ignorieren Sie Ihre Anforderung: Der Code löst ein anderes Problem als angefordert.
  • Sicherheitsrisiken enthalten: Verwenden Sie unsichere Methoden, oder machen Sie vertrauliche Daten verfügbar.
  • Sind übermäßig komplex: Einfache Aufgaben, die mit unnötiger Komplexität implementiert werden.
  • Verwenden Sie veraltete Methoden: Verlassen Sie sich auf veraltete oder obsolet gewordene APIs.
  • Fehlende Fehlerbehandlung: Berücksichtigen Sie keine potenziellen Fehlerszenarien.
  • Verstoßen Sie gegen Codierungsstandards: Befolgen Sie die etablierten Praktiken Ihres Teams nicht.

Beispiel für einen Vorschlag, der abgelehnt werden soll:

Prompt: "Erstellen einer sicheren Kennwortüberprüfungsfunktion"

Schlechter Vorschlag:

function validatePassword(password) {
    return password.length > 6;
}

Dies sollte abgelehnt werden, da sie zu einfach für Sicherheitsanforderungen ist und die Kennwortstärke nicht ordnungsgemäß überprüft.

Wann Vorschläge geändert werden sollen

Ändern Sie die Vorschläge von Copilot, wenn sie:

  • Sind meist korrekt, benötigen aber Anpassungen: Die Kernlogik ist solide, aber Details müssen angepasst werden.
  • Benötigen Sie zusätzliche Features: Die Basisfunktionalität ist gut, erfordert jedoch Verbesserungen.
  • Kleinere Formatierungsprobleme: Code funktioniert, stimmt aber nicht mit deinen Formatierungseinstellungen überein.
  • Erfordern Sie unterschiedliche Variablennamen: Logik ist richtig, aber die Benennung könnte verbessert werden.
  • Benötigen Sie Leistungsoptimierungen: Funktional, könnte aber effizienter sein.

Beispiel für einen Vorschlag zum Ändern:

Copilot schlägt folgendes vor:

function calculateTotal(items) {
    let total = 0;
    for (let i = 0; i < items.length; i++) {
        total += items[i].price;
    }
    return total;
}

Ihre Änderung für eine bessere Lesbarkeit und modernes JavaScript:

function calculateTotal(items) {
    return items.reduce((total, item) => total + item.price, 0);
}

Strategien zur Verbesserung von Vorschlägen

Wenn ein Vorschlag nicht ganz richtig ist, probieren Sie die folgenden Ansätze aus:

Verfeinern Sie Ihre Eingabeaufforderung:

  • Fügen Sie spezifischere Anforderungen hinzu.
  • Beispiele von erwarteten Eingaben/Ausgaben.
  • Geben Sie den verwendeten Programmierstil oder das verwendete Framework an.

Anforderungsänderungen:

  • "Machen Sie die vorherige Funktion robuster mit der Fehlerbehandlung."
  • "Vereinfachen Sie den Code, den Sie gerade geschrieben haben."
  • Fügen Sie der vorherigen Funktion TypeScript-Typen hinzu.

Inkrementelles Erstellen:

  • Beginnen Sie mit einer Basisversion, und fragen Sie nach Verbesserungen.
  • Fügen Sie gleichzeitig Features hinzu, anstatt alles gleichzeitig anzufordern.
  • Testen Sie jede Iteration, bevor Sie zur nächsten Erweiterung wechseln.

Tip

Behalten Sie beim Ändern von Vorschlägen die Teile, die gut funktionieren, und achten Sie darauf, was geändert werden muss. Dies hilft Copilot, Ihre Vorlieben zu verstehen und bessere zukünftige Vorschläge bereitzustellen.

Summary

Die Erstellung effektiver Prompts für GitHub Copilot ist unerlässlich, um ihr Potenzial beim stimmungsvollen Programmieren voll auszuschöpfen. Indem Sie mit allgemeinen Beschreibungen beginnen, konkrete Beispiele bereitstellen, komplexe Aufgaben aufteilen und klare Kommunikation beibehalten, können Sie Copilot leiten, um qualitativ hochwertigen Code zu generieren, der Ihren Anforderungen entspricht. Das Durchlaufen von Eingabeaufforderungen und das Verständnis, wie Vorschläge ausgewertet werden, verbessern Ihre Entwicklungserfahrung weiter, sodass Sie KI-Unterstützung effektiv nutzen und gleichzeitig die Kontrolle über den Codierungsprozess behalten können.