Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek vás provede interakcí s GitHub Copilotem a vygeneruje místní webovou aplikaci Django, která provádí operace CRUD v databázi PostgreSQL. Dále vás provede interakcí s GitHub Copilotem pro Azure k nasazení webové aplikace a databáze na flexibilní server Azure App Service a Azure PostgreSQL (spolu s několika podpůrnými službami Azure).
Konkrétní aplikace, kterou vytvoříte, je triviální aplikace pro správu kontaktů, která obsahuje operace CRUD s architekturou stylu seznamu podrobností.
Poznámka:
Použití velkého jazykového modelu (LLM) k vygenerování aplikace může přinést nekonzistentní výsledky. Vaše výsledky závisí na modelu LLM, vašich pokynech a dalších. Cílem tohoto průvodce je pomoct vám pochopit, jak získat lepší výsledky. Pokaždé, když projdete tímto příkladem, ale dostanete (potenciálně) výrazně odlišné výsledky.
Požadavky
Účet Azure a přístup k předplatnému Azure. Podrobnosti o tom, jak je nastavit, najdete na stránce s cenami účtů Azure.
Účet GitHub a předplatné GitHub Copilot. Podrobnosti o tom, jak je nastavit, najdete v tématu Vytvoření účtu na GitHubu a rychlém startu pro GitHub Copilot.
Visual Studio Code. Podrobnosti o tom, jak ho stáhnout a nainstalovat, najdete v tématu Nastavení editoru Visual Studio Code.
Rozšíření GitHub Copilot a rozšíření GitHub Copilot Chat. Pokyny k instalaci těchto rozšíření najdete v tématu Nastavení GitHub Copilotu ve VS Code a Začínáme s chatem GitHub Copilot v editoru VS Code.
Důležité
GitHub Copilot je samostatné předplatné spravované GitHubem. Dotazy týkající se předplatných GitHub Copilot a podpory najdete v tématu Začínáme s plánem GitHub Copilot.
Rozšíření Pythonu pro Visual Studio Code Pokyny k instalaci rozšíření najdete v tématu Instalace Pythonu a rozšíření Pythonu.
PostgreSQL, včetně nástroje pgAdmin (k dispozici v instalačním programu systému Windows PostgreSQL)
Git Bash (dostupný z instalačního programu Gitu pro Windows)
Rozšíření PostgreSQL pro Visual Studio Code (Preview) Pokyny k instalaci a použití rozšíření najdete v tématu Rychlý start: Připojení a dotazování databáze pomocí rozšíření PostgreSQL pro Visual Studio Code Preview.
Azure CLI. Pokyny k instalaci Azure CLI najdete v tématu Postup instalace Azure CLI.
rozhraní příkazového řádku pro vývojáře Azure (
azd). Pokyny k instalaciazdnajdete v tématu Instalace nebo aktualizace rozhraní příkazového řádku Azure Developer CLI.
Příprava chatovací relace
V editoru Visual Studio Code použijte tlačítko Přepnout chat v záhlaví nebo stisknutím kláves Ctrl+Alt+i otevřete okno chatu. K vytvoření nové relace chatu použijte ikonu Nový chat.
V oblasti chatu vyberte režim
Agent. V době psaní tohoto textuClaude Sonnet 4přináší nejlepší výsledky. Použijte nejlepší model dostupný pro generování kódu.
Ověření konfigurace
Ujistěte se, že jsou nástroje rozhraní příkazového řádku a Visual Studio Code aktualizované, správně nakonfigurované a správně fungující, aby se zlepšily výsledky.
V novém chatu zadejte následující výzvu:
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 požádá o oprávnění ke spuštění řady kontrol příkazového řádku, aby se zajistilo, že máte nainstalované nástroje a nejaktuálnější verze těchto nástrojů.
V terminálu aktualizujte Azure CLI příkazem
az --upgrade.V terminálu nainstalujte pomocí příkazu
az extension add --name serviceconnector-passwordless --upgraderozšíření Service Connector Passwordless pro Azure CLIV editoru Visual Studio Code nastavte výchozí terminál na Git Bash. Přejděte do Nastavení předvoleb > souborů > a pak v části Nastavení hledání zadejte Výchozí profil: Windows a vyberte Git Bash. Možná bude potřeba restartovat Visual Studio Code, aby se toto nastavení projevilo.
Poznámka:
Použití GitU Bash není nezbytně nutné, ale v době psaní tohoto článku přináší nejlepší výsledky.
V editoru Visual Studio Code použijte rozšíření PostgreSQL for Visual Studio Code (Preview) a přejděte do
contactsdatabáze.V editoru Visual Studio Code použijte rozšíření Azure a ujistěte se, že jste přihlášeni ke svému účtu a předplatnému Azure. Když otevřete rozšíření Azure na primárním bočním panelu, měli byste být schopni zobrazit stávající předplatná a prostředky.
Vytvořte novou složku pro nové soubory aplikace a otevřete ji v editoru Visual Studio Code jako pracovní prostor.
Nastavení místní databáze
I když GitHub Copilot dokáže provádět prakticky všechny úlohy vývoje aplikací, které vývojáři obvykle provádějí, získáte nejlepší výsledky v případě, že provedete některé úlohy v menších krocích. Pokud chcete zlepšit výsledky, vytvořte databázi a nastavte ověřování a autorizaci před prací s GitHub Copilotem.
Vytvořte nový chat a použijte následující výzvu:
On my PostgreSQL server localhost, please create a new database named 'contacts'. 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 contacts database. Please do the work, and only prompt me when you are unable to do it yourself.Nahraďte
<db-username>a<password>vámi zvoleným uživatelským jménem a heslem databáze, respektive.Doporučeným postupem zabezpečení na počítačích s Windows je uložit uživatelské jméno a heslo databáze do místního souboru:
%APPDATA%\postgresql\pgpass.confObvykle se tím vyřeší následující umístění na pevném disku:
c:\Users\<username>\AppSettings\Roaming\postgresql\pgpass.confNahraďte
<username>svým uživatelským jménem ve Windows.Soubor by měl používat následující formát:
localhost:5432:<database-name>:<database-user>:<password>Předpokládá se, že pracujete s instancí PostgreSQL na místním počítači a že je hostovaná na výchozím portu (5432).
Nahraďte
<database-name>textemcontactsa<db-username>a<password>nahraďte přihlašovacími údaji, které jste použili v předchozím kroku.Další informace o souboru najdete v
pgpass.confdokumentaci k PostgreSQL.Přidejte cestu k
pgpass.confsouboru do proměnné prostředí PATH.Otestujte připojení, abyste měli jistotu, že funguje. Pomocí rozhraní příkazového řádku psql ho otestujte pomocí následujícího příkazu:
psql -h localhost -U <db-username> -d contactsNahraďte
<db-username>segmentem uživatelského jména databáze vpgpass.confsouboru.pgpass.confPokud není správně nastavená, zobrazí se výzva k zadání hesla.
Generování aplikace pomocí GitHub Copilotu
Nejprve poskytnete pokyny a návod pro sestavení a otestování aplikace na svém počítači.
V editoru Visual Studio Code otevřete okno chatu pomocí tlačítka Přepnout chat v záhlaví. K vytvoření nové relace chatu použijte ikonu Nový chat.
V oblasti chatu vyberte režim
Agent. V době psaní tohoto textuClaude Sonnet 4přináší nejlepší výsledky. Použijte nejlepší model dostupný pro generování kódu.K zahájení generování aplikace použijte následující výzvu:
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.Výzva obsahuje následující funkce:
- Typ aplikace, kterou chcete vytvořit. V takovém případě se jedná o aplikaci pro správu kontaktů.
- Technologie, které se mají použít. V tomto případě Django a PostgreSQL.
- Architektura webu, kterou chcete vygenerovat. V tomto případě aplikace stylu CRUD, která obsahuje stránku se seznamem všech kontaktů a umožňuje přejít k podrobnostem o konkrétním kontaktu.
- Další podrobnosti o doméně problému. V takovém případě zadáte pole dat, která má aplikace spravovat, včetně jména, adresy a telefonního čísla kontaktu.
- Konkrétní pokyny týkající se databáze. V takovém případě dáte GitHubu Copilot pokyn, aby používal konkrétní databázi, kterou jste už vytvořili, zadali stav databáze a postup interakce.
- Konkrétní pokyny k prostředí. V takovém případě ho dáte pokyn, aby používal Git Bash. Také se dozvíte, že chcete, aby se práce prováděla v prostředí Pythonu (venv), což je osvědčený postup. GitHub Copilot si může tyto možnosti zvolit samostatně, ale výslovně říká, že proces funguje hladce.
- Jasná očekávání, že chcete, aby samo vykonalo co nejvíce práce. V opačném případě může GitHub Copilot poskytnout pokyny, kterými byste se měli řídit.
- Explicitní očekávání pro instrukce / kontext. Pokud potřebuje, abyste provedli další akce, dejte jasně najevo, že od něj potřebujete pomoc, tím, že mu poskytnete pokyny a vedení.
Důležité
Když GitHub Copilot pomocí terminálu vytvoří nové virtuální prostředí, Visual Studio Code zjistí
venva zobrazí dialogové okno s dotazem, jestli ho chcete použít. Toto dialogové okno ignorujte. Zmizí. Povolit GitHub Copilotu používat terminál výhradně pro tuto operaci.GitHub Copilot používá integrovaný terminál a prostředí editoru Visual Studio Code k:
- Vytvoření virtuálního prostředí Pythonu
- Instalace knihoven a dalších závislostí
- Generování souborů kódu
- Generování databázových tabulek
- Vygenerujte soubory README s dalšími pokyny
- Vytvoření testovacích dat
- Spuštění místního webového serveru
- Otestování webu (pomocí jednoduchého prohlížeče nebo curl)
Vzhledem k tomu, jak LLMs generuje kód, příkazy, které používá a co vytváří, se pokaždé liší.
Nasazení do Azure pomocí GitHub Copilotu pro Azure
Jakmile GitHub Copilot vygeneruje web místně, vytvoříte výzvu s žádostí o provedení změn webu GitHub Copilot při přípravě na nasazení a následné provedení nasazení. Rozšíření GitHub Copilot for Azure zpracuje tento požadavek vytvořením souborů Bicep a následným spuštěním těchto souborů pomocí rozhraní příkazového řádku azd.
Použijte následující výzvu... Můžete zkopírovat do Poznámkového bloku a změnit libovolnou hodnotu v hranatých závorkách, jako je <resource-group-name> a <region-name> pak zkopírovat a vložit do GitHub Copilot chatu:
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.
Výzva obsahuje následující funkce:
- Konkrétní služby, které chcete použít. V tomto případě zjistíte, že chcete použít Azure App Service, flexibilní server Azure PostgreSQL, konektor služby. Také mu poskytnete pokyn k tomu, aby "udělal cokoli jiného, co potřebujete udělat", aby to fungovalo.
- Konkrétní možnosti služby. V tomto případě označíte, že chcete pro každou službu použít nejnákladnější možnost.
- Tip na pravděpodobné další kroky. V takovém případě naznačujete, že aby bylo možné použít Service Connector, je nutné provést určitou úpravu kódu.
- Předvídejte rozhodnutí předem. V tomto případě zadáte odpověď na potřebná nastavení, například název prostředí pro
azd, - Jasná očekávání, že chcete, aby vykonalo co nejvíce práce samostatně. V opačném případě může uvádět pokyny, kterými byste se měli řídit.
- Explicitní očekávání pro instrukce / kontext. Nastavte očekávání, že potřebujete pomoc a pokyny, když vás požádá o provedení akce.
- Ptá se, jestli je potřeba nějaké objasnění. To často odhalí potenciální problémy, jako jsou okrajové případy nebo nejasné pokyny.
- Požádá o plán se seznamem úkolů. Dává vám jistotu, že GitHub Copilot pro Azure rozumí zadání a plánuje ho splnit podle vašich představ.
GitHub Copilot používá integrovaný terminál a prostředí editoru Visual Studio Code k:
- Aktualizace souborů kódu tak, aby vyhovovaly konektoru služby
- Generování souborů Bicep
- Spusťte rozhraní
azdpříkazového řádku CLI - Otestujte nasazení
- V případě potřeby můžete ladit nasazení pomocí logů nebo jiného výstupu.
Interakce s GitHub Copilotem
GitHub Copilot vyžaduje váš vstup před prováděním mnoha úloh. Pauza pro zadání je vaší příležitostí nasměrovat GitHub Copilot správným směrem, abyste předešli chybám nebo přizpůsobili vygenerovaný výstup svým preferencím.
Během práce můžete sledovat a odsouhlasit většinu otázek, které vás požádají pomocí Continue tlačítka.
Důležité
Pokud se zobrazí neočekávané výsledky, restartujte ji pomocí nové relace chatu.
Někdy je potřeba zadat vstup. Existuje několik konkrétních situací, kdy budete vyzváni k zadání údajů:
- Přihlašovací údaje uživatele – Pokud aktuální operace v terminálu vyžaduje uživatelské jméno nebo heslo, zobrazí se výzva k zadání těchto informací.
- Moment rozhodnutí – GitHub Copilot vám občas nabídne několik možností v seznamu a zeptejte se, kterému dáváte přednost.
- Paleta příkazů – Někdy gitHub Copilot používá funkce rozšíření a možnosti se zobrazují v paletě příkazů. Jakmile provedete správné výběry, GitHub Copilot pokračuje.
-
Interaktivní přihlášení – Azure CLI a
azdCLI vyžadují, abyste se ověřili, a spustí jeden z několika mechanismů ověřování.
Testování a vyžádání změn
Když GitHub Copilot dokončí svou práci, je možné, že daný web bude považovat za hotový a funkční. Testování ale může odhalit problémy nebo neočekávané nebo nežádoucí funkce aplikace.
Použijte výzvy, které popisují problém s co nejvíce podrobnostmi. Pokud například aplikace nefunguje, uveďte co nejvíce informací, včetně přesné chybové zprávy a očekávaného výsledku.
Přerušení toku
Někdy si můžete všimnout, že GitHub Copilot se buď zasekne ve smyčce, která se pokouší opakovaně provádět stejné úlohy, nebo se zasekne v procesu, který se nikdy nevrátí. Například při diagnostice problémů s webem může GitHub Copilot chtít spustit příkaz, například:
az webapp log tail
Když se GitHub Copilot zasekne, můžete GitHub Copilot přerušit jedním z několika způsobů:
- Ctrl+C
- Použijte v chatu tlačítko Pozastavit
- Ukončení relace chatu a zahájení nového chatu
Důležité
Ukončení chatové relace zničí veškerý kontext vytvořený během relace, což může nebo nemusí být žádoucí.
Abyste mu poskytli kontext k tomu, co se právě stalo, a nasměrovali ho k možnému řešení, můžete ihned po přerušení GitHubu Copilot přidat výzvu, například:
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.