Freigeben über


Erste Schritte mit Serverless AI Chat mit RAG mithilfe von LangChain.js

Das Erstellen von KI-Apps kann komplex sein. Mit LangChain.js, Azure Functions und Serverless-Technologien können Sie diesen Prozess vereinfachen. Diese Tools verwalten Infrastruktur und Skalierung automatisch, sodass Sie sich auf die Chatbot-Funktionalität konzentrieren können. Der Chatbot verwendet Unternehmensdokumente, um KI-Antworten zu generieren.

Der Code enthält Beispieldaten für ein fiktives Unternehmen Contoso Real Estate. Kunden können Supportfragen zu den Produkten des Unternehmens stellen. Die Daten enthalten Dokumente zu den Nutzungsbedingungen, den Datenschutzrichtlinien und dem Supportleitfaden des Unternehmens.

Screenshot der Chat-App im Browser mit mehreren Vorschlägen für Chateingaben und dem Chattextfeld, um eine Frage einzugeben

Hinweis

In diesem Artikel wird mindestens eine KI-App-Vorlage als Grundlage für die Beispiele und Anleitungen im Artikel verwendet. KI-App-Vorlagen bieten Ihnen gut gepflegte, einfach bereitzustellende Referenzimplementierungen, die helfen, einen qualitativ hochwertigen Ausgangspunkt für Ihre KI-Apps zu gewährleisten.

Übersicht über die Architektur

Die Chat-App

Der Benutzer interagiert mit der Anwendung:

  • Mit der Chatschnittstelle in der Client-Web-App.
  • Die Clientweb-App sendet die Abfrage des Benutzers über HTTP-Aufrufe an die Serverless-API.
  • Die Serverless-API erstellt eine Kette, um Interaktionen zwischen Azure AI und Azure AI Search zu koordinieren, um eine Antwort zu generieren.
  • Wenn auf die Dokumente verwiesen werden muss, wird Azure Blob Storage zum Abrufen der PDF-Dokumente verwendet.
  • Die generierte Antwort wird dann an die Web-App zurückgesendet und dem Benutzer angezeigt.

Eine einfache Architektur der Chat-App wird im folgenden Diagramm gezeigt:

Abbildung der Architektur der Client-zu-Back-End-App

LangChainjs vereinfacht die Komplexität zwischen Diensten

Der API-Fluss ist nützlich, um zu verstehen, wie LangChainJS in diesem Szenario hilfreich ist, indem die Interaktionen abstrahiert werden. Der serverlose API-Endpunkt:

  • Empfängt die Frage vom Benutzer.
  • Erstellt Clientobjekte:
    • Azure OpenAI für Einbettungen und Chats
    • Azure AI Search für den Vektorspeicher
  • Erstellt eine Dokumentkette mit dem LLM-Modell, der Chatnachricht (System- und Benutzeraufforderungen) und der Dokumentquelle.
  • Erstellt eine Abrufkette aus der Dokumentkette und dem Vektorspeicher.
  • Streamt die Antworten aus der Abrufkette.

Die Arbeit des Entwicklers besteht darin, die Abhängigkeitsdienste wie Azure OpenAI und Azure AI Search korrekt zu konfigurieren und die Ketten richtig zu erstellen. Die zugrunde liegende Kettenlogik weiß, wie die Abfrage aufgelöst wird. Auf diese Weise können Sie Ketten aus vielen verschiedenen Diensten und Konfigurationen erstellen, solange sie mit den LangChain-Anforderungen arbeiten.

Wo befindet sich Azure in dieser Architektur?

Diese Anwendung wird aus mehreren Komponenten hergestellt:

  • Eine Web-App, die mit einer einzigen Chatwebkomponente erstellt wurde, die mit Lit erstellt und auf Azure Static Web-Apps gehostet wurde. Der Code befindet sich im packages/webapp Ordner.

  • Eine serverlose API, die mit Azure-Funktionen erstellt wurde und LangChain.js verwendet, um die Dokumente aufzunehmen und Antworten auf die Benutzerchatabfragen zu generieren. Der Code befindet sich im packages/api Ordner.

  • Ein Azure OpenAI-Dienst zum Erstellen von Einbettungen und Generieren einer Antwort.

  • Eine Datenbank zum Speichern des aus den Dokumenten extrahierten Texts und der von LangChain.js generierten Vektoren mithilfe von Azure AI Search.

  • Ein Dateispeicher zum Speichern der Quelldokumente mithilfe von Azure Blob Storage.

Voraussetzungen

Eine Entwicklungscontainerumgebung ist mit allen Abhängigkeiten verfügbar, die zum Abschließen dieses Artikels erforderlich sind. Sie können den Entwicklungscontainer in GitHub Codespaces (in einem Browser) oder lokal mit Visual Studio Code ausführen.

Um diesen Artikel zu verwenden, benötigen Sie die folgenden Voraussetzungen:

  • Azure-Abonnement: Kostenloses Azure-Konto
  • Azure-Kontoberechtigungen: Ihr Azure-Konto muss über Microsoft.Authorization/roleAssignments/Schreibberechtigungen verfügen, z. B. Benutzerzugriffsadministrator oder Besitzer.
  • Zugriff auf Azure OpenAI im gewünschten Azure-Abonnement gewährt. Derzeit wird der Zugriff auf diesen Dienst nur auf Antrag gewährt. Sie können den Zugriff auf Azure OpenAI beantragen, indem Sie das Formular unter https://aka.ms/oai/access ausfüllen. Öffnen Sie ein Problem in diesem Repository, um uns bei einem Problem zu kontaktieren.
  • GitHub -Konto

Öffnen Sie die Entwicklungsumgebung

Beginnen Sie jetzt mit einer Entwicklungsumgebung, in der alle Abhängigkeiten installiert sind, um diesen Artikel abzuschließen.

GitHub Codespaces führt einen von GitHub verwalteten Entwicklungscontainer mit Visual Studio Code für Web als Benutzeroberfläche aus. Verwenden Sie für die einfachste Entwicklungsumgebung GitHub Codespaces, damit Sie die richtigen Entwicklertools und Abhängigkeiten vorinstalliert haben, um diesen Artikel abzuschließen.

Wichtig

Alle GitHub-Konten können Codespaces für bis zu 60 Stunden pro Monat mit zwei Kerninstanzen kostenlos verwenden. Weitere Informationen finden Sie im Artikel zu monatlich enthaltener Speicherkapazität und Kernstunden in GitHub Codespaces.

  1. In Codespace öffnen.

    In GitHub Codespaces öffnen

  2. Warten Sie den Start des Codespaces ab. Dieser Startvorgang kann einige Minuten dauern.

  3. Melden Sie sich am unteren Bildschirmrand am Terminal mit der Azure Developer CLI bei Azure an.

    azd auth login
    

    Schließen Sie den Authentifizierungsprozess ab.

  4. Die verbleibenden Aufgaben in diesem Artikel finden im Kontext dieses Entwicklungscontainers statt.

Bereitstellen und Ausführen

Das Beispiel-Repository enthält alle Code- und Konfigurationsdateien, die Sie benötigen, um die serverlose Chat-App in Azure bereitzustellen. Die folgenden Schritte führen Sie durch den Prozess der Bereitstellung des Beispiels in Azure.

Bereitstellen einer Chat-App in Azure

Wichtig

In diesem Abschnitt erstellte Azure-Ressourcen verursachen sofortige Kosten, in erster Linie durch die Azure KI-Suche-Ressource. Diese Ressourcen können Kosten verursachen, selbst wenn Sie den Befehl unterbrechen, bevor er vollständig ausgeführt wird.

  1. Führen Sie den folgenden Azure Developer CLI-Befehl aus, um die Azure-Ressourcen bereitzustellen und den Quellcode bereitzustellen:

    azd up
    
  2. Verwenden Sie die folgende Tabelle, um die Eingabeaufforderungen zu beantworten:

    Prompt Antwort
    Umgebungsname Halten Sie sie kurz und klein geschrieben. Fügen Sie Ihren Namen oder Alias hinzu. Beispiel: john-chat. Sie wird als Teil des Ressourcengruppennamens verwendet.
    Abonnement Wählen Sie das Abonnement aus, in dem die Ressourcen erstellt werden sollen.
    Speicherort (für Hosting) Wählen Sie einen Speicherort in ihrer Nähe aus der Liste aus.
    Speicherort für das OpenAI-Modell Wählen Sie einen Speicherort in ihrer Nähe aus der Liste aus. Wenn derselbe Speicherort wie Ihr erster Speicherort verfügbar ist, wählen Sie diesen Speicherort aus.
  3. Warten Sie, bis die App bereitgestellt wird. Es kann 5 bis 10 Minuten dauern, bis die Bereitstellung abgeschlossen ist.

  4. Nachdem die Anwendung erfolgreich bereitgestellt wurde, werden zwei URLs im Terminal angezeigt.

  5. Wählen Sie diese URL aus, die als Deploying service webapp beschriftet ist, um die Chatanwendung in einem Browser zu öffnen.

Verwenden der Chat-App zum Abrufen von Antworten aus PDF-Dateien

Die Chat-App wird vorab mit Mietinformationen aus einem PDF-Dateikatalog geladen. Sie können die Chat-App verwenden, um Fragen zum Mietvorgang zu stellen. Die folgenden Schritte führen Sie durch den Prozess der Verwendung der Chat-App.

  1. Wählen Oder geben Sie im Browser die Erstattungsrichtlinie ein.

    Screenshot der ersten Frage und Antwort der Chat-App.

  2. Wählen Sie eine Nachverfolgungsfrage aus.

    Screenshot der vorgeschlagenen Nachverfolgungsaufforderung und -antwort der Chat-App

  3. Wählen Sie in der Antwort das Zitat aus, um das Dokument anzuzeigen, das zum Generieren der Antwort verwendet wird. Dadurch wird das Dokument von Azure Storage an den Client übermittelt. Wenn Sie mit der neuen Browserregisterkarte fertig sind, schließen Sie sie, um zur Serverlosen Chat-App zurückzukehren.

    Screenshot des ursprünglichen Dokuments mit Zitat.

Bereinigen von Ressourcen

Bereinigen von Azure-Ressourcen

Die in diesem Artikel erstellten Azure-Ressourcen werden Ihrem Azure-Abonnement in Rechnung gestellt. Wenn Sie nicht erwarten, dass diese Ressourcen in Zukunft benötigt werden, löschen Sie sie, um weitere Gebühren zu vermeiden.

Führen Sie den folgenden Azure Developer CLI-Befehl aus, um die Azure-Ressourcen zu löschen und den Quellcode zu entfernen:

azd down --purge

Bereinigen von GitHub-Codespaces

Durch das Löschen der GitHub Codespaces-Umgebung wird sichergestellt, dass Sie die Anzahl der kostenlosen Berechtigungsstunden pro Kern maximieren können, die Sie für Ihr Konto erhalten.

Wichtig

Weitere Informationen zu den Berechtigungen Ihres GitHub-Kontos finden Sie im Artikel zu monatlich enthaltener Speicherkapazität und Kernstunden in GitHub Codespaces.

  1. Melden Sie sich beim GitHub Codespaces-Dashboard (https://github.com/codespaces) an.

  2. Suchen Sie Ihre derzeit ausgeführten Codespaces, die aus dem GitHub-Repository Azure-Samples/serverless-chat-langchainjs stammen.

    Screenshot aller ausgeführten Codespaces einschließlich status und Vorlagen.

  3. Öffnen Sie das Kontextmenü, ...für den Codespace, und wählen Sie dann "Löschen" aus.

Hilfe erhalten

Dieses Beispiel-Repository bietet Informationen zur Problembehandlung.

Wenn Ihr Problem nicht behoben ist, protokollieren Sie Ihr Problem bei den Problemen des Repositorys.