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.
Azure Developer CLI (
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.
AgentV 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 pomocí příkazu nainstalujte rozšíření bez hesla konektoru služby pro Azure CLI.
az extension add --name serviceconnector-passwordless --upgradeV 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. Aby se toto nastavení projevilo, budete možná muset restartovat Visual Studio Code.
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 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>Nahraďte<password>požadované uživatelské jméno a heslo databáze.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>uživatelské jméno 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).
<database-name>Nahraďte a nahraďtecontacts<db-username><password>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.Pokud není
pgpass.confsprávně nastavená, zobrazí se výzva k zadání hesla.
Generování aplikace pomocí GitHub Copilotu
Nejprve poskytnete pokyny a pokyny k sestavení a testování aplikace na místní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.
AgentV 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.
- Explicitní očekávání, že chcete, aby to co nejvíce fungovalo na vlastní pěst. V opačném případě může GitHub Copilot poskytnout pokyny, které byste měli vzít.
- Explicitní očekávání pro instrukce / kontext. Pokud potřebujete provést další akce, nastavte očekávání, že vám to pomůže tím, že poskytnete pokyny a pokyny.
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. Je pryč. 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
- Další pokyny k vygenerování souborů readme
- 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í. GitHub Copilot pro rozšíření Azure zpracovává tento požadavek vytvořením souborů Bicep a jejich spuštěním pomocí rozhraní příkazového azd řádku.
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, například <resource-group-name> a <region-name> pak zkopírovat a vložit do chatu GitHub Copilot:
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ě doporučujeme, aby bylo možné použít konektor Service Connector, je nutné upravit nějaký kód.
- 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, - Explicitní očekávání, která chcete, aby to dělalo co nejvíce práce na vlastní pěst. V opačném případě může obsahovat pokyny, které byste měli vzít.
- 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í. Často se tak zobrazí potenciální problémy, jako jsou případy okrajů nebo nejasné pokyny.
- Požádá o plán se seznamem úkolů. Dává vám jistotu, že GitHub Copilot pro Azure rozumí přiřazení a plánům, jak jste chtěli.
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
- Spuštění rozhraní příkazového
azdřádku - Otestování nasazení
- V případě potřeby můžete nasazení ladit pomocí protokolů nebo jiných.
Interakce s GitHub Copilotem
GitHub Copilot vyžaduje váš vstup před prováděním mnoha úloh. Pozastavení vstupu je příležitost směrovat GitHub Copilot správně, aby se zabránilo chybám nebo přizpůsobení vygenerovaného výstupu podle vašich preferencí.
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. Při zobrazení výzvy k zadání vstupu se zobrazí několik jedinečných okamžiků:
- Přihlašovací údaje uživatele – Pokud aktuální operace v terminálu vyžaduje uživatelské jméno nebo heslo,
- 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í – Rozhraní příkazového řádku Azure CLI a
azdrozhraní příkazového řádku vyžadují ověření a zahájí jeden z několika ověřovacích mechanismů.
Testování a žádost o změny
Jakmile se GitHub Copilot dokončí, je možné, že web považuje za dokončený 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žití tlačítka pozastavit v chatu
- 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í.
Pokud chcete poskytnout kontext k tomu, co se právě stalo, a posunout ho k možnému řešení, můžete okamžitě po přerušení GitHub Copilotu 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.