Einführung
Voraussetzungen
Zieltechnologie-Stack
Einsatz
Nützliche CDK-Befehle
Codestruktur
Passen Sie den Chatbot mit Ihren eigenen Daten an
Diese GenAI-ChatBot-Anwendung wurde mit Amazon Bedrock erstellt, das KnowledgeBase, Agent und zusätzliche serverlose AWS-GenAI-Lösungen umfasst. Die bereitgestellte Lösung stellt einen Chatbot vor, der sein Verständnis von EC2-Instanzen und der Preisgestaltung von EC2-Instanzen nutzt. Dieser Chatbot veranschaulicht die Fähigkeiten von Amazon Bedrock, natürliche Sprache in Amazon Athena-Abfragen umzuwandeln und komplexe Datensätze zu verarbeiten und zu nutzen. Open-Source-Tools wie LLamaIndex werden verwendet, um die Fähigkeiten des Systems zur Datenverarbeitung und zum Abruf zu erweitern. Auch die Integration mehrerer AWS-Ressourcen wird in der Lösung großgeschrieben. Zu diesen Ressourcen gehören Amazon S3 für die Speicherung, Amazon Bedrock KnowledgeBase zur Erleichterung der Retrieval Augmented Generation (RAG), Amazon Bedrock Agent zur Ausführung mehrstufiger Aufgaben über Datenquellen hinweg, AWS Glue zur Datenvorbereitung, Amazon Athena zur Ausführung effizienter Abfragen und Amazon Lambda Verwalten von Containern und Amazon ECS zur Überwachung von Containern. Die kombinierte Nutzung dieser Ressourcen ermöglicht es dem Chatbot, Inhalte aus Datenbanken und Dokumenten effizient abzurufen und zu verwalten und demonstriert so die Fähigkeiten von Amazon Bedrock bei der Entwicklung fortschrittlicher Chatbot-Anwendungen.
Docker
AWS CDK Toolkit 2.114.1+, installiert installiert und konfiguriert. Weitere Informationen finden Sie unter Erste Schritte mit dem AWS CDK in der AWS CDK-Dokumentation.
Python 3.11+, installiert und konfiguriert. Weitere Informationen finden Sie im Beginners Guide/Download in der Python-Dokumentation.
Ein aktives AWS-Konto
Ein AWS-Konto, das mithilfe des AWS CDK in us-east-1 oder us-west-2 gebootet wurde. Aktivieren Sie den Zugriff auf das Claude-Modell und das Titan-Einbettungsmodell im Bedrock-Dienst.
Amazonas-Grundgestein
Amazon OpenSearch Serverless
Amazon ECS
AWS-Kleber
AWS Lambda
Amazon S3
Amazonas Athene
Elastischer Lastausgleicher
Um die App lokal auszuführen, fügen Sie zunächst eine .env-Datei zum Ordner „code/streamlit-app“ hinzu, die Folgendes enthält
ACCOUNT_ID =AWS_REGION = LAMBDA_FUNCTION_NAME = invokeAgentLambda # Legt den Wunschnamen für die Lambda-Funktion fest, die von Streamlit für eine Antwort aufgerufen wird. Ruft derzeit einen Agenten auf.
Die Datei cdk.json
teilt dem CDK Toolkit mit, wie Ihre App ausgeführt werden soll.
Dieses Projekt ist wie ein Standard-Python-Projekt eingerichtet. Der Initialisierungsprozess erstellt auch eine virtuelle Umgebung innerhalb dieses Projekts, die im Verzeichnis .venv
gespeichert ist. Um die virtuelle Umgebung zu erstellen, wird davon ausgegangen, dass sich in Ihrem Pfad eine ausführbare python3
(oder python
für Windows) mit Zugriff auf das venv
-Paket befindet. Wenn die automatische Erstellung der virtuellen Umgebung aus irgendeinem Grund fehlschlägt, können Sie die virtuelle Umgebung manuell erstellen.
So erstellen Sie manuell eine virtuelle Umgebung unter MacOS und Linux:
$ python3 -m venv .venv
Nachdem der Init-Prozess abgeschlossen und die virtuelle Umgebung erstellt wurde, können Sie Ihre virtuelle Umgebung mit dem folgenden Schritt aktivieren.
$ Quelle .venv/bin/activate
Wenn Sie eine Windows-Plattform verwenden, würden Sie die virtuelle Umgebung wie folgt aktivieren:
% .venvScriptsactivate.bat
Sobald die virtuelle Umgebung aktiviert ist, können Sie die erforderlichen Abhängigkeiten installieren.
$ pip install -r Anforderungen.txt
Um zusätzliche Abhängigkeiten hinzuzufügen, beispielsweise andere CDK-Bibliotheken, fügen Sie diese einfach zu Ihrer setup.py
Datei hinzu und führen Sie den Befehl pip install -r requirements.txt
erneut aus.
An diesem Punkt können Sie nun die CloudFormation-Vorlage für diesen Code synthetisieren.
$ cdk synth
Um zusätzliche Abhängigkeiten hinzuzufügen, beispielsweise andere CDK-Bibliotheken, fügen Sie diese einfach zu Ihrer setup.py
Datei hinzu und führen Sie den Befehl pip install -r requirements.txt
erneut aus.
Sie müssen einen Bootstrap durchführen, wenn Sie cdk zum ersten Mal unter einem bestimmten Konto und in einer bestimmten Region ausführen.
$ cdk Bootstrap
Sobald das Bootstrapping abgeschlossen ist, können Sie mit der Bereitstellung von cdk fortfahren.
$ cdk bereitstellen
Wenn Sie es zum ersten Mal bereitstellen, kann der Vorgang zum Erstellen mehrerer Docker-Images in ECS (Amazon Elastic Container Service) etwa 30 bis 45 Minuten dauern. Bitte haben Sie etwas Geduld, bis es fertig ist. Anschließend wird mit der Bereitstellung des Chatbot-Stacks begonnen, was normalerweise etwa 5–8 Minuten dauert.
Sobald der Bereitstellungsprozess abgeschlossen ist, sehen Sie die Ausgabe des CDK im Terminal und können den Status auch in Ihrer CloudFormation-Konsole überprüfen.
Sie können den Agenten entweder in der AWS-Konsole oder über die Streamlit-App-URL testen, die in den Ausgaben von chatbot-stack in CloudFormation aufgeführt ist.
Um das CDK zu löschen, sobald Sie es nicht mehr verwenden, um zukünftige Kosten zu vermeiden, können Sie es entweder über die Konsole löschen oder den folgenden Befehl im Terminal ausführen.
$ cdk zerstören
Möglicherweise müssen Sie auch den vom CDK generierten S3-Bucket manuell löschen. Bitte stellen Sie sicher, dass Sie alle generierten Ressourcen löschen, um Kosten zu vermeiden.
cdk ls
listet alle Stacks in der App auf
cdk synth
gibt die synthetisierte CloudFormation-Vorlage aus
cdk deploy
stellt diesen Stack in Ihrem Standard-AWS-Konto/Ihrer Standard-AWS-Region bereit
cdk diff
vergleicht den bereitgestellten Stack mit dem aktuellen Status
cdk docs
cdk destroy
zerstört einen oder mehrere angegebene Stacks
code # Root folder for code for this solution ├── lambdas # Root folder for all lambda functions │ ├── action-lambda # Lambda function that acts as an action for the Amazon Bedrock Agent │ ├── create-index-lambda # Lambda function that create Amazon Opensearch serverless index as Amazon Bedrock Knowlege base's vector database │ ├── invoke-lambda # Lambda function that invokes Amazon Bedrock Agent, which is called diretly from the streamlit app │ └── update-lambda # Lambda function that update/delete resources after AWS resources deployed via AWS CDK. ├── layers # Root folder for all lambda layers │ ├── boto3_layer # Boto3 layer that is shared across all lambdas │ └── opensearch_layer # opensearh layer that installs all dependencies for create Amazon Opensearch serverless index. ├── streamlit-app # Steamlit app that interacts with the Amazon Bedrock Agent └── code_stack.py # Amazon CDK stack that deploys all AWS resources
Um Ihre benutzerdefinierten Daten für die Bereitstellung der Lösung zu integrieren, befolgen Sie bitte diese strukturierten Richtlinien, die auf Ihre Anforderungen zugeschnitten sind:
Suchen Sie das Verzeichnis assets/knowledgebase_data_source/
.
Platzieren Sie Ihren Datensatz in diesem Ordner.
Greifen Sie auf die Datei cdk.json
zu.
Navigieren Sie zum Feld context/configure/paths/knowledgebase_file_name
und aktualisieren Sie es entsprechend.
Ändern Sie außerdem das Feld bedrock_instructions/knowledgebase_instruction
in der Datei cdk.json
, um die Nuancen und den Kontext Ihres neuen Datensatzes genau wiederzugeben.
Erstellen Sie im Verzeichnis assets/data_query_data_source/
ein Unterverzeichnis, zum Beispiel „tabular_data“.
Legen Sie Ihren strukturierten Datensatz (zu den zulässigen Formaten gehören CSV , JSON , ORC und Parquet ) in diesem neu erstellten Unterordner ab.
Wenn Sie eine Verbindung zu Ihrer vorhandenen Datenbank herstellen, aktualisieren Sie die Funktion create_sql_engine()
in code/lambda/action-lambda/build_query_engine.py
um eine Verbindung zu Ihrer Datenbank herzustellen.
Aktualisieren Sie das Feld context/configure/paths/athena_table_data_prefix
der Datei cdk.json
, um es an den neuen Datenpfad anzupassen.
Überarbeiten Sie code/lambda/action-lambda/dynamic_examples.csv
indem Sie neuen Text in SQL-Beispiele integrieren, die Ihrem Datensatz entsprechen.
Überarbeiten Sie code/lambda/action-lambda/prompt_templates.py
um die Attribute Ihrer neuen Tabellendaten widerzuspiegeln.
Ändern Sie das Feld context/configure/bedrock_instructions/action_group_description
der Datei cdk.json
, um den Zweck und die Funktionalität des auf Ihren Datensatz zugeschnittenen Aktions-Lambda zu verdeutlichen.
Spiegeln Sie die neuen Funktionalitäten Ihres Aktions-Lambda in der Datei assets/agent_api_schema/artifacts_schema.json
wider.
Geben Sie in der Datei cdk.json
im context/configure/bedrock_instructions/agent_instruction section
eine umfassende Beschreibung der beabsichtigten Funktionalität und des Designzwecks des Amazon Bedrock Agent unter Berücksichtigung der neu integrierten Daten an.
Diese Schritte sollen einen nahtlosen und effizienten Integrationsprozess gewährleisten und es Ihnen ermöglichen, die Lösung effektiv mit Ihren maßgeschneiderten Daten bereitzustellen.