W tym artykule pokazano, jak wdrożyć i uruchomić aplikację do czatu z użyciem własnego przykładu danych w języku Python. Ten przykład implementuje aplikację czatu, używając języka Python, usługi Azure OpenAI Service oraz pobierania rozszerzonej generacji (RAG) w Azure AI Search, aby uzyskać odpowiedzi na pytania dotyczące świadczeń pracowniczych w fikcyjnej firmie. Aplikacja jest wypełniana plikami PDF, które zawierają podręcznik pracownika, dokument korzyści oraz listę ról i oczekiwań firmy.
Obejrzyj następujący film demonstracyjny.
Postępując zgodnie z instrukcjami w tym artykule, wykonasz następujące czynności:
- Wdrażanie aplikacji czatu na platformie Azure.
- Uzyskaj odpowiedzi na temat świadczeń pracowników.
- Zmień ustawienia, aby zmienić zachowanie odpowiedzi.
Po zakończeniu tej procedury możesz rozpocząć modyfikowanie nowego projektu przy użyciu kodu niestandardowego.
Ten artykuł jest częścią kolekcji artykułów, w których pokazano, jak utworzyć aplikację czatu przy użyciu usług Azure OpenAI i Azure AI Search.
Inne artykuły w kolekcji obejmują:
Uwaga
W tym artykule użyto jednego lub więcej szablonów aplikacji AI jako podstawy dla przykładów i wskazówek w artykule. Szablony aplikacji sztucznej inteligencji zapewniają dobrze utrzymywane implementacje referencyjne, które można łatwo wdrożyć. Pomagają one zapewnić wysokiej jakości punkt wyjścia dla aplikacji sztucznej inteligencji.
Na poniższym diagramie przedstawiono prostą architekturę aplikacji do czatu.
Kluczowe składniki architektury obejmują:
Aplikacja internetowa do hostowania interaktywnego środowiska czatu.
Zasób usługi Azure AI Search, aby uzyskać odpowiedzi na podstawie własnych danych.
Usługa Azure OpenAI w celu zapewnienia:
- Słowa kluczowe w celu ulepszenia wyszukiwania na własnych danych.
- Odpowiedzi z modelu Azure OpenAI.
- Wektory z modelu
ada
.
Większość zasobów w tej architekturze używa warstwy cenowej podstawowa lub zużycie. Ceny użycia są oparte na użyciu, co oznacza, że płacisz tylko za to, czego używasz. Do ukończenia tego artykułu jest naliczana opłata, ale jest minimalna. Po zakończeniu pracy z artykułem możesz usunąć zasoby, aby zatrzymać naliczanie opłat.
Dowiedz się więcej o kosztach w repozytorium przykładowym.
Środowisko kontenera deweloperskiego jest dostępne ze wszystkimi zależnościami wymaganymi do ukończenia tego artykułu. Kontener deweloperski można uruchomić w usłudze GitHub Codespaces (w przeglądarce) lub lokalnie przy użyciu programu Visual Studio Code.
Aby użyć tego artykułu, potrzebne są następujące wymagania wstępne.
- Subskrypcja platformy Azure.
Utwórz jeden za darmo.
- Uprawnienia konta platformy Azure. Konto platformy Azure musi mieć uprawnienia
Microsoft.Authorization/roleAssignments/write
, takie jak Administrator dostępu użytkowników lub Właściciel .
- Konto usługi GitHub.
- Subskrypcja platformy Azure.
Utwórz jeden za darmo.
- Uprawnienia konta platformy Azure. Konto platformy Azure musi mieć uprawnienia
Microsoft.Authorization/roleAssignments/write
, takie jak Administrator dostępu użytkowników lub Właściciel .
-
Azure Developer CLI.
-
Docker Desktop. Uruchom program Docker Desktop, jeśli jeszcze nie jest uruchomiony.
-
programu Visual Studio Code.
- rozszerzenie Dev Containers.
Otwieranie środowiska projektowego
Skorzystaj z poniższych instrukcji, aby wdrożyć wstępnie skonfigurowane środowisko programistyczne zawierające wszystkie wymagane zależności, aby ukończyć ten artykuł.
GitHub Codespaces uruchamia kontener deweloperski zarządzany przez GitHub z Visual Studio Code dla sieci Web jako interfejsem użytkownika. W przypadku najprostszego środowiska programistycznego użyj usługi GitHub Codespaces, aby wstępnie zainstalować odpowiednie narzędzia deweloperskie i zależności, aby ukończyć ten artykuł.
Ważne
Wszystkie konta GitHub mogą korzystać z GitHub Codespaces do 60 godzin miesięcznie bezpłatnie, z dwoma podstawowymi instancjami. Aby uzyskać więcej informacji, zobacz miesięczne miejsce magazynowe i godziny rdzeni usługi GitHub Codespaces.
Rozpocznij proces tworzenia nowej przestrzeni kodowania GitHub w gałęzi main
w repozytorium GitHub Azure-Samples/azure-search-openai-demo.
Kliknij prawym przyciskiem myszy poniższy przycisk i wybierz pozycję Otwórz link w nowych oknach, aby mieć środowisko programistyczne i dokumentację dostępną w tym samym czasie.
Na stronie Utwórz przestrzeń kodu przejrzyj ustawienia konfiguracji przestrzeni kodu, a następnie wybierz Utwórz przestrzeń kodu.
Poczekaj na uruchomienie środowiska kodu. Ten proces uruchamiania może potrwać kilka minut.
W terminalu w dolnej części ekranu zaloguj się do platformy Azure przy użyciu interfejsu wiersza polecenia dla deweloperów platformy Azure:
azd auth login --use-device-code
Skopiuj kod z terminalu, a następnie wklej go w przeglądarce. Postępuj zgodnie z instrukcjami, aby uwierzytelnić się przy użyciu konta platformy Azure.
Pozostałe zadania w tym artykule mają miejsce w kontekście tego kontenera deweloperskiego.
Rozszerzenie Dev Containers dla programu Visual Studio Code wymaga zainstalowania platformy Docker na komputerze lokalnym. Rozszerzenie lokalnie hostuje kontener deweloperski, używając hosta platformy Docker z odpowiednimi narzędziami deweloperskimi i zależnościami zainstalowanymi wstępnie w celu ukończenia tego artykułu.
Utwórz nowy katalog lokalny na komputerze dla projektu:
mkdir my-intelligent-app && cd my-intelligent-app
Otwórz program Visual Studio Code w tym katalogu:
code .
Otwórz nowy terminal w programie Visual Studio Code.
Uruchom następujące polecenie AZD
, aby przenieść repozytorium GitHub na komputer lokalny:
azd init -t azure-search-openai-demo
Otwórz paletę poleceń Command i wyszukaj, a następnie wybierz Dev Containers: Otwórz folder w kontenerze, aby otworzyć projekt w kontenerze deweloperskim. Przed kontynuowaniem poczekaj na otwarcie kontenera deweloperskiego.
Zaloguj się do platformy Azure przy użyciu interfejsu wiersza polecenia dla deweloperów platformy Azure:
azd auth login
Skopiuj kod z terminalu, a następnie wklej go w przeglądarce. Postępuj zgodnie z instrukcjami, aby uwierzytelnić się przy użyciu konta platformy Azure.
Pozostałe ćwiczenia w tym projekcie mają miejsce w kontekście tego kontenera deweloperskiego.
Przykładowe repozytorium zawiera cały kod i pliki konfiguracyjne potrzebne do wdrożenia aplikacji czatu na platformie Azure. W poniższych krokach przedstawiono proces wdrażania przykładu na platformie Azure.
Wdrażanie aplikacji czatu na platformie Azure
Ważne
Zasoby platformy Azure utworzone w tej sekcji powodują natychmiastowe koszty, głównie z zasobu usługi Azure AI Search. Nawet jeśli przerwiesz działanie polecenia przed jego pełnym wykonaniem, te zasoby mogą naliczać koszty.
Uruchom następujące polecenie interfejsu wiersza polecenia dla deweloperów platformy Azure, aby aprowizować zasoby platformy Azure i wdrożyć kod źródłowy:
azd up
Jeśli zostanie wyświetlony monit o wprowadzenie nazwy środowiska, pozostaw ją krótką i użyj małych liter. Przykładem jest myenv
. Jest ona używana jako część nazwy grupy zasobów.
Po wyświetleniu monitu wybierz subskrypcję, w której chcesz utworzyć zasoby.
Po wyświetleniu monitu o wybranie lokalizacji po raz pierwszy wybierz lokalizację w pobliżu. Ta lokalizacja jest używana dla większości zasobów, w tym hostingu.
Jeśli zostanie wyświetlony monit o lokalizację modelu azure OpenAI lub zasobu analizy dokumentów usługi Azure AI, wybierz lokalizację znajdującą się najbliżej Ciebie. Jeśli ta sama lokalizacja jest dostępna jako pierwsza lokalizacja, wybierz tę lokalizację.
Poczekaj 5 lub 10 minut po wdrożeniu aplikacji, zanim przejdziesz dalej.
Po pomyślnym wdrożeniu aplikacji w terminalu zostanie wyświetlony adres URL.
Wybierz adres URL z etykietą (✓) Done: Deploying service webapp
, aby otworzyć aplikację czatu w przeglądarce.
Uzyskiwanie odpowiedzi z plików PDF przy użyciu aplikacji do czatu
Aplikacja do czatu zawiera wstępnie załadowane informacje o korzyściach dla pracowników z plików PDF. Możesz użyć aplikacji do czatu, aby zadawać pytania dotyczące korzyści. Poniższe kroki przeprowadzą Cię przez proces korzystania z aplikacji do czatu. Odpowiedzi mogą się różnić w miarę aktualizowania podstawowych modeli.
W przeglądarce wybierz lub wprowadź Co się dzieje podczas oceny pracy? w polu tekstowym czatu.
W odpowiedzi wybierz cytat.
W okienku po prawej stronie użyj kart, aby dowiedzieć się, jak została wygenerowana odpowiedź.
Karta |
opis |
Proces myślowy |
Ta karta jest skryptem interakcji w czacie. Możesz wyświetlić monit systemowy (content ) i pytanie użytkownika (content ). |
Zawartość pomocnicza |
Ta karta zawiera informacje potrzebne do odpowiedzi na pytanie oraz materiał źródłowy. Liczba cytatów materiałów źródłowych jest zanotowana w ustawieniach dewelopera . Wartość domyślna to 3. |
Odsyłacz bibliograficzny |
Na tej karcie zostanie wyświetlona oryginalna strona zawierająca cytat. |
Po zakończeniu wybierz kartę ponownie, aby zamknąć okienko.
Zmienianie zachowania odpowiedzi przy użyciu ustawień aplikacji czatu
Inteligencja czatu jest określana przez model Azure OpenAI oraz ustawienia używane do interakcji z modelem.
Ustawienie |
opis |
Szablon zastępowania monitu |
Zastępuje monit użyty do wygenerowania odpowiedzi na podstawie pytania i wyników wyszukiwania. |
temperatura |
Ustawia temperaturę żądania dla dużego modelu językowego (LLM), który generuje odpowiedź. Wyższe temperatury powodują bardziej kreatywne reakcje, ale mogą być mniej uziemione. |
nasion |
Ustawia ziarno, aby poprawić powtarzalność odpowiedzi modelu. Inicjator może być dowolną liczbą całkowitą. |
Minimalna ocena wyszukiwania |
Ustawia minimalny wynik dla wyników wyszukiwania, które pochodzą z usługi Azure AI Search. Zakres wyników zależy od tego, czy używasz hybrydowego (domyślnego), tylko wektorów lub tylko tekstu. |
Minimalny wynik ponownego rangowania |
Ustawia minimalny wynik dla wyników wyszukiwania, które pochodzą z semantycznego ponownego klasyfikatora. Wynik zawsze mieści się w zakresie od 0 do 4. Im wyższy wynik, tym bardziej semantycznie istotne jest pytanie. |
pobierz te wiele wyników wyszukiwania |
Ustawia liczbę wyników wyszukiwania do pobrania z usługi Azure AI Search. Więcej wyników może zwiększyć prawdopodobieństwo znalezienia poprawnej odpowiedzi. Ale więcej wyników może również prowadzić do tego, że model "zgubił się w środku". Możesz zobaczyć te źródła na kartach Proces myślowy i Zawartość pomocnicza cytatu. |
wyklucz kategorię |
Określa kategorię do wykluczenia z wyników wyszukiwania. W domyślnym zestawie danych nie są używane żadne kategorie. |
Użyj semantycznego rankera do wyszukiwania |
Włącza semantycznego rankera Azure AI Search, model, który przestawia wyniki wyszukiwania na podstawie semantycznego podobieństwa do zapytania użytkownika. |
Używaj semantycznych napisów |
Wysyła podpisy semantyczne do usługi LLM zamiast pełnego wyniku wyszukiwania. Semantyczny podpis jest wyodrębniany z wyniku wyszukiwania podczas procesu klasyfikacji semantycznej. |
Sugerowanie pytań dodatkowych |
Zadaje usłudze LLM sugestię pytań, które należy wykonać na podstawie zapytania użytkownika. |
trybu pobierania |
Ustawia tryb pobierania dla zapytania usługi Azure AI Search.
Vectors + Text (Hybrid) używa kombinacji wyszukiwania wektorowego i wyszukiwania pełnotekstowego.
Vectors używa tylko wyszukiwania wektorów.
Tekst używa wyszukiwania tylko pełnotekstowego. Hybryda jest optymalna. |
odpowiedzi na zakończenie czatu usługi Stream |
Ciągle transmituje wygenerowaną odpowiedź do interfejsu czatu. |
Poniższe kroki przeprowadzą Cię przez proces zmieniania ustawień.
W przeglądarce wybierz kartę Ustawienia dewelopera.
Zaznacz pole wyboru Zasugeruj pytania dotyczące kontynuacji i zadaj to samo pytanie ponownie.
What happens in a performance review?
Rozmowa zwróciła sugerowane pytania dotyczące kontynuacji, takie jak następujące przykłady:
1. What is the frequency of performance reviews?
2. How can employees prepare for a performance review?
3. Can employees dispute the feedback received during the performance review?
Na karcie Ustawienia wyczyść pole wyboru Użyj semantycznego rankera do pobierania.
Zadaj to samo pytanie ponownie.
What happens in a performance review?
Jaka jest różnica w odpowiedziach?
-
z wykorzystaniem semantycznego rankera: Podczas przeglądu wydajności w firmie Contoso Electronics pracownicy mają możliwość omówienia swoich sukcesów i wyzwań w miejscu pracy (1). Przegląd zawiera pozytywne i konstruktywne opinie, które pomagają pracownikom rozwijać się i wzrastać w swoich rolach (1). Pracownik otrzymuje pisemne podsumowanie oceny wyników, które zawiera ocenę jego pracy, informacje zwrotne oraz cele i zadania na nadchodzący rok (1). Przegląd wydajności to dwukierunkowy dialog między menedżerami a pracownikami (1).
-
bez semantycznego rankera: Podczas oceny wyników w firmie Contoso Electronics pracownicy mają możliwość omówienia swoich osiągnięć i trudności w miejscu pracy. Pozytywna i konstruktywna informacja zwrotna jest udzielana, aby pomóc pracownikom w rozwoju i wzrostu w ich rolach. Podano pisemne podsumowanie przeglądu wydajności, w tym ocenę wydajności, opinii i celów w nadchodzącym roku. Przegląd jest dwukierunkowym dialogiem między menedżerami a pracownikami (1).
Poniższe kroki przeprowadzą Cię przez proces czyszczenia użytych zasobów.
Czyszczenie zasobów platformy Azure
Zasoby platformy Azure utworzone w tym artykule są rozliczane z subskrypcją platformy Azure. Jeśli nie spodziewasz się, że te zasoby będą potrzebne w przyszłości, usuń je, aby uniknąć naliczania dodatkowych opłat.
Uruchom następujące polecenie interfejsu wiersza polecenia dla deweloperów platformy Azure, aby usunąć zasoby platformy Azure i usunąć kod źródłowy:
azd down --purge --force
Przełączniki zapewniają:
-
purge
: Usunięte zasoby są natychmiast usuwane, aby można było ponownie przydzielić tokeny usługi Azure OpenAI w ramach limitu na minutę.
-
force
: Usunięcie odbywa się cicho, bez konieczności wyrażania zgody użytkownika.
Czyszczenie usług GitHub Codespaces i Visual Studio Code
-
GitHub Codespaces
-
Visual Studio Code
Usunięcie środowiska GitHub Codespaces gwarantuje, że możesz zmaksymalizować ilość bezpłatnych godzin przypadających na rdzeń, przysługujących twojemu kontu.
Zaloguj się do pulpitu nawigacyjnego usługi GitHub Codespaces.
Znajdź aktualnie uruchomione codespaces pochodzące z repozytorium GitHub Azure-Samples/azure-search-openai-demo.
Otwórz menu kontekstowe dla przestrzeni kodu, a następnie wybierz pozycję Usuń.
Nie musisz czyścić środowiska lokalnego, ale możesz wstrzymać działający kontener deweloperski i wrócić do uruchamiania programu Visual Studio Code w kontekście lokalnego obszaru roboczego.
Otwórz paletę poleceń i wyszukaj polecenia dla Dev Containers.
Wybierz Dev Containers: Otwórz folder lokalnie ponownie.
Napiwek
Visual Studio Code zatrzymuje kontener deweloperski uruchomiony, ale kontener nadal istnieje w Dockerze w stanie zatrzymanym. Zawsze możesz usunąć wystąpienie kontenera, obraz kontenera i woluminy z Dockera, aby zwolnić więcej miejsca na maszynie lokalnej.
To przykładowe repozytorium oferuje informacje dotyczące rozwiązywania problemów.
Jeśli twój problem nie został rozwiązany, dodaj go do sekcji Issues w repozytorium.