Wprowadzenie do czatu przy użyciu własnego przykładu danych dla języka Java

W tym artykule pokazano, jak wdrożyć i uruchomić Próbkę czatu z danymi dla języka Java. Ten przykład zastosowania aplikacji czatu za pomocą języka Java, modeli Azure OpenAI w rozwiązaniu Microsoft Foundry oraz pobierania rozszerzonej generacji (RAG) w usłudze Wyszukiwanie AI platformy Azure, ma na celu uzyskiwanie odpowiedzi na temat świadczeń pracowniczych w fikcyjnej firmie. Aplikacja jest wypełniana plikami PDF, w tym podręcznikiem pracownika, dokumentem korzyści oraz listą ról i oczekiwań firmy.

W tym artykule wykonasz następujące zadania:

  • Wdrażanie aplikacji czatu na platformie Azure.
  • Uzyskaj odpowiedzi na temat świadczeń pracowników.
  • Zmień ustawienia, aby zmienić zachowanie odpowiedzi.

Po ukończeniu tego artykułu możesz rozpocząć modyfikowanie nowego projektu przy użyciu kodu niestandardowego.

Ten artykuł jest częścią kolekcji artykułów, które pokazują, jak utworzyć aplikację do czatu przy użyciu modeli Azure OpenAI w usługach Microsoft Foundry i Wyszukiwanie AI platformy Azure. Inne artykuły w kolekcji obejmują:

Uwaga

W tym artykule użyto jednego lub więcej szablonów aplikacji AI jako podstawy do przykładów i wskazówek w artykule. Szablony aplikacji sztucznej inteligencji zapewniają dobrze utrzymywane, łatwe w wdrażaniu implementacje referencyjne, które pomagają zapewnić wysokiej jakości punkt wyjścia dla aplikacji sztucznej inteligencji.

Omówienie architektury

Prosta architektura aplikacji do czatu jest pokazana na poniższym diagramie:

Diagram showing architecture from client to backend app.Diagram przedstawiający architekturę od klienta do aplikacji backendu.

Kluczowe składniki architektury obejmują:

  • Aplikacja internetowa do hostowania interaktywnego środowiska czatu.
  • Zasób usługi Wyszukiwanie AI platformy Azure, aby uzyskać odpowiedzi na podstawie własnych danych.
  • Usługa Azure OpenAI w celu zapewnienia:
    • Słowa kluczowe dla ulepszenia wyszukiwania w własnych danych.
    • Odpowiedzi z modelu OpenAI.
    • Osadzanie z modelu ada

Koszt

Większość zasobów używanych w tej architekturze należy do warstw cenowych opartych na użyciu lub podstawowych. Oznacza to, że płacisz tylko za to, czego używasz, a opłaty są zwykle minimalne podczas programowania lub testowania.

Aby ukończyć ten przykład, może wystąpić niewielki koszt korzystania z usług, takich jak Azure OpenAI, AI Search i Storage. Po zakończeniu oceny lub wdrożenia aplikacji możesz usunąć wszystkie zaaprowizowane zasoby, aby uniknąć bieżących opłat.

Dowiedz się więcej o kosztach w przykładowym repozytorium.

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 użyć tego artykułu, potrzebne są następujące wymagania wstępne:

  • Codespaces (zalecane)
  • Visual Studio Code
  • Subskrypcja platformy Azure — bezpłatnie utwórz jedną.
  • 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 .
  • Konto usługi GitHub.

Otwieranie środowiska projektowego

Zacznij od skonfigurowania środowiska deweloperskiego, które ma zainstalowane wszystkie zależności, aby ukończyć ten artykuł.

  • GitHub Codespaces (zalecane)
  • Visual Studio Code

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 dwoma podstawowymi wystąpieniami. Aby uzyskać więcej informacji, zobacz sekcję miesięczne magazynowanie i godziny rdzeni usługi GitHub Codespaces.

  1. 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ę.

    Otwórz w GitHub Codespaces

  2. Na stronie Tworzenie Codespace przejrzyj ustawienia konfiguracji Codespace, a następnie wybierz pozycję Utwórz Codespace.

    Screenshot of the confirmation screen before creating a new codespace.Zrzut ekranu przedstawiający ekran potwierdzenia przed utworzeniem nowej przestrzeni kodu.

  3. Poczekaj na uruchomienie przestrzeni kodowej. Ten proces uruchamiania może potrwać kilka minut.

  4. 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
    
  5. 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.

  6. Pozostałe zadania w tym artykule mają miejsce w kontekście tego kontenera deweloperskiego.

Wdrażanie i uruchamianie

Do wdrożenia aplikacji czatowej na platformie Azure potrzebujesz wszystkich plików kodu i konfiguracji, które znajdują się w przykładowym repozytorium. 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 — zwłaszcza usługa Wyszukiwanie AI platformy Azure — mogą zacząć naliczać opłaty natychmiast po aprowizacji, nawet jeśli wdrożenie zostanie przerwane przed zakończeniem. Aby uniknąć nieoczekiwanych opłat, monitoruj użycie platformy Azure i szybko usuwaj nieużywane zasoby po przetestowaniu.

  1. Aprowizuj zasoby platformy Azure i wdróż kod źródłowy, uruchamiając następujące polecenie:

    azd up
    
  2. Jeśli zostanie wyświetlony monit o wprowadzenie nazwy środowiska, zachowaj krótką i małą literę, na przykład myenv. Jest ona używana jako część nazwy grupy zasobów.

  3. Po wyświetleniu monitu wybierz subskrypcję, w ramach której chcesz utworzyć zasoby.

  4. 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.

  5. 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ę.

  6. Poczekaj na wdrożenie aplikacji, co może potrwać od 5 do 10 minut.

  7. Po pomyślnym wdrożeniu aplikacji w terminalu zostanie wyświetlony adres URL.

  8. Wybierz adres URL oznaczony Deploying service web, aby otworzyć aplikację czatu w przeglądarce.

    Zrzut ekranu przedstawiający aplikację do czatu w przeglądarce z kilkoma sugestiami dotyczącymi wprowadzania danych wejściowych na czacie, a także polem czatu, w którym wprowadzasz pytanie.

Uzyskiwanie odpowiedzi z plików PDF przy użyciu aplikacji do czatu

Aplikacja do czatu zawiera wczytane z wyprzedzeniem informacje o korzyściach pracowniczych 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.

  1. W przeglądarce wybierz lub wprowadź Co zawiera mój plan Northwind Health Plus, czego nie ma w standardowym? w polu tekstowym czatu.

    `Zrzut ekranu przedstawiający pierwszą odpowiedź aplikacji czatu.`

  2. W odpowiedzi wybierz jedną z cytatów.

    Zrzut ekranu przedstawiający pierwszą odpowiedź aplikacji do czatu z jego cytatem wyróżnionym w czerwonym polu.

  3. W okienku po prawej stronie użyj kart, aby dowiedzieć się, jak została wygenerowana odpowiedź.

    Karta opis
    Proces myślowy Skrypt interakcji w czacie.
    Zawartość pomocnicza Zawiera informacje, aby odpowiedzieć na pytanie i materiał źródłowy.
    Odsyłacz bibliograficzny Wyświetla stronę PDF zawierającą cytat.
  4. Po zakończeniu wybierz ponownie wybraną kartę, aby zamknąć okienko.

Zmienianie zachowania odpowiedzi przy użyciu ustawień aplikacji czatu

Model OpenAI i ustawienia używane do interakcji z modelem określają inteligencję aplikacji do czatowania.

Zrzut ekranu przedstawiający ustawienia dewelopera czatu.Zrzut ekranu przedstawiający ustawienia dewelopera czatu.

Ustawienie opis
Nadpisanie szablonu zapytania Monit, który jest używany do generowania odpowiedzi.
Pobieranie tych wielu wyników wyszukiwania Liczba wyników wyszukiwania używanych do generowania odpowiedzi. Te źródła są widoczne w zakładkach Proces myślowy i Zawartość pomocnicza.
Wyklucz kategorię Kategoria dokumentów wykluczonych z wyników wyszukiwania.
Użyj semantycznego rankera do pobierania Funkcja usługi Wyszukiwanie AI platformy Azure, która używa uczenia maszynowego do poprawy istotności wyników wyszukiwania.
Używanie podsumowań kontekstowych zapytań zamiast całych dokumentów Gdy oba Use semantic ranker i Use query-contextual summaries są zaznaczone, LLM używa podpisów wyodrębnionych z kluczowych fragmentów tekstu, zamiast wszystkich fragmentów, w dokumentach o najwyższej klasyfikacji.
Sugerowanie pytań dotyczących kontynuacji Aplikacja czatu powinna zasugerować pytania uzupełniające na podstawie odpowiedzi.
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.
Odpowiedzi na ukończenie czatu strumieniowego Zamiast czekać na kompletną odpowiedź, strumieniuj odpowiedź od razu.

Poniższe kroki przeprowadzą Cię przez proces zmieniania ustawień.

  1. W przeglądarce wybierz kartę Ustawienia dewelopera.

  2. Zaznacz pole wyboru Zasugeruj pytania uzupełniające i zadaj to samo pytanie ponownie.

    What is my deductible?
    

    Czat zwraca sugerowane pytania, takie jak te:

    1. What is the cost sharing for out-of-network services?
    2. Are preventive care services subject to the deductible?
    3. How does the prescription drug deductible work?
    
  3. Na zakładce Ustawienia usuń zaznaczenie pozycji Użyj semantycznego rankera do pobierania.

  4. Zadaj to samo pytanie ponownie?

    What is my deductible?
    
  5. Jaka jest różnica w odpowiedziach?

    Na przykład odpowiedź, która użyła klasyfikatora semantycznego, dostarczyła jedną odpowiedź: The deductible for the Northwind Health Plus plan is $2,000 per year.

    Odpowiedź bez klasyfikacji semantycznej zwróciła wynik, który wymagał więcej pracy, aby uzyskać odpowiedź: „Na podstawie dostarczonych informacji nie jest jasne, jaka jest twoja konkretna składka własna. Plan Northwind Health Plus ma różne kwoty składek własnych na usługi sieciowe i pozasieciowe, a także oddzielną składkę własną na leki na receptę. Zalecam skontaktowanie się z dostawcą lub zapoznanie się ze szczegółami specyficznych świadczeń twojego planu, aby ustalić kwotę składki własnej.”

Czyszczenie zasobów

Po zakończeniu ćwiczenia najlepszym rozwiązaniem jest usunięcie wszystkich zasobów, które nie są już wymagane.

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. Użyj następującego polecenia, aby usunąć zasoby platformy Azure i usunąć kod źródłowy:

azd down --purge

Czyszczenie usługi GitHub Codespaces

  • GitHub Codespaces
  • Visual Studio Code

Usunięcie środowiska GitHub Codespaces zapewnia, że możesz zmaksymalizować ilość bezpłatnych godzin przypisanych do konta.

Ważne

Aby uzyskać więcej informacji na temat uprawnień konta GitHub, zobacz GitHub Codespaces: miesięczne limity przechowywania i godzin rdzeni.

  1. Zaloguj się do pulpitu nawigacyjnego usługi GitHub Codespaces .

  2. Zlokalizuj obecnie uruchomione środowisko Codespaces pochodzące z repozytorium Azure-Samples/azure-search-openai-demo-java GitHub.

    Screenshot of all the running Codespaces including their status and templates.Zrzut ekranu wszystkich uruchomionych Codespaces, w tym ich status oraz szablony.

  3. Otwórz menu kontekstowe dla przestrzeni kodu, a następnie wybierz pozycję Usuń.

    Zrzut ekranu przedstawiający menu kontekstowe dla pojedynczej przestrzeni kodu z wyróżnioną opcją usuwania.

Jak udzielono odpowiedzi na pytanie?

Aplikacja została podzielona na dwie aplikacje.

  • Aplikacja front-endowa JavaScript wykorzystująca framework React wraz z narzędziem build Vite.
  • Backendowa aplikacja Java udziela odpowiedzi na pytanie.

Interfejs API backendu /chat przechodzi przez proces uzyskiwania odpowiedzi:

  • Opcje kompilacji RAG: utwórz zestaw opcji używanych do generowania odpowiedzi.
  • Stwórz podejście przy użyciu opcji RAG: użyj kombinacji modeli opartych na pobieraniu i generowaniu, aby stworzyć podejście do generowania dokładnej i naturalnie brzmiącej odpowiedzi.
  • Uruchom podejście z opcjami RAG i poprzednią konwersacją: użyj podejścia i opcji RAG, aby wygenerować odpowiedź na podstawie poprzedniej konwersacji. Odpowiedź zawiera informacje o dokumentach użytych do wygenerowania odpowiedzi.

Uzyskaj pomoc

To przykładowe repozytorium oferuje informacje dotyczące rozwiązywania problemów. Jeśli Twój problem nie został rozwiązany, zgłoś go w repozytorium w sekcji Issues.

Następne kroki

  • Pobierz kod źródłowy dla przykładu użytego w tym artykule
  • Tworzenie aplikacji do czatu przy użyciu usługi Azure OpenAI: architektura rozwiązania oparta na najlepszych praktykach
  • Kontrola dostępu w aplikacjach generatywnej sztucznej inteligencji za pomocą usługi Wyszukiwanie AI platformy Azure
  • Twórz rozwiązanie OpenAI dostosowane do potrzeb przedsiębiorstw z wykorzystaniem usługi Azure API Management
  • Wyszukiwanie wektorowe z funkcją hybrydowego pozyskiwania i rankingu, przewyższające tradycyjne metody
  • Więcej szablonów do zastosowania w procesach od początku do końca z wykorzystaniem sztucznej inteligencji Azure