Wprowadzenie do czatu przy użyciu własnego przykładu danych dla platformy .NET
W tym artykule pokazano, jak wdrożyć i uruchomić czat z własnymi danymi przykładowymi dla platformy .NET. W tym przykładzie zaimplementowano aplikację do czatu przy użyciu języka C#, usługi Azure OpenAI Service i pobierania rozszerzonej generacji (RAG) w usłudze Azure AI Search, aby uzyskać odpowiedzi na temat korzyści pracowników w fikcyjnej firmie. Aplikacja czatu korzyści dla pracowników jest wypełniana plikami PDF, w tym podręcznikiem pracownika, dokumentem korzyści i listą ról i oczekiwań firmy.
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 wykonaniu 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ę do czatu przy użyciu usługi Azure Open AI Service i usługi Azure AI Search.
Inne artykuły w kolekcji obejmują:
Omówienie architektury
W tej przykładowej aplikacji fikcyjna firma o nazwie Contoso Electronics udostępnia pracownikom środowisko aplikacji do czatów, które zadaje pytania dotyczące korzyści, zasad wewnętrznych, a także opisów i ról.
Architektura aplikacji do czatu jest pokazana na poniższym diagramie:
- Interfejs użytkownika — interfejs czatu aplikacji jest aplikacją zestawu WebAssembly platformy Blazor. Ten interfejs akceptuje zapytania użytkownika, kieruje żądania do zaplecza aplikacji i wyświetla wygenerowane odpowiedzi.
- Zaplecze — zaplecze aplikacji jest interfejsem API ASP.NET Core Minimum. Zaplecze hostuje statyczną aplikację internetową Platformy Blazor i organizuje interakcje między różnymi usługami. Usługi używane w tej aplikacji obejmują:
- Azure Cognitive Search — indeksuje dokumenty z danych przechowywanych na koncie usługi Azure Storage. Dzięki temu dokumenty można wyszukiwać przy użyciu funkcji wyszukiwania wektorowego.
- Usługa Azure OpenAI — udostępnia duże modele językowe (LLM) do generowania odpowiedzi. Semantyczne jądro jest używane w połączeniu z usługą Azure OpenAI Service w celu organizowania bardziej złożonych przepływów pracy sztucznej inteligencji.
Koszt
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. Aby ukończyć ten artykuł, zostanie naliczona opłata, ale będzie ona minimalna. Po zakończeniu pracy z artykułem możesz usunąć zasoby, aby zatrzymać naliczanie opłat.
Aby uzyskać więcej informacji, zobacz Azure Samples: Cost in the sample repo (Przykłady platformy Azure: koszt w repozytorium przykładowym).
Wymagania wstępne
Ś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 postępować zgodnie z tym artykułem, potrzebne są następujące wymagania wstępne:
- Subskrypcja platformy Azure — utwórz bezpłatnie
- Uprawnienia konta platformy Azure — Twoje konto platformy Azure musi mieć uprawnienia Microsoft.Authorization/roleAssignments/write, takie jak administrator dostępu użytkowników lub właściciel.
- Dostęp jest udzielany usłudze Azure OpenAI w żądanej subskrypcji platformy Azure. Obecnie dostęp do tej usługi jest udzielany tylko przez aplikację. Możesz ubiegać się o dostęp do usługi Azure OpenAI, wypełniając formularz pod adresem https://aka.ms/oai/access. Otwórz problem w tym repozytorium, aby skontaktować się z nami, jeśli masz problem.
- Konto usługi GitHub
Otwieranie środowiska projektowego
Rozpocznij teraz od środowiska programistycznego, które ma zainstalowane wszystkie zależności, aby ukończyć ten artykuł.
Usługa GitHub Codespaces uruchamia kontener deweloperski zarządzany przez usługę GitHub za pomocą programu Visual Studio Code dla sieci Web jako interfejsu 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 usługi GitHub mogą korzystać z usługi Codespaces przez maksymalnie 60 godzin bezpłatnych każdego miesiąca z 2 podstawowymi wystąpieniami. Aby uzyskać więcej informacji, zobacz GitHub Codespaces monthly included storage and core hours (Miesięczne miejsca do magazynowania i godzin rdzeni usługi GitHub Codespaces).
Rozpocznij proces tworzenia nowego repozytorium GitHub Codespace
main
wAzure-Samples/azure-search-openai-demo-csharp
gałęzi repozytorium GitHub.Kliknij prawym przyciskiem myszy poniższy przycisk i wybierz pozycję Otwórz link w nowych oknach , aby jednocześnie udostępnić środowisko programistyczne i dokumentację.
Na stronie Tworzenie przestrzeni kodu przejrzyj ustawienia konfiguracji przestrzeni kodu, a następnie wybierz pozycję Utwórz nową przestrzeń kodu:
Poczekaj na uruchomienie przestrzeni 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
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.
Wdrażanie i uruchamianie
Przykładowe repozytorium zawiera wszystkie pliki kodu i konfiguracji, które należy wdrożyć 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. Te zasoby mogą naliczać koszty nawet w przypadku przerwania działania polecenia przed jego pełnym wykonaniem.
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
Po wyświetleniu monitu o wprowadzenie nazwy środowiska zachowaj krótkie i małe litery. Na przykład
myenv
. Jest używana jako część nazwy grupy zasobów.Po wyświetleniu monitu wybierz subskrypcję, w ramach których 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 OpenAI, wybierz lokalizację znajdującą się blisko Ciebie. Jeśli ta sama lokalizacja jest dostępna jako pierwsza lokalizacja, wybierz tę lokalizację.
Poczekaj na wdrożenie aplikacji. Ukończenie wdrożenia może potrwać do 20 minut.
Po pomyślnym wdrożeniu aplikacji w terminalu zostanie wyświetlony adres URL.
Wybierz ten adres URL oznaczony
Deploying service web
etykietą, aby otworzyć aplikację czatu w przeglądarce.
Uzyskiwanie odpowiedzi z plików PDF przy użyciu aplikacji do czatu
Aplikacja do czatu jest wstępnie ładowana z informacjami o korzyściach 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.
W przeglądarce przejdź do strony Czat przy użyciu nawigacji po lewej stronie.
W polu tekstowym czatu wybierz lub wprowadź "Co jest uwzględnione w planie Northwind Health Plus, który nie jest standardowy?" Odpowiedź jest podobna do poniższej ilustracji.
W odpowiedzi wybierz cytat. Zostanie otwarte okno podręczne z wyświetlonym źródłem informacji.
Przejdź między kartami w górnej części pola odpowiedzi, aby dowiedzieć się, jak została wygenerowana odpowiedź.
Karta opis Proces myślowy Jest to skrypt interakcji w czacie. Możesz wyświetlić monit systemowy ( content
) i pytanie użytkownika (content
).Zawartość pomocnicza Obejmuje to informacje, aby odpowiedzieć na twoje pytanie i 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 Spowoduje to wyświetlenie strony źródłowej zawierającej cytat. Po zakończeniu przejdź z powrotem do karty odpowiedzi.
Zmienianie zachowania odpowiedzi przy użyciu ustawień aplikacji czatu
Analiza czatu jest określana przez model OpenAI i ustawienia używane do interakcji z modelem.
Ustawienie | opis |
---|---|
Zastępowanie szablonu monitu | Jest to monit używany do wygenerowania odpowiedzi. |
Pobieranie tych wielu wyników wyszukiwania | Jest to liczba wyników wyszukiwania, które są używane do generowania odpowiedzi. Te źródła są widoczne na karcie Proces myślowy i Zawartość pomocnicza cytatu. |
Wyklucz kategorię | Jest to kategoria dokumentów wykluczonych z wyników wyszukiwania. |
Używanie semantycznego rangatora do pobierania | Jest to funkcja usługi Azure AI Search , która używa uczenia maszynowego do poprawy istotności wyników wyszukiwania. |
Tryb pobierania | Wektory + tekst oznacza, że wyniki wyszukiwania są oparte na tekście dokumentów i osadzaniu dokumentów. Wektory oznaczają, że wyniki wyszukiwania są oparte na osadzaniu dokumentów. Tekst oznacza, że wyniki wyszukiwania są oparte na tekście dokumentów. |
Używanie podsumowań kontekstowych zapytań zamiast całych dokumentów | Po zaznaczeniu obu Use semantic ranker elementów i Use query-contextual summaries funkcja LLM używa podpisów wyodrębnionych z kluczowych fragmentów, zamiast wszystkich fragmentów, w dokumentach o najwyższej klasyfikacji. |
Sugerowanie pytań dotyczących kontynuacji | Zasugeruj aplikację czatu na podstawie odpowiedzi na następujące pytania. |
Poniższe kroki przeprowadzą Cię przez proces zmieniania ustawień.
W przeglądarce wybierz ikonę koła zębatego w prawym górnym rogu strony.
Jeśli to nie jest zaznaczone, zaznacz pole wyboru Zasugeruj pytania dotyczące kontynuacji i zadawaj to samo pytanie ponownie.
What is included in my Northwind Health Plus plan that is not in standard?
Czat może zwracać sugestie dotyczące kolejnych pytań.
Na karcie Ustawienia usuń zaznaczenie pozycji Użyj semantycznego rangi do pobierania.
Zadaj to samo pytanie ponownie.
What is my deductible?
Jaka jest różnica w odpowiedziach?
Odpowiedź, która użyła klasyfikatora semantycznego, dostarczyła jedną odpowiedź. Odpowiedź bez semantycznego rankingu zwróciła mniej bezpośrednią odpowiedź.
Czyszczenie 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
Czyszczenie usługi GitHub Codespaces
Usunięcie środowiska Usługi GitHub Codespaces gwarantuje, że możesz zmaksymalizować ilość bezpłatnych godzin na godziny korzystania z konta.
Ważne
Aby uzyskać więcej informacji na temat uprawnień konta usługi GitHub, zobacz Artykuł GitHub Codespaces monthly included storage and core hours (Miesięczne miejsca do magazynowania i godzin rdzeni w usłudze GitHub).
Zaloguj się do pulpitu nawigacyjnego usługi GitHub Codespaces (https://github.com/codespaces).
Znajdź aktualnie uruchomione przestrzenie kodu pochodzące z
Azure-Samples/azure-search-openai-demo-csharp
repozytorium GitHub.Otwórz menu kontekstowe dla przestrzeni kodu, a następnie wybierz pozycję Usuń.
Uzyskaj pomoc
To przykładowe repozytorium oferuje informacje dotyczące rozwiązywania problemów.
Jeśli problem nie został rozwiązany, zarejestruj problem w repozytorium Problemy.
Następne kroki
- Pobierz kod źródłowy przykładu użytego w tym artykule
- Tworzenie aplikacji do czatu przy użyciu architektury rozwiązania najlepszych rozwiązań usługi Azure OpenAI
- Kontrola dostępu w aplikacjach generacyjnych sztucznej inteligencji za pomocą usługi Azure AI Search
- Tworzenie gotowego do użycia rozwiązania OpenAI dla przedsiębiorstw za pomocą usługi Azure API Management
- Wyszukiwanie wektorów przewyższających przy użyciu funkcji pobierania hybrydowego i klasyfikowania