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.
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:
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.
In Codespace öffnen.
Warten Sie den Start des Codespaces ab. Dieser Startvorgang kann einige Minuten dauern.
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.
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.
Führen Sie den folgenden Azure Developer CLI-Befehl aus, um die Azure-Ressourcen bereitzustellen und den Quellcode bereitzustellen:
azd up
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. Warten Sie, bis die App bereitgestellt wird. Die Bereitstellung kann zehn bis fünfzehn Minuten dauern.
Nachdem die Anwendung erfolgreich bereitgestellt wurde, werden zwei URLs im Terminal angezeigt.
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.
Wählen Sie im Browser Wie ist die Erstattungsrichtlinie? aus, oder geben Sie dies ein.
Wählen Sie eine Nachverfolgungsfrage aus.
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.
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.
Melden Sie sich beim GitHub Codespaces-Dashboard (https://github.com/codespaces) an.
Suchen Sie Ihre derzeit ausgeführten Codespaces, die aus dem GitHub-Repository
Azure-Samples/serverless-chat-langchainjs
stammen.Ö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.