Udostępnij za pośrednictwem


Wprowadzenie do bezserwerowego czatu sztucznej inteligencji z narzędziem RAG przy użyciu LangChain.js

Tworzenie aplikacji sztucznej inteligencji może być złożone. W przypadku technologii LangChain.js, usługi Azure Functions i bezserwerowych można uprościć ten proces. Te narzędzia umożliwiają automatyczne zarządzanie infrastrukturą i skalowaniem, co pozwala skupić się na funkcjach czatbotów. Czatbot używa dokumentów przedsiębiorstwa do generowania odpowiedzi sztucznej inteligencji.

Kod zawiera przykładowe dane fikcyjnej firmy Contoso Real Estate. Klienci mogą zadawać pytania dotyczące pomocy technicznej dotyczące produktów firmy. Dane obejmują dokumenty dotyczące warunków świadczenia usług, zasad ochrony prywatności i przewodnika pomocy technicznej firmy.

Zrzut ekranu przedstawiający aplikację czatu w przeglądarce z kilkoma sugestiami dotyczącymi wprowadzania danych wejściowych na czacie i polem tekstowym czatu w celu wprowadzenia pytania.

Uwaga

W tym artykule użyto co najmniej jednego szablonu aplikacji sztucznej inteligencji jako podstawy 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

Aplikacja do czatu

Użytkownik wchodzi w interakcję z aplikacją:

  • Za pomocą interfejsu czatu w aplikacji internetowej klienta.
  • Aplikacja internetowa klienta wysyła zapytanie użytkownika do bezserwerowego interfejsu API za pośrednictwem wywołań HTTP.
  • Bezserwerowy interfejs API tworzy łańcuch koordynujący interakcje między usługą Azure AI i usługą Azure AI Search w celu wygenerowania odpowiedzi.
  • Jeśli istnieje potrzeba odwołowania się do dokumentów, usługa Azure Blob Storage jest używana do pobierania dokumentów PDF.
  • Wygenerowana odpowiedź jest następnie wysyłana z powrotem do aplikacji internetowej i wyświetlana użytkownikowi.

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

Diagram przedstawiający architekturę z klienta do aplikacji zaplecza.

LangChainjs upraszcza złożoność między usługami

Przepływ interfejsu API jest przydatny do zrozumienia, jak usługa LangChainJS jest przydatna w tym scenariuszu, abstrakując interakcje. Punkt końcowy bezserwerowego interfejsu API:

  • Odbiera pytanie od użytkownika.
  • Tworzy obiekty klienta:
    • Usługa Azure OpenAI do osadzania i czatu
    • Usługa Azure AI Search dla magazynu wektorów
  • Tworzy łańcuch dokumentów z modelem LLM, komunikatem czatu (monitami systemu i użytkownika) oraz źródłem dokumentu.
  • Tworzy łańcuch pobierania z łańcucha dokumentów i magazynu wektorów.
  • Strumienie odpowiedzi z łańcucha pobierania.

Praca dewelopera polega na poprawnym skonfigurowaniu usług zależności, takich jak Azure OpenAI i Azure AI Search, i prawidłowe konstruowanie łańcuchów. Podstawowa logika łańcucha wie, jak rozwiązać zapytanie. Dzięki temu można tworzyć łańcuchy z wielu różnych usług i konfiguracji, o ile działają one z wymaganiami langchain.

Gdzie znajduje się platforma Azure w tej architekturze?

Ta aplikacja jest wykonana z wielu składników:

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:

  • Subskrypcja platformy Azure — utwórz bezpłatnie
  • Uprawnienia konta platformy Azure — Twoje konto platformy Azure musi mieć uprawnienia Microsoft.Authorization/roleAssignments/write, takie jak Administracja istrator 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).

  1. Otwórz plik w usłudze Codespace.

    Otwieranie w usłudze GitHub Codespaces

  2. Poczekaj na uruchomienie przestrzeni kodu. Ten proces uruchamiania może potrwać kilka minut.

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

    Ukończ proces uwierzytelniania.

  4. 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 potrzebne do wdrożenia bezserwerowej 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. Te zasoby mogą naliczać koszty nawet w przypadku przerwania działania polecenia przed jego pełnym wykonaniem.

  1. 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
    
  2. Użyj poniższej tabeli, aby odpowiedzieć na monity:

    Monit Odpowiedź
    Nazwa środowiska Zachowaj krótkie i małe litery. Dodaj swoją nazwę lub alias. Na przykład john-chat. Jest ona używana jako część nazwy grupy zasobów.
    Subskrypcja Wybierz subskrypcję, w ramach których chcesz utworzyć zasoby.
    Lokalizacja (na potrzeby hostingu) Wybierz lokalizację w pobliżu z listy.
    Lokalizacja modelu OpenAI Wybierz lokalizację w pobliżu z listy. Jeśli ta sama lokalizacja jest dostępna jako pierwsza lokalizacja, wybierz tę lokalizację.
  3. Poczekaj na wdrożenie aplikacji. Ukończenie wdrożenia może potrwać od 5 do 10 minut.

  4. Po pomyślnym wdrożeniu aplikacji w terminalu zostaną wyświetlone dwa adresy URL.

  5. Wybierz ten adres URL oznaczony Deploying service webapp 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 wypożyczeniu z katalogu plików PDF. Możesz użyć aplikacji do czatu, aby zadawać pytania dotyczące procesu wypożyczania. Poniższe kroki przeprowadzą Cię przez proces korzystania z aplikacji do czatu.

  1. W przeglądarce wybierz lub wprowadź zasady zwrotu kosztów.

    Zrzut ekranu przedstawiający pierwsze pytanie i odpowiedź aplikacji do czatu.

  2. Wybierz pytanie z kontynuacją.

    Zrzut ekranu przedstawiający sugerowane monity i odpowiedzi aplikacji do czatu

  3. W odpowiedzi wybierz cytat, aby wyświetlić dokument użyty do wygenerowania odpowiedzi. Spowoduje to dostarczanie dokumentu z usługi Azure Storage do klienta. Po zakończeniu pracy z nową kartą przeglądarki zamknij ją, aby powrócić do bezserwerowej aplikacji do czatu.

    Zrzut ekranu przedstawiający oryginalny dokument zawierający cytat.

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

  1. Zaloguj się do pulpitu nawigacyjnego usługi GitHub Codespaces (https://github.com/codespaces).

  2. Znajdź aktualnie uruchomione środowisko Codespaces pochodzące z Azure-Samples/serverless-chat-langchainjs repozytorium GitHub.

    Zrzut ekranu przedstawiający wszystkie uruchomione obszary Codespace, w tym ich stan i szablony.

  3. Otwórz menu kontekstowe , ...w obszarze codespace, 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.