Entwickeln Sie fortschrittliche generative KI-Assistenten auf Chat-Basis mithilfe RAG von Funktionen und Eingabeaufforderungen ReAct - AWS Prescriptive Guidance

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Entwickeln Sie fortschrittliche generative KI-Assistenten auf Chat-Basis mithilfe RAG von Funktionen und Eingabeaufforderungen ReAct

Erstellt von Praveen Kumar Jeyarajan (AWS), Jundong Qiao (), Kara Yang (), Kiowa AWS Jackson (), Noah Hamilton (AWS) und Shuai Cao () AWS AWS AWS

Code-Repository: genai-bedrock-chatbot

Umgebung: PoC oder Pilotprojekt

Technologien: Maschinelles Lernen und KI; Datenbanken DevOps; Serverlos

AWSDienstleistungen: Amazon Bedrock; Amazon; Amazon KendraECS; Lambda AWS

Übersicht

In einem typischen Unternehmen sind 70 Prozent seiner Daten in isolierten Systemen gespeichert. Mithilfe generativer, KI-gestützter Chat-Assistenten können Sie mithilfe von Interaktionen in natürlicher Sprache Einblicke und Beziehungen zwischen diesen Datensilos gewinnen. Um das Beste aus generativer KI herauszuholen, müssen die Ergebnisse vertrauenswürdig und genau sein und die verfügbaren Unternehmensdaten beinhalten. Erfolgreiche Chat-Assistenten hängen von folgenden Faktoren ab:

  • Generative KI-Modelle (wie Anthropic Claude 2)

  • Vektorisierung von Datenquellen

  • Fortgeschrittene Argumentationstechniken, wie z. B. das ReAct Framework, als Grundlage für das Modell

Dieses Muster bietet Datenabrufansätze aus Datenquellen wie Amazon Simple Storage Service (Amazon S3) -Buckets, AWS Glue und Amazon Relational Database Service (Amazon). RDS Aus diesen Daten wird Wert gewonnen, indem Retrieval Augmented Generation () mit Methoden verknüpft wird. RAG chain-of-thought Die Ergebnisse unterstützen komplexe Chat-basierte Assistentengespräche, die sich auf die Gesamtheit der in Ihrem Unternehmen gespeicherten Daten stützen.

Dieses Muster verwendet SageMaker Amazon-Handbücher und Preisdatentabellen als Beispiel, um die Funktionen eines generativen KI-Assistenten auf Chatbasis zu untersuchen. Sie werden einen Chat-basierten Assistenten entwickeln, der Kunden hilft, den SageMaker Service zu bewerten, indem er Fragen zur Preisgestaltung und zu den Funktionen des Dienstes beantwortet. Die Lösung verwendet eine Streamlit-Bibliothek für die Erstellung der Frontend-Anwendung und das LangChain Framework für die Entwicklung des Anwendungs-Backends, das auf einem großen Sprachmodell basiert (). LLM

Anfragen an den Chat-Assistenten werden zunächst mit einer Absichtsklassifizierung beantwortet, die dann an einen von drei möglichen Workflows weitergeleitet wird. Der ausgefeilteste Arbeitsablauf kombiniert allgemeine Beratung mit komplexen Preisanalysen. Sie können das Muster an Anwendungsfälle in Unternehmen, Unternehmen und der Industrie anpassen.

Voraussetzungen und Einschränkungen

Voraussetzungen

Einschränkungen

  • LangChain unterstützt nicht alle LLM Streaming-Dienste. Die Modelle von Anthropic Claude werden unterstützt, Modelle von AI21 Labs jedoch nicht.

  • Diese Lösung wird für ein einzelnes AWS Konto bereitgestellt.

  • Diese Lösung kann nur in AWS Regionen eingesetzt werden, in denen Amazon Bedrock und Amazon Kendra verfügbar sind. Informationen zur Verfügbarkeit finden Sie in der Dokumentation für Amazon Bedrock und Amazon Kendra.

Produktversionen

  • Python-Version 3.11 oder höher

  • Streamlit Version 1.30.0 oder höher

  • Streamlit-Chat Version 0.1.1 oder höher

  • LangChain Version 0.1.12 oder höher

  • AWSCDKVersion 2.132.1 oder höher

Architektur

Zieltechnologie-Stack

  • Amazon Athena

  • Amazon Bedrock

  • Amazon Elastic Container Service (AmazonECS)

  • AWS Glue

  • AWSLambda

  • Amazon S3

  • Amazon Kendra

  • Elastic Load Balancing

Zielarchitektur

Der AWS CDK Code stellt alle Ressourcen bereit, die für die Einrichtung der Chat-basierten Assistentenanwendung in einem AWS Konto erforderlich sind. Die in der folgenden Abbildung gezeigte Chat-basierte Assistentenanwendung wurde entwickelt, um SageMaker verwandte Anfragen von Benutzern zu beantworten. Benutzer stellen über einen Application Load Balancer eine Verbindung zu einem herVPC, der einen ECS Amazon-Cluster enthält, der die Streamlit-Anwendung hostet. Eine Orchestrierungs-Lambda-Funktion stellt eine Verbindung zur Anwendung her. S3-Bucket-Datenquellen stellen Daten für die Lambda-Funktion über Amazon Kendra und AWS Glue bereit. Die Lambda-Funktion stellt eine Verbindung zu Amazon Bedrock her, um Anfragen (Fragen) von Chat-basierten Assistentenbenutzern zu beantworten.

Architekturdiagramm.
  1. Die Orchestrierungs-Lambda-Funktion sendet die LLM Prompt-Anfrage an das Amazon Bedrock-Modell (Claude 2).

  2. Amazon Bedrock sendet die LLM Antwort zurück an die Orchestrierungs-Lambda-Funktion.

Logikfluss innerhalb der Orchestrierungs-Lambda-Funktion

Wenn Benutzer über die Streamlit-Anwendung eine Frage stellen, wird die Orchestrierungs-Lambda-Funktion direkt aufgerufen. Das folgende Diagramm zeigt den Logikfluss, wenn die Lambda-Funktion aufgerufen wird.

Architekturdiagramm.
  • Schritt 1 — Die Eingabe query (Frage) wird in eine der drei Absichten eingeteilt:

    • Allgemeine SageMaker Orientierungsfragen

    • Allgemeine Fragen zur SageMaker Preisgestaltung (Schulung/Inferenz)

    • Komplexe Fragen im Zusammenhang mit und zur Preisgestaltung SageMaker

  • Schritt 2 — Die Eingabe query initiiert einen der drei Dienste:

    • RAG Retrieval service, das den relevanten Kontext aus der Amazon Kendra Kendra-Vektordatenbank abruft und LLM über Amazon Bedrock aufruft, um den abgerufenen Kontext als Antwort zusammenzufassen.

    • Database Query service, das die Datenbank-Metadaten und Beispielzeilen aus relevanten Tabellen verwendet, um die Eingabe query in eine Abfrage umzuwandeln. LLM SQL Der Datenbankabfragedienst führt die SQL Abfrage anhand der SageMaker Preisdatenbank über Amazon Athena aus und fasst die Abfrageergebnisse als Antwort zusammen.

    • In-context ReACT Agent service, der die Eingabe query in mehrere Schritte unterteilt, bevor eine Antwort bereitgestellt wird. Der Agent verwendet RAG Retrieval service und Database Query service als Hilfsmittel, um während des Argumentationsprozesses relevante Informationen abzurufen. Nachdem der Argumentations- und Handlungsprozess abgeschlossen ist, generiert der Agent die endgültige Antwort als Antwort.

  • Schritt 3 — Die Antwort der Orchestrierungs-Lambda-Funktion wird als Ausgabe an die Streamlit-Anwendung gesendet.

Tools

AWSDienste

  • Amazon Athena ist ein interaktiver Abfrageservice, mit dem Sie Daten mithilfe von Standards SQL direkt in Amazon Simple Storage Service (Amazon S3) analysieren können.

  • Amazon Bedrock ist ein vollständig verwalteter Service, der leistungsstarke Basismodelle (FMs) von führenden KI-Startups und Amazon für Ihre Nutzung über eine einheitliche Lösung zur Verfügung stellt. API

  • AWSCloud Development Kit (AWSCDK) ist ein Softwareentwicklungs-Framework, mit dem Sie AWS Cloud-Infrastruktur im Code definieren und bereitstellen können.

  • AWSCommand Line Interface (AWSCLI) ist ein Open-Source-Tool, mit dem Sie mithilfe von Befehlen in Ihrer Befehlszeilen-Shell mit AWS Diensten interagieren können.

  • Amazon Elastic Container Service (AmazonECS) ist ein schneller und skalierbarer Container-Management-Service, mit dem Sie Container in einem Cluster ausführen, stoppen und verwalten können.

  • AWSGlue ist ein vollständig verwalteter Dienst zum Extrahieren, Transformieren und Laden (ETL). Er hilft Ihnen dabei, Daten zuverlässig zu kategorisieren, zu bereinigen, anzureichern und zwischen Datenspeichern und Datenströmen zu verschieben. Dieses Muster verwendet einen AWS Glue-Crawler und eine AWS Glue-Datenkatalogtabelle.

  • Amazon Kendra ist ein intelligenter Suchdienst, der natürliche Sprachverarbeitung und fortschrittliche Algorithmen für maschinelles Lernen verwendet, um spezifische Antworten auf Suchfragen aus Ihren Daten zurückzugeben.

  • AWSLambda ist ein Rechendienst, mit dem Sie Code ausführen können, ohne Server bereitstellen oder verwalten zu müssen. Er führt Ihren Code nur bei Bedarf aus und skaliert automatisch, sodass Sie nur für die tatsächlich genutzte Rechenzeit zahlen.

  • Amazon Simple Storage Service (Amazon S3) ist ein cloudbasierter Objektspeicherservice, der Sie beim Speichern, Schützen und Abrufen beliebiger Datenmengen unterstützt.

  • Elastic Load Balancing (ELB) verteilt den eingehenden Anwendungs- oder Netzwerkverkehr auf mehrere Ziele. Sie können beispielsweise den Traffic auf Amazon Elastic Compute Cloud (AmazonEC2) -Instances, Container und IP-Adressen in einer oder mehreren Availability Zones verteilen.

Code-Repository

Der Code für dieses Muster ist im GitHub genai-bedrock-chatbotRepository verfügbar.

Das Code-Repository enthält die folgenden Dateien und Ordner:

  • assetsOrdner — Die statischen Objekte, das Architekturdiagramm und der öffentliche Datensatz

  • code/lambda-containerfolder — Der Python-Code, der in der Lambda-Funktion ausgeführt wird

  • code/streamlit-appfolder — Der Python-Code, der als Container-Image in Amazon ausgeführt wird ECS

  • testsfolder — Die Python-Dateien, die zum Komponententest der AWS CDK Konstrukte ausgeführt werden

  • code/code_stack.py— Die zur AWS CDK Erstellung von AWS Ressourcen verwendeten Konstrukt-Python-Dateien

  • app.py— Die AWS CDK Stack-Python-Dateien, die zur Bereitstellung von AWS Ressourcen im AWS Zielkonto verwendet werden

  • requirements.txt— Die Liste aller Python-Abhängigkeiten, für die installiert werden müssen AWS CDK

  • requirements-dev.txt— Die Liste aller Python-Abhängigkeiten, die installiert werden müssen, AWS CDK um die Unit-Test-Suite auszuführen

  • cdk.json— Die Eingabedatei zur Bereitstellung von Werten, die zum Hochfahren von Ressourcen erforderlich sind

Bewährte Methoden

Epen

AufgabeBeschreibungErforderliche Fähigkeiten

Exportieren Sie Variablen für das Konto und die AWS Region, in der der Stack bereitgestellt werden soll.

Führen Sie die folgenden Befehle aus, um AWS Anmeldeinformationen für mithilfe AWS CDK von Umgebungsvariablen bereitzustellen.

export CDK_DEFAULT_ACCOUNT=<12 Digit AWS Account Number> export CDK_DEFAULT_REGION=<region>
DevOps Ingenieur, AWS DevOps

Richten Sie das AWS CLI Profil ein.

Folgen Sie den Anweisungen in der AWSDokumentation, um das AWS CLI Profil für das Konto einzurichten.

DevOps Ingenieur, AWS DevOps
AufgabeBeschreibungErforderliche Fähigkeiten

Klonen Sie das Repo auf Ihrem lokalen Computer.

Um das Repository zu klonen, führen Sie den folgenden Befehl in Ihrem Terminal aus.

git clone https://github.com/awslabs/genai-bedrock-chatbot.git
DevOps Ingenieur, AWS DevOps

Richten Sie die virtuelle Python-Umgebung ein und installieren Sie die erforderlichen Abhängigkeiten.

Führen Sie die folgenden Befehle aus, um die virtuelle Python-Umgebung einzurichten.

cd genai-bedrock-chatbot python3 -m venv .venv source .venv/bin/activate

Führen Sie den folgenden Befehl aus, um die erforderlichen Abhängigkeiten einzurichten.

pip3 install -r requirements.txt
DevOps Ingenieur, AWS DevOps

Richten Sie die AWS CDK Umgebung ein und synthetisieren Sie den AWS CDK Code.

  1. Führen Sie den folgenden Befehl aus, um die AWS CDK Umgebung in Ihrem AWS Konto einzurichten.

    cdk bootstrap aws://ACCOUNT-NUMBER/REGION
  2. Führen Sie den Befehl aus, um den Code in eine AWS CloudFormation Stack-Konfiguration zu konvertierencdk synth.

DevOps Ingenieur, AWS DevOps
AufgabeBeschreibungErforderliche Fähigkeiten

Gewähren Sie Zugriff auf das Claude-Modell.

Um den Zugriff auf das Modell Anthropic Claude für Ihr AWS Konto zu aktivieren, folgen Sie den Anweisungen in der Amazon Bedrock-Dokumentation.

AWS DevOps

Stellen Sie Ressourcen im Konto bereit.

Gehen Sie wie folgt vor AWSCDK, um Ressourcen im AWS Konto mithilfe von bereitzustellen:

  1. Geben Sie im Stammverzeichnis des geklonten Repositorys, in der cdk.json Datei, Eingaben für die logging Parameter ein. Beispielwerte sindINFO, DEBUGWARN, undERROR.

    Diese Werte definieren Nachrichten auf Protokollebene für die Lambda-Funktion und die Streamlit-Anwendung.

  2. Die app.py Datei im Stammverzeichnis des geklonten Repositorys enthält den AWS CloudFormation Stack-Namen, der für die Bereitstellung verwendet wird. Der Standard-Stack-Name istchatbot-stack.

  3. Führen Sie den Befehl aus, um Ressourcen bereitzustellencdk deploy.

    Der cdk deploy Befehl verwendet L3-Konstrukte, um mehrere Lambda-Funktionen zum Kopieren von Dokumenten und CSV Datensatzdateien in S3-Buckets zu erstellen.

  4. Melden Sie sich nach Abschluss des Befehls bei der AWS Management Console an, öffnen Sie die Konsole und überprüfen Sie, CloudFormation ob der Stack erfolgreich bereitgestellt wurde.

Nach erfolgreicher Bereitstellung können Sie mithilfe der im Abschnitt CloudFormation Ausgaben URL bereitgestellten Funktionen auf die Chat-basierte Assistentenanwendung zugreifen.

AWS DevOps, Ingenieur DevOps

Führen Sie den AWS Glue-Crawler aus und erstellen Sie die Datenkatalogtabelle.

Ein AWSGlue-Crawler wird verwendet, um das Datenschema dynamisch zu halten. Die Lösung erstellt und aktualisiert Partitionen in der AWSGlue Data Catalog-Tabelle, indem sie den Crawler bei Bedarf ausführt. Nachdem die CSV Datensatzdateien in den S3-Bucket kopiert wurden, führen Sie den AWS Glue-Crawler aus und erstellen Sie das Datenkatalog-Tabellenschema zum Testen:

  1. Navigieren Sie zur AWS Glue-Konsole.

  2. Wählen Sie im Navigationsbereich unter Datenkatalog die Option Crawlers aus.

  3. Wählen Sie den Crawler mit dem Suffix aus. sagemaker-pricing-crawler

  4. Führen Sie den Crawler aus.

  5. Nachdem der Crawler erfolgreich ausgeführt wurde, erstellt er eine AWS Glue-Datenkatalogtabelle.

Hinweis: Der AWS CDK Code konfiguriert den AWS Glue-Crawler so, dass er bei Bedarf ausgeführt wird. Sie können ihn aber auch so planen, dass er regelmäßig ausgeführt wird.

DevOps Ingenieur, AWS DevOps

Initiieren Sie die Indizierung von Dokumenten.

Nachdem die Dateien in den S3-Bucket kopiert wurden, verwenden Sie Amazon Kendra, um sie zu crawlen und zu indizieren:

  1. Navigieren Sie zur Amazon Kendra Kendra-Konsole.

  2. Wählen Sie den Index mit dem Suffix auschatbot-index.

  3. Wählen Sie im Navigationsbereich Datenquellen und dann den Datenquellenconnector mit dem Suffix auschatbot-index.

  4. Wählen Sie Jetzt synchronisieren, um den Indizierungsvorgang zu starten.

Hinweis: Der AWS CDK Code konfiguriert die Amazon Kendra Kendra-Indexsynchronisierung so, dass sie bei Bedarf ausgeführt wird. Sie können sie jedoch auch regelmäßig ausführen, indem Sie den Parameter Schedule verwenden.

AWS DevOps, Ingenieur DevOps
AufgabeBeschreibungErforderliche Fähigkeiten

Entfernen Sie die AWS Ressourcen.

Nachdem Sie die Lösung getestet haben, bereinigen Sie die Ressourcen:

  1. Führen Sie den Befehl aus, um die von der Lösung bereitgestellten AWS Ressourcen zu entfernencdk destroy.

  2. Löschen Sie alle Objekte aus den beiden S3-Buckets und entfernen Sie dann die Buckets.

    Weitere Informationen finden Sie unter Löschen eines Buckets.

DevOps Ingenieur, AWS DevOps

Fehlerbehebung

ProblemLösung

AWSCDKgibt Fehler zurück.

Hilfe bei AWS CDK Problemen finden Sie unter Behebung häufiger AWS CDK Probleme.

Zugehörige Ressourcen

Zusätzliche Informationen

AWSCDKBefehle

Beachten Sie bei der Arbeit mit AWS CDK die folgenden nützlichen Befehle:

  • Listet alle Stapel in der App auf

    cdk ls
  • Gibt die synthetisierte Vorlage aus AWS CloudFormation

    cdk synth
  • Stellt den Stack für Ihr AWS Standardkonto und Ihre Region bereit

    cdk deploy
  • Vergleicht den bereitgestellten Stack mit dem aktuellen Status

    cdk diff
  • Öffnet die AWS CDK Dokumentation

    cdk docs
  • Löscht den CloudFormation Stapel und entfernt AWS bereitgestellte Ressourcen

    cdk destroy