Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel erfahren Sie, wie Sie mit GitHub Copilot interagieren, um eine lokale Django-Web-App zu generieren, die CRUD-Vorgänge in einer PostgreSQL-Datenbank ausführt. Als Nächstes führt sie dazu, wie Sie mit GitHub Copilot für Azure interagieren, um die Web-App und -Datenbank in Azure App Service und Azure PostgreSQL Flexible Server (zusammen mit mehreren unterstützenden Azure-Diensten) bereitzustellen.
Die spezifische Anwendung, die Sie erstellen, ist eine triviale Kontaktverwaltungsanwendung, die CRUD-Vorgänge mit einer Architektur des Listendetailstils enthält.
Hinweis
Die Verwendung eines LLM (Large Language Model) zum Generieren einer Anwendung kann zu inkonsistenten Ergebnissen führen. Ihre Ergebnisse hängen vom LLM-Modell, Ihren Anweisungen und mehr ab. Der Schwerpunkt dieses Leitfadens liegt darin, Ihnen zu verstehen, wie Sie bessere Ergebnisse erzielen können. Jedes Mal, wenn Sie dieses Beispiel durchlaufen, erhalten Sie jedoch (potenziell) unterschiedliche Ergebnisse.
Voraussetzungen
Ein Azure-Konto und Zugriff auf ein Azure-Abonnement. Ausführliche Informationen zum Einrichten dieser Konten finden Sie auf der Preisseite für Azure-Konten.
Ein GitHub-Konto und ein GitHub Copilot-Abonnement. Ausführliche Informationen zum Einrichten finden Sie unter Erstellen eines Kontos auf GitHub und Schnellstart für GitHub Copilot.
Visual Studio Code. Ausführliche Informationen zum Herunterladen und Installieren finden Sie unter Einrichten von Visual Studio Code.
Die GitHub Copilot-Erweiterung und die GitHub Copilot Chat-Erweiterung. Anweisungen zum Installieren dieser Erweiterungen finden Sie unter Einrichten von GitHub Copilot in VS Code und erste Schritte mit GitHub Copilot Chat in VS Code.
Von Bedeutung
GitHub Copilot ist ein separates Abonnement, das von GitHub verwaltet wird. Fragen zu GitHub Copilot-Abonnements und -Support finden Sie unter "Erste Schritte mit einem GitHub Copilot-Plan".
Python-Erweiterung auf Visual Studio Code. Anweisungen zum Installieren der Erweiterung finden Sie unter Installieren von Python und der Python-Erweiterung.
PostgreSQL, einschließlich pgAdmin (verfügbar vom PostgreSQL Windows Installer)
Git Bash (verfügbar über das Git-Installationsprogramm für Windows)
PostgreSQL für Visual Studio Code (Preview)-Erweiterung. Anweisungen zum Installieren und Verwenden der Erweiterung finden Sie unter Schnellstart: Verbinden und Abfragen einer Datenbank mit der PostgreSQL-Erweiterung für Visual Studio Code Preview.
Azure CLI. Anweisungen zum Installieren der Azure CLI finden Sie unter Installieren der Azure CLI.
Azure Developer CLI (
azd). Anweisungen zum Installierenazdfinden Sie unter Installieren oder Aktualisieren der Azure Developer CLI.
Vorbereiten der Chatsitzung
Verwenden Sie in Visual Studio Code die Schaltfläche "Chat umschalten" in der Titelleiste, oder wählen Sie STRG+ALT+i aus, um das Chatfenster zu öffnen. Verwenden Sie das Symbol "Neuer Chat", um eine neue Chatsitzung zu erstellen.
Wählen Sie im Chatbereich den Modus aus
Agent. Zum Zeitpunkt dieses SchreibensClaude Sonnet 4ergibt dies die besten Ergebnisse. Verwenden Sie das beste Modell, das für die Codegenerierung verfügbar ist.
Überprüfen Der Konfiguration
Stellen Sie sicher, dass Ihre CLI-Tools und Visual Studio Code aktualisiert, ordnungsgemäß konfiguriert und ordnungsgemäß ausgeführt werden, um Ihre Ergebnisse zu verbessern.
Geben Sie in einem neuen Chat die folgende Eingabeaufforderung ein:
I want to create a new Django website that stores data in PostgreSQL. Then, I'll want to deploy that new website to Azure. Do I have everything installed on my local computer that you will need to perform these tasks?GitHub Copilot fordert die Berechtigung auf, eine Reihe von Befehlszeilenüberprüfungen auszuführen, um sicherzustellen, dass Sie über die Tools verfügen, sowie die aktuellsten Versionen dieser Tools installiert sind.
Aktualisieren Sie in Ihrem Terminal die Azure CLI mit dem Befehl
az --upgrade.Installieren Sie in Ihrem Terminal die kennwortlose Dienstconnector-Erweiterung für Azure CLI mit dem Befehl
az extension add --name serviceconnector-passwordless --upgradeLegen Sie in Visual Studio Code das Standardterminal auf Git Bash fest. Wechseln Sie zu "Dateieinstellungen >> ", und geben Sie dann in "Sucheinstellungen" "Standardprofil: Windows" ein, und wählen Sie "Git Bash" aus. Möglicherweise müssen Sie Visual Studio Code neu starten, damit diese Einstellung wirksam wird.
Hinweis
Die Verwendung von Git Bash ist nicht unbedingt notwendig, aber zum Zeitpunkt dieses Schreibens liefert es die besten Ergebnisse.
Verwenden Sie in Visual Studio Code die Erweiterung PostgreSQL für Visual Studio Code (Vorschau) und navigieren Sie zu der
contactsDatenbank.Verwenden Sie in Visual Studio Code die Azure-Erweiterung, und stellen Sie sicher, dass Sie bei Ihrem Azure-Konto und -Abonnement angemeldet sind. Wenn Sie die Azure-Erweiterung in der primären Seitenleiste öffnen, sollten Sie In der Lage sein, Ihre vorhandenen Abonnements und Ressourcen anzuzeigen.
Erstellen Sie einen neuen Ordner für Ihre neuen Anwendungsdateien, und öffnen Sie ihn in Visual Studio Code als Arbeitsbereich.
Einrichten der lokalen Datenbank
Während GitHub Copilot praktisch jede Anwendungsentwicklungsaufgabe ausführen kann, die Entwickler in der Regel ausführen, erhalten Sie die besten Ergebnisse, wenn Sie einige Aufgaben in kleineren Schritten ausführen. Um die Ergebnisse zu verbessern, erstellen Sie die Datenbank, und richten Sie die Authentifizierung und Autorisierung ein, bevor Sie mit GitHub Copilot arbeiten.
Erstellen Sie einen neuen Chat, und verwenden Sie die folgende Eingabeaufforderung:
On my PostgreSQL server localhost, please create a new database named market. Then create a new user <db-username> with password `<password>` and give that user full rights (create tables and other db objects, CRUD data) to the new market database. Please do the work, and only prompt me when you are unable to do it yourself.<db-username>Ersetzen Sie den<password>Benutzernamen und das Kennwort der gewünschten Datenbank bzw. durch das gewünschte Kennwort.Auf Windows-Computern empfiehlt es sich, den Datenbankbenutzernamen und das Kennwort in einer lokalen Datei zu speichern:
%APPDATA%\postgresql\pgpass.confDadurch wird in der Regel der folgende Speicherort auf Der Festplatte aufgelöst:
c:\Users\<username>\AppSettings\Roaming\postgresql\pgpass.confErsetzen Sie sie
<username>durch Ihren Windows-Benutzernamen.Die Datei sollte das folgende Format verwenden:
localhost:5432:<database-name>:<database-user>:<password>Dabei wird davon ausgegangen, dass Sie mit einer Instanz von PostgreSQL auf Ihrem lokalen Computer arbeiten und dass sie am Standardport (5432) gehostet wird.
Ersetzen Sie diese durch
<database-name>contactsund ersetzen<db-username><password>Sie durch die im vorherigen Schritt verwendeten Anmeldeinformationen.Weitere Informationen zur Datei finden Sie in der
pgpass.confDokumentation von PostgreSQL.Fügen Sie der Datei den Pfad zu Ihrer
pgpass.confPATH-Umgebungsvariable hinzu.Testen Sie die Verbindung, um sicherzustellen, dass sie funktioniert. Verwenden Sie die psql CLI, um sie mit dem folgenden Befehl zu testen:
psql -h localhost -U <db-username> -d contactsErsetzen Sie
<db-username>das Datenbankbenutzernamensegment in derpgpass.confDatei.Wenn dies
pgpass.confnicht ordnungsgemäß eingerichtet ist, wird eine Aufforderung angezeigt, dass Sie Ihr Kennwort eingeben.
Generieren einer App mit GitHub Copilot
Zunächst geben Sie Anweisungen und Anleitungen zum Erstellen und Testen der Anwendung auf Ihrem lokalen Computer an.
Verwenden Sie in Visual Studio Code die Schaltfläche "Chat umschalten" in der Titelleiste, um das Chatfenster zu öffnen. Verwenden Sie das Symbol "Neuer Chat", um eine neue Chatsitzung zu erstellen.
Wählen Sie im Chatbereich den Modus aus
Agent. Zum Zeitpunkt dieses SchreibensClaude Sonnet 4ergibt dies die besten Ergebnisse. Verwenden Sie das beste Modell, das für die Codegenerierung verfügbar ist.Verwenden Sie die folgende Eingabeaufforderung, um mit der Anwendungsgenerierung zu beginnen:
I want you to create a simple Contact Manager application using Django and PostgreSQL. This should be a CRUD application, so create web pages that display a list of contacts, view details, add a new contact, edit or delete a contact. Each Contact is comprised of a contact's Name, Address, and Phone number. Since this is a Python / Django project please make sure to work inside of a virtual environment (venv). I've already created a PostgreSQL database at `localhost` named `contacts`. There are no tables yet. For local development in PostgreSQL, I'm using a `pgpass.conf` file and I have tested that it works. Prefer Git Bash in the terminal. Beyond that, if there's anything I need to do, please include instructions. But I want you to do as much as you can on your own.Die Eingabeaufforderung verfügt über die folgenden Features:
- Der Typ der Anwendung, die Sie erstellen möchten. In diesem Fall eine Kontaktverwaltungsanwendung.
- Die zu verwendenden Technologien. In diesem Fall django und PostgreSQL.
- Die Websitearchitektur, die Sie generieren möchten. In diesem Fall eine CRUD-Formatanwendung, die eine Seite enthält, die alle Kontakte auflistet und es Ihnen ermöglicht, einen Drilldown zu einem bestimmten Kontakt zu erstellen.
- Weitere Details zur Problemdomäne. In diesem Fall geben Sie die Datenfelder an, die von der Anwendung verwaltet werden sollen, einschließlich des Namens, der Adresse und der Telefonnummer des Kontakts.
- Spezifische Anweisungen zur Datenbank. In diesem Fall weisen Sie GitHub Copilot an, eine bestimmte Datenbank zu verwenden, die Sie bereits erstellt haben, den Status der Datenbank und die Interaktion
- Spezifische Anweisungen zur Umgebung. In diesem Fall weisen Sie es an, Git Bash zu verwenden. Sie teilen es auch mit, dass die Arbeit in einer Python-Umgebung (venv) durchgeführt werden soll, was eine bewährte Methode ist. GitHub Copilot kann diese Optionen eigenständig auswählen, aber es wird explizit angegeben, dass der Prozess reibungslos verläuft.
- Explizite Erwartungen, die Sie möchten, dass sie so viel Eigenes wie möglich erledigen soll. Andernfalls enthält GitHub Copilot möglicherweise Anweisungen, die Sie ausführen können.
- Explizite Erwartungen an Anweisungen/Kontext. Wenn Sie andere Aktionen ausführen müssen, legen Sie die Erwartung fest, dass Sie sie benötigen, um Ihnen zu helfen, indem Sie Anweisungen und Anleitungen bereitstellen.
Von Bedeutung
Wenn GitHub Copilot das Terminal zum Erstellen einer neuen virtuellen Umgebung verwendet, erkennt Visual Studio Code das
venvDialogfeld und zeigt ein Dialogfeld an, in dem Sie gefragt werden, ob Sie es verwenden möchten. Dieses Dialogfeld ignorieren. Es geht weg. Erlauben Sie GitHub Copilot, das Terminal exklusiv für diesen Vorgang zu verwenden.GitHub Copilot verwendet das integrierte Terminal und die Visual Studio Code-Umgebung für:
- Erstellen einer virtuellen Python-Umgebung
- Installieren von Bibliotheken und anderen Abhängigkeiten
- Generieren von Codedateien
- Datenbanktabellen generieren
- Generieren von Readme-Dateien für weitere Anweisungen
- Erstellen von Testdaten
- Starten eines lokalen Webservers
- Testen der Website (mit einfachem Browser oder Curl)
Aufgrund der Art, wie LLMs Code generieren, unterscheiden sich die von ihr verwendeten Befehle und deren Erstellung jedes Mal.
Bereitstellen in Azure mit GitHub Copilot für Azure
Nachdem GitHub Copilot die Website lokal generiert hat, erstellen Sie eine Aufforderung, GitHub Copilot aufzufordern, Änderungen an der Website zur Vorbereitung auf die Bereitstellung vorzunehmen und dann die Bereitstellung durchzuführen. Die GitHub Copilot für Azure-Erweiterung verarbeitet diese Anforderung, indem Bicep-Dateien erstellt und diese Dateien dann mit der azd CLI ausgeführt werden.
Verwenden Sie die folgende Eingabeaufforderung ... Sie können in Editor kopieren und jeden Wert in eckigen Klammern <resource-group-name> ändern und <region-name> dann in GitHub Copilot-Chat kopieren und einfügen:
Please help me deploy this Django app to Azure.
First, create and use a Resource Group named "<resource-group-name>" in the "<region-name>" region.
Second, create an Azure App Service for the Django app in the new "<resource-group-name>" in the "<region-name>" region.
Third, create a new Azure Database for PostgreSQL flexible server named "<server-name>" in a resource group named "<resource-group-name>" in my subscription "<subscription-id>". Use my current account ("<account-id>") as the Microsoft Entra administrator. For the PostgreSQL "Administrator login", use "<azure-database-username>" and password "<azure-database-password>". Use a "development" class database configuration in the "<region-name>" region. Create a new database named "contact_manager_db" and migrate all tables and data from the local version of "contact_manager_db". The local database uses the username "<local-database-username>" and password "<local-database-password>". Add my IP address as a firewall rule, allow public access to this resource through the internet using a public IP address, and allow public access from any Azure service within Azure to this server.
Fourth, use Service Connector (and any other services you need to make this configuration work successfully) to connect the web app to the database. You may need to modify the application code to accommodate Service Connector. Also, please ensure a secure connection between the Azure App Service web site and the Azure PostgreSQL Flexible Server.
Please choose the least expensive options.
If you are prompted for an environment, use the name "contacts-env". Configure my firewall to allow my IP address. Beyond that, if there's anything
I need to do, please include instructions. But I want you to do as much as you can on your own.
Before you start:
- Do you have any questions that need to be clarified?
- Please create a plan for deployment in the form of a TODO list, and then update the TODO list as you progress. Do not start until I have a chance to review your plan and tell you to proceed.
Die Eingabeaufforderung verfügt über die folgenden Features:
- Bestimmte Dienste, die Sie verwenden möchten. In diesem Fall teilen Sie ihr mit, dass Sie Azure App Service, Azure PostgreSQL Flexible Server, Service Connector verwenden möchten. Außerdem geben Sie ihm die Anweisung, "alles zu tun, was Sie tun müssen", um sicherzustellen, dass es funktioniert.
- Bestimmte Dienstoptionen. In diesem Fall geben Sie an, dass Sie für jeden Dienst die kostengünstigste Option verwenden möchten.
- Hinweis auf wahrscheinliche nächste Schritte. In diesem Fall schlagen Sie vor, dass einige Codeänderungen erforderlich sind, um Service Connector zu verwenden.
- Vorausschauen Sie Entscheidungen im Voraus. In diesem Fall stellen Sie die Antwort auf die benötigten Einstellungen bereit, z. B. einen Umgebungsnamen für
azd, - Explizite Erwartungen, die sie selbst erledigen sollen. Andernfalls enthält sie möglicherweise Anweisungen, die Sie ausführen können.
- Explizite Erwartungen an Anweisungen/Kontext. Legen Sie die Erwartung fest, dass Sie Hilfe und Anleitungen benötigen, wenn Sie aufgefordert werden, Maßnahmen zu ergreifen.
- Fragt, ob eine Klarstellung erforderlich ist. Dadurch werden häufig potenzielle Probleme wie Edgefälle oder unklare Anweisungen angezeigt.
- Fordert einen Plan mit einer TODO-Liste an. Bietet Ihnen vertrauen, dass GitHub Copilot für Azure die Aufgabe und pläne, sie wie gewünscht auszuführen.
GitHub Copilot verwendet das integrierte Terminal und die Visual Studio Code-Umgebung für:
- Aktualisieren der Codedateien zur Aufnahme von Service Connector
- Generieren von Bicep-Dateien
- Ausführen der
azdCLI - Testen der Bereitstellung
- Debuggen Sie die Bereitstellung bei Bedarf mithilfe von Protokollen oder anderen
Interagieren mit GitHub Copilot
GitHub Copilot erfordert Ihre Eingabe, bevor viele Aufgaben ausgeführt werden. Eine Pause für die Eingabe ist Ihre Möglichkeit, GitHub Copilot kurskorrekturen zu leiten, um Fehler zu vermeiden oder die generierte Ausgabe an Ihre Vorlieben anzupassen.
Während es funktioniert, können Sie die meisten fragen, die Sie mit der Continue Schaltfläche stellen, ansehen und zustimmen.
Von Bedeutung
Wenn Sie unerwartete Ergebnisse erhalten, starten Sie mit einer neuen Chatsitzung neu.
Gelegentlich müssen Sie Eingaben bereitstellen. Es gibt ein paar verschiedene Momente, in denen Sie zur Eingabe aufgefordert werden:
- Benutzeranmeldeinformationen – Wenn der aktuelle Vorgang im Terminal einen Benutzernamen oder ein Kennwort erfordert,
- Moment der Entscheidung - Gelegentlich gibt GitHub Copilot Ihnen mehrere Optionen in einer Liste und fragen Sie, welche Sie bevorzugen.
- Die Befehlspalette – Gelegentlich verwendet GitHub Copilot die Features einer Erweiterung, und die Optionen werden in der Befehlspalette angezeigt. Sobald Sie die richtigen Auswahlen getroffen haben, fährt GitHub Copilot fort.
-
Interaktive Anmeldung – Die Azure CLI und
azdCLI müssen Sie authentifizieren und einen von mehreren Authentifizierungsmechanismen initiieren.
Testen und Fragen nach Änderungen
Wenn GitHub Copilot abgeschlossen ist, ist es möglich, dass die Website vollständig und funktionsfähig ist. Ihre Tests können jedoch Probleme oder unerwartete/unerwünschte App-Features erkennen.
Verwenden Sie Eingabeaufforderungen, die das Problem mit so vielen Details wie möglich beschreiben. Wenn die Anwendung beispielsweise nicht funktioniert, stellen Sie so viele Informationen wie möglich bereit, einschließlich der genauen Fehlermeldung und des erwarteten Ergebnisses.
Unterbrechen des Flusses
Gelegentlich stellen Sie möglicherweise fest, dass GitHub Copilot entweder in einer Schleife stecken bleibt, die versucht, dieselben Aufgaben wiederholt auszuführen, oder es bleibt in einem Prozess hängen, der nie zurückgegeben wird. Wenn Sie beispielsweise Probleme mit der Website diagnostizieren, kann GitHub Copilot einen Befehl wie folgt ausführen:
az webapp log tail
Wenn GitHub Copilot hängen bleibt, können Sie GitHub Copilot auf eine von mehreren Arten unterbrechen:
- Strg+c
- Verwenden der Schaltfläche "Anhalten" im Chat
- Beenden der Chatsitzung und Starten eines neuen Chats
Von Bedeutung
Wenn Sie die Chatsitzung beenden, werden alle während der Sitzung aufgebauten Kontext zerstört, was möglicherweise wünschenswert ist oder nicht.
Um es kontextieren zu können, was gerade passiert ist, und sie auf eine mögliche Lösung zu setzen, könnten Sie eine Eingabeaufforderung unmittelbar nach dem Unterbrechen des GitHub Copilot hinzufügen, z. B.:
You were just getting the logs from Azure App Service but it did not return
so you got stuck. Try to interrupt after a minute once you get what you need
from the logs.