Freigeben über


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

Das Erstellen von KI-Apps kann sehr komplex sein. Mit LangChain.js, Azure Functions und Serverless-Technologien können Sie diesen Prozess vereinfachen. Diese Tools verwalten Infrastruktur und Skalierung automatisch, so dass Sie sich ganz 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 mit dem Namen Contoso Real Estate. Kunden können Supportfragen zu den Produkten des Unternehmens stellen. Die Daten beinhalten 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 Chat-Schnittstelle in der Client-Web-App.
  • Die Client-Web-App sendet die Anfrage des Benutzers über HTTP-Aufrufe an die Serverless-API.
  • Die Serverless-API erstellt eine Kette, um Interaktionen zwischen Azure AI und Azure KI-Suche zu koordinieren und 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 vom Client bis zur Back-End-App

LangChainjs vereinfacht die Komplexität zwischen Services

Der API-Fluss ist nützlich, um zu verstehen, wie LangChainJS in diesem Szenario durch Abstraktion der Interaktionen hilft. Der Serverless API-Endpunkt:

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

Die Aufgabe des Entwicklers besteht darin, die Abhängigkeitsservices wie Azure OpenAI und Azure KI-Suche korrekt zu konfigurieren und die Ketten ordnungsgemäß zu erstellen. Die zugrunde liegende Kettenlogik weiß, wie die Anfrage aufgelöst werden muss. Auf diese Weise können Sie Ketten aus vielen verschiedenen Services und Konfigurationen erstellen, solange diese mit den LangChain-Anforderungen arbeiten.

Wo befindet sich Azure in dieser Architektur?

Diese Anwendung besteht aus mehreren Komponenten:

  • Eine Web-App, die mit einer einzigen Chat-Web-Komponente erstellt wurde, die mit Lit erstellt und auf Azure Static Web Apps gehostet wird. Der Code steht im Ordner packages/webapp zur Verfügung.

  • Eine serverlose API, die mit Azure Functions erstellt wurde und LangChain.js verwendet, um die Dokumente aufzunehmen und Antworten auf die Benutzer-Chat-Anfragen zu generieren. Der Code steht im Ordner packages/api zur Verfügung.

  • Ein Azure OpenAI-Service 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 KI-Suche.

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

Für diesen Artikel benötigen Sie Folgendes:

  • 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 zum Bereitstellen der Serverless-Chat-App in Azure benötigen. 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. Gehen Sie zum Beantworten der Eingabeaufforderungen gemäß der folgenden Tabelle vor:

    Prompt Antwort
    Umgebungsname Halten Sie dies kurz, und verwenden Sie nur Kleinbuchstaben. Fügen Sie Ihren Namen oder Alias hinzu. Beispiel: john-chat. Er wird als Teil des Ressourcengruppennamens verwendet.
    Abonnement Wählen Sie das Abonnement aus, in dem Sie die Ressourcen erstellen möchten.
    Standort (für Hosting) Wählen Sie aus der Liste einen Standort in Ihrer Nähe aus.
    Standort für das OpenAI-Modell Wählen Sie aus der Liste einen Standort in Ihrer Nähe 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. Die Bereitstellung kann zehn bis fünfzehn Minuten dauern.

  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 Mietprozess zu stellen. Die folgenden Schritte führen Sie durch den Prozess der Verwendung der Chat-App.

  1. Wählen Sie im Browser Wie ist die Erstattungsrichtlinie? aus, oder geben Sie dies ein.

    Screenshot der ersten Frage und Antwort der Chat App.

  2. Wählen Sie eine Nachverfolgungsfrage aus.

    Screenshot der vorgeschlagenen Folgeäußerung 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 wurde. 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 Serverless-Chat-App zurückzukehren.

    Screenshot des ursprünglichen Dokuments mit dem 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.