Generowanie aplikacji Django i PostgreSQL oraz wdrażanie na platformie Azure

W tym artykule opisano sposób interakcji z rozwiązaniem GitHub Copilot w celu wygenerowania lokalnej aplikacji internetowej Django, która wykonuje operacje CRUD w bazie danych PostgreSQL. Następnie przeprowadzi Cię on przez sposób interakcji z rozwiązaniem GitHub Copilot dla platformy Azure w celu wdrożenia aplikacji internetowej i bazy danych w usługach Azure App Service i Azure PostgreSQL — elastycznym serwerze (wraz z kilkoma pomocniczymi usługami platformy Azure).

Konkretna aplikacja, którą tworzysz, to prosta aplikacja do zarządzania kontaktami, obsługująca operacje CRUD w architekturze lista–szczegóły.

Uwaga / Notatka

Generowanie aplikacji przy użyciu modelu dużego języka może przynieść niespójne wyniki. Wyniki zależą od modelu LLM, instrukcji i nie tylko. Celem tego przewodnika jest pomoc w zrozumieniu, jak uzyskać lepsze wyniki. Jednak za każdym razem, gdy przejdziesz przez ten przykład, uzyskasz (potencjalnie) znacznie różne wyniki.

Wymagania wstępne

Ważne

GitHub Copilot to oddzielna subskrypcja zarządzana przez usługę GitHub. Aby uzyskać pytania dotyczące subskrypcji i pomocy technicznej usługi GitHub Copilot, zobacz Wprowadzenie do planu GitHub Copilot.

Przygotowywanie sesji czatu

  1. W programie Visual Studio Code użyj przycisku Przełącz czat na pasku tytułu lub naciśnij Ctrl+Alt+i , aby otworzyć okno czatu. Użyj ikony Nowy czat, aby utworzyć nową sesję czatu.

  2. W obszarze czatu wybierz tryb Agent. W momencie pisania tego tekstu Claude Sonnet 4 daje najlepsze wyniki. Użyj najlepszego modelu dostępnego na potrzeby generowania kodu.

Weryfikowanie konfiguracji

Upewnij się, że narzędzia interfejsu wiersza polecenia i program Visual Studio Code zostały zaktualizowane, prawidłowo skonfigurowane i działają prawidłowo, aby poprawić wyniki.

  1. W nowym czacie wpisz następujące polecenie:

    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 poprosi o pozwolenie na uruchomienie serii kontroli wiersza polecenia, aby upewnić się, że masz narzędzia, a także najbardziej aktualne wersje tych narzędzi, zainstalowane.

  2. W terminalu zaktualizuj interfejs wiersza polecenia platformy Azure za pomocą polecenia az --upgrade.

  3. W terminalu zainstaluj rozszerzenie usługi Service Connector do uwierzytelniania bez użycia hasła dla Azure CLI za pomocą polecenia az extension add --name serviceconnector-passwordless --upgrade

  4. W programie Visual Studio Code ustaw domyślny terminal na Git Bash. Przejdź do pozycji Ustawienia preferencji > plików>, a następnie w obszarze "Ustawienia wyszukiwania" wpisz "Domyślny profil: Windows" i wybierz pozycję "Git Bash". Może być konieczne ponowne uruchomienie Visual Studio Code, aby to ustawienie miało zastosowanie.

    Uwaga / Notatka

    Korzystanie z Git Bash nie jest bezwzględnie konieczne, ale w chwili pisania tego tekstu daje najlepsze wyniki.

  5. W programie Visual Studio Code użyj rozszerzenia PostgreSQL for Visual Studio Code (wersja zapoznawcza) i przejdź do contacts bazy danych.

  6. W programie Visual Studio Code użyj rozszerzenia platformy Azure i upewnij się, że zalogowano się do konta i subskrypcji platformy Azure. Po otwarciu rozszerzenia platformy Azure na pasku bocznym podstawowym powinno być możliwe wyświetlenie istniejących subskrypcji i zasobów.

  7. Utwórz nowy folder dla nowych plików aplikacji i otwórz go w programie Visual Studio Code jako obszar roboczy.

Konfigurowanie lokalnej bazy danych

Chociaż GitHub Copilot jest w stanie wykonać praktycznie dowolne zadanie programistyczne aplikacji, które deweloperzy zwykle wykonują, uzyskasz najlepsze wyniki, jeśli wykonasz kilka zadań w mniejszych krokach. Aby poprawić wyniki, utwórz bazę danych i skonfiguruj uwierzytelnianie i autoryzację przed rozpoczęciem pracy z usługą GitHub Copilot.

  1. Utwórz nowy czat i użyj następującego monitu:

    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.
    

    Zastąp <db-username> i <password> odpowiednio wybraną nazwą użytkownika bazy danych i hasłem.

  2. Na maszynach z systemem Windows zalecanym rozwiązaniem w zakresie zabezpieczeń jest przechowywanie nazwy użytkownika i hasła bazy danych w pliku lokalnym:

    %APPDATA%\postgresql\pgpass.conf

    Zwykle spowoduje to rozwiązanie następującej lokalizacji na dysku twardym:

    c:\Users\<username>\AppSettings\Roaming\postgresql\pgpass.conf

    Zastąp element <username> nazwą użytkownika systemu Windows.

    Plik powinien mieć następujący format:

    localhost:5432:<database-name>:<database-user>:<password>
    

    Zakłada się, że pracujesz z instancją PostgreSQL na lokalnym komputerze i że jest ona dostępna na domyślnym porcie (5432).

    Zastąp <database-name> elementem contacts oraz zastąp <db-username> i <password> poświadczeniami użytymi w poprzednim kroku.

    Aby uzyskać więcej informacji na temat pgpass.conf pliku, zobacz dokumentację bazy danych PostgreSQL.

  3. Dodaj ścieżkę do pliku pgpass.conf do zmiennej środowiskowej PATH.

  4. Przetestuj połączenie, aby upewnić się, że działa. Użyj interfejsu wiersza polecenia psql, aby przetestować go za pomocą następującego polecenia:

    psql -h localhost -U <db-username> -d contacts
    

    Zastąp element <db-username> segmentem nazwy użytkownika bazy danych w pgpass.conf pliku.

    pgpass.conf Jeśli element nie został poprawnie skonfigurowany, zostanie wyświetlony monit o wpisenie hasła.

Generowanie aplikacji przy użyciu narzędzia GitHub Copilot

Najpierw należy podać instrukcje i wskazówki dotyczące kompilowania i testowania aplikacji na komputerze lokalnym.

  1. W programie Visual Studio Code użyj przycisku Przełącz czat na pasku tytułu, aby otworzyć okno czatu. Użyj ikony Nowy czat, aby utworzyć nową sesję czatu.

  2. W obszarze czatu wybierz tryb Agent. W momencie pisania tego tekstu Claude Sonnet 4 daje najlepsze wyniki. Użyj najlepszego modelu dostępnego na potrzeby generowania kodu.

  3. Użyj następującego monitu, aby rozpocząć generowanie aplikacji:

    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.
    

    Monit zawiera następujące funkcje:

    • Typ aplikacji, którą chcesz utworzyć. W takim przypadku aplikacja do zarządzania kontaktami.
    • Technologie do użycia. W tym przypadku Django i PostgreSQL.
    • Architektura lokacji, którą chcesz wygenerować. W takim przypadku aplikacja w stylu CRUD, która zawiera stronę zawierającą listę wszystkich kontaktów i umożliwia przechodzenie do szczegółów określonego kontaktu.
    • Więcej szczegółów dotyczących domeny problemu. W takim przypadku należy podać pola danych, którymi aplikacja ma zarządzać, w tym imię i nazwisko kontaktu, adres i numer telefonu.
    • Szczegółowe instrukcje dotyczące bazy danych. W takim przypadku instruujesz GitHub Copilot, aby korzystał z określonej bazy danych, którą już utworzono, podajesz stan tej bazy danych oraz sposób wchodzenia z nią w interakcję
    • Konkretne instrukcje dotyczące środowiska. W takim przypadku polecasz mu używanie Git Bash. Informujesz również, że chcesz wykonać pracę w środowisku języka Python (venv), co jest najlepszym rozwiązaniem. GitHub Copilot może samodzielnie wybrać te opcje, ale ich jednoznaczne określenie sprawia, że proces przebiega sprawnie.
    • Wyraźne oczekiwanie, że ma wykonać samodzielnie jak najwięcej pracy. W przeciwnym razie GitHub Copilot może przedstawić instrukcje, które należy wykonać.
    • Jawne oczekiwania dotyczące instrukcji/kontekstu. Jeśli wymaga to od Ciebie wykonania innych działań, dajesz do zrozumienia, że potrzebujesz, aby Ci w tym pomogło, podając instrukcje i wskazówki.

    Ważne

    Gdy narzędzie GitHub Copilot używa terminalu do utworzenia nowego środowiska wirtualnego, program Visual Studio Code wykrywa venv i wyświetla okno dialogowe z pytaniem, czy chcesz go użyć. Ignoruj to okno dialogowe. To znika. Zezwól usłudze GitHub Copilot na używanie terminalu wyłącznie dla tej operacji.

    Narzędzie GitHub Copilot używa wbudowanego terminalu i środowiska programu Visual Studio Code do:

    • Tworzenie środowiska wirtualnego języka Python
    • Instalowanie bibliotek i innych zależności
    • Generowanie plików kodu
    • Generowanie tabel bazy danych
    • Generowanie plików readme w celu uzyskania dalszych instrukcji
    • Tworzenie danych testowych
    • Uruchamianie lokalnego serwera internetowego
    • Testowanie witryny internetowej (przy użyciu przeglądarki Simple Browser lub curl)

    Ze względu na sposób generowania kodu przez moduł LLM, używane polecenia i tworzone przez niego elementy są różne za każdym razem.

Wdrażanie na platformie Azure za pomocą narzędzia GitHub Copilot dla platformy Azure

Gdy narzędzie GitHub Copilot wygeneruje witrynę lokalnie, utworzysz monit z prośbą o wprowadzenie zmian w witrynie w ramach przygotowań do wdrożenia, a następnie do wykonania wdrożenia. Rozszerzenie GitHub Copilot dla platformy Azure realizuje to żądanie, tworząc pliki Bicep, a następnie uruchamiając je za pomocą interfejsu wiersza polecenia azd.

Użyj następującego monitu... Możesz skopiować do Notatnika i zmienić dowolną wartość w nawiasach, takich jak <resource-group-name> i <region-name> następnie skopiować i wkleić do czatu 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.

Monit zawiera następujące funkcje:

  • Określone usługi, których chcesz użyć. W takim przypadku informujesz, że chcesz użyć usługi Azure App Service, serwera elastycznego Azure PostgreSQL, łącznika usługi. Polecasz mu również, aby „zrobił wszystko inne, co konieczne”, żeby mieć pewność, że będzie działać.
  • Określone opcje usługi. W takim przypadku należy wskazać, że chcesz użyć najmniej kosztownej opcji dla każdej usługi.
  • Podpowiedź na prawdopodobne następne kroki. W takim przypadku sugerujesz, że w celu korzystania z łącznika usługi konieczne jest wprowadzenie pewnych modyfikacji kodu.
  • Przewidywanie decyzji z wyprzedzeniem. W takim przypadku należy podać wartości wymaganych ustawień, na przykład nazwę środowiska dla azd,
  • Jasno określone oczekiwania, że ma wykonywać jak najwięcej pracy samodzielnie. W przeciwnym razie może wyświetlić instrukcje do wykonania.
  • Jawne oczekiwania dotyczące instrukcji/kontekstu. Określ oczekiwanie, że potrzebujesz pomocy i wskazówek, gdy zostanie wyświetlony monit o podjęcie działań.
  • Pyta, czy potrzebne są dodatkowe wyjaśnienia. Często dotyczy to potencjalnych problemów, takich jak przypadki brzegowe lub niejasne instrukcje.
  • Żąda planu z listą ZADAŃ DO WYKONANIA. Daje pewność, że GitHub Copilot dla platformy Azure rozumie zadanie i zamierza je zrealizować zgodnie z Twoimi założeniami.

Narzędzie GitHub Copilot używa wbudowanego terminalu i środowiska programu Visual Studio Code do:

  • Zaktualizuj pliki kodu, aby obsługiwały Service Connector
  • Generowanie plików Bicep
  • Uruchom interfejs wiersza poleceń azd
  • Testowanie wdrożenia
  • W razie potrzeby debugowanie wdrożenia przy użyciu dzienników lub innych danych wyjściowych

Interakcja z usługą GitHub Copilot

Narzędzie GitHub Copilot wymaga danych wejściowych przed wykonaniem wielu zadań. Chwila na wprowadzenie danych to okazja, by skorygować kierunek działania GitHub Copilot i w ten sposób zapobiec błędom lub dostosować generowane wyniki do swoich preferencji.

Podczas działania możesz przeglądać i akceptować większość wyświetlanych pytań za pomocą przycisku Continue.

Ważne

Jeśli otrzymasz nieoczekiwane wyniki, uruchom ponownie przy użyciu nowej sesji czatu.

Czasami wymagane jest podanie danych wejściowych. Jest kilka odrębnych momentów, w których pojawia się monit o wprowadzenie danych:

  • Poświadczenia użytkownika — jeśli bieżąca operacja w terminalu wymaga nazwy użytkownika lub hasła, zostanie wyświetlony monit o podanie tych informacji.
  • Moment decyzji — od czasu do czasu narzędzie GitHub Copilot udostępnia kilka opcji na liście i zadaje pytanie, które wolisz.
  • Paleta poleceń — od czasu do czasu narzędzie GitHub Copilot używa funkcji rozszerzenia, a opcje są wyświetlane w palecie poleceń. Po dokonaniu odpowiednich wyborów usługa GitHub Copilot będzie kontynuowana.
  • Logowanie interakcyjne — narzędzia Azure CLI i azd CLI wymagają uwierzytelnienia i inicjują jeden z kilku mechanizmów uwierzytelniania.

Testuj i poproś o zmiany

Gdy GitHub Copilot zakończy pracę, może uznać, że witryna jest kompletna i funkcjonalna. Jednak testowanie może wykryć problemy lub nieoczekiwane/ niepożądane funkcje aplikacji.

Użyj monitów, które opisują problem z jak największą ilością szczegółów. Jeśli na przykład aplikacja nie działa, podaj jak najwięcej informacji, w tym dokładny komunikat o błędzie i oczekiwany wynik.

Przerywanie przepływu

Czasami możesz zauważyć, że GitHub Copilot albo utknął w pętli, próbując wielokrotnie wykonywać te same zadania, albo utknął w procesie, który nigdy się nie kończy. Na przykład podczas diagnozowania problemów z witryną internetową narzędzie GitHub Copilot może chcieć uruchomić polecenie takie jak:

az webapp log tail

Gdy narzędzie GitHub Copilot jest zablokowane, możesz przerwać uwierzytelnianie w usłudze GitHub Copilot na jeden z kilku sposobów:

  • Ctrl+C
  • Użyj przycisku wstrzymywania w czacie
  • Kończ sesję czatu i rozpocznij nowy czat

Ważne

Zakończenie sesji czatu niszczy cały kontekst utworzony podczas sesji, co może być lub nie jest pożądane.

Aby nadać temu kontekst tego, co właśnie się wydarzyło, i naprowadzić go na możliwe rozwiązanie, możesz dodać monit natychmiast po przerwaniu działania GitHub Copilot, na przykład:

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.