QnABot auf AWS ist eine mehrkanalige, mehrsprachige Konversationsschnittstelle (Chatbot), die auf die Fragen, Antworten und das Feedback Ihrer Kunden reagiert. Damit können Sie einen voll funktionsfähigen Chatbot über mehrere Kanäle hinweg bereitstellen, darunter Chat, Sprache, SMS und Amazon Alexa. Mit der Content-Management-Umgebung und dem Contact-Center-Integrationsassistenten der Lösung können Sie eine Umgebung einrichten und anpassen, die die folgenden Vorteile bietet:
Verbessern Sie das Kundenerlebnis, indem Sie personalisierte Tutorials und Frage-und-Antwort-Unterstützung mit intelligenter mehrteiliger Interaktion bereitstellen
Reduzieren Sie die Wartezeiten im Callcenter durch die Automatisierung der Kundensupport-Workflows
Implementieren Sie die neueste Technologie des maschinellen Lernens, um ansprechende, menschenähnliche Interaktionen für Chatbots zu schaffen
Durch die Bereitstellung dieser Lösung mit den Standardparametern werden die folgenden Komponenten in Ihrem AWS-Konto bereitgestellt (umrandete Komponenten sind optional).
Abbildung 1: QnABot auf AWS-Architektur
Der allgemeine Prozessablauf für die mit der AWS CloudFormation-Vorlage bereitgestellten Lösungskomponenten ist wie folgt:
Der Administrator stellt die Lösung in seinem AWS-Konto bereit, öffnet die Content Designer-Benutzeroberfläche oder den Amazon Lex-Webclient und verwendet Amazon Cognito zur Authentifizierung.
Nach der Authentifizierung liefern Amazon API Gateway und Amazon S3 die Inhalte der Content Designer-Benutzeroberfläche.
Der Administrator konfiguriert Fragen und Antworten im Content Designer und die Benutzeroberfläche sendet Anfragen an Amazon API Gateway, um die Fragen und Antworten zu speichern.
Die Content Designer
AWS Lambda-Funktion speichert die Eingaben im Amazon OpenSearch Service in einem Fragenbankindex. Wenn Texteinbettungen verwendet werden, durchlaufen diese Anfragen zunächst ein auf Amazon Bedrock oder Amazon SageMaker gehostetes LLM-Modell, um Einbettungen zu generieren, bevor sie in der Fragendatenbank auf OpenSearch gespeichert werden. Darüber hinaus speichert der Content Designer
Standard- und benutzerdefinierte Konfigurationseinstellungen im AWS Systems Manager Parameter Store.
Benutzer des Chatbots interagieren mit Amazon Lex über die Web-Client-Benutzeroberfläche, Amazon Alexa oder Amazon Connect.
Amazon Lex leitet Anfragen an die Bot Fulfillment
AWS Lambda-Funktion weiter. Benutzer können über Amazon Alexa-Geräte auch Anfragen an diese Lambda-Funktion senden.
Die Benutzer- und Chatinformationen werden in Amazon DynamoDB gespeichert, um Folgefragen aus dem vorherigen Frage- und Antwortkontext zu unterscheiden.
Die Bot Fulfillment
AWS Lambda-Funktion nimmt die Eingaben des Benutzers entgegen und verwendet Amazon Comprehend und Amazon Translate (falls erforderlich), um nicht-muttersprachliche Anfragen in die vom Benutzer während der Bereitstellung ausgewählte Muttersprache zu übersetzen und sucht dann die Antwort im Amazon OpenSearch Service . Wenn LLM-Funktionen wie Textgenerierung und Texteinbettungen verwendet werden, durchlaufen diese Anfragen zunächst verschiedene LLM-Modelle, die auf Amazon Bedrock oder Amazon SageMaker gehostet werden, um die Suchabfrage und Einbettungen zu generieren, die mit denen verglichen werden, die in der Fragendatenbank von OpenSearch gespeichert sind.
Wenn von der OpenSearch-Fragenbank keine Übereinstimmung zurückgegeben wird, leitet die Lambda-Funktion zur Bot-Erfüllung die Anfrage wie folgt weiter:
A. Wenn ein Amazon Kendra-Index für Fallback konfiguriert ist, leitet die Bot Fulfillment
AWS Lambda-Funktion die Anfrage an Kendra weiter, wenn von der OpenSearch-Fragenbank keine Übereinstimmung zurückgegeben wird. Das Textgenerierungs-LLM kann optional verwendet werden, um die Suchabfrage zu erstellen und aus den zurückgegebenen Dokumentauszügen eine Antwort zu synthetisieren.
B. Wenn eine Bedrock Knowledge Base-ID konfiguriert ist, leitet die Bot Fulfillment
AWS Lambda-Funktion die Anfrage an die Bedrock Knowledge Base weiter. Die Bot Fulfillment
AWS Lambda-Funktion nutzt die RetrieveAndGenerate-API, um die relevanten Ergebnisse für eine Benutzerabfrage abzurufen, die Eingabeaufforderung des Basismodells zu erweitern und die Antwort zurückzugeben.
Benutzerinteraktionen mit der Bot Fulfillment
Funktion generieren Protokolle und Metrikdaten, die zur späteren Datenanalyse an Amazon Kinesis Data Firehose und dann an Amazon S3 gesendet werden. Die OpenSearch-Dashboards können verwendet werden, um den Nutzungsverlauf, protokollierte Äußerungen, Äußerungen ohne Treffer, positives und negatives Benutzerfeedback anzuzeigen und bieten außerdem die Möglichkeit, benutzerdefinierte Berichte zu erstellen.
Die OpenSearch-Dashboards können verwendet werden, um den Nutzungsverlauf, protokollierte Äußerungen, Äußerungen ohne Treffer, positives und negatives Benutzerfeedback anzuzeigen und bieten außerdem die Möglichkeit, benutzerdefinierte Berichte zu erstellen.
Detaillierte Anweisungen zur Bereitstellung von QnABot in Ihrem AWS-Konto finden Sie im Implementierungsleitfaden.
Wenn Sie QnABot alternativ auf AWS benutzerdefiniert bereitstellen möchten, sehen Sie sich die folgenden Details an.
Navigieren Sie zum Stammverzeichnis von QnABot (das Verzeichnis wird erstellt, sobald Sie dieses Repo geklont haben).
Beginnen Sie im Verzeichnis /source.
cd source
Virtualenv installieren:
pip3 install virtualenv
Installieren Sie die node.js-Module von QnABot:
npm install
Als nächstes richten Sie Ihre Konfigurationsdatei ein:
npm run config
Bearbeiten Sie nun config.json
für die folgenden Parameter:
param | Beschreibung |
---|---|
Region | die AWS-Region, in der Stacks gestartet werden sollen |
Profil | das zu verwendende AWS-Anmeldeprofil |
Namensraum | ein logischer Namensraum zum Ausführen Ihrer Vorlagen, z. B. dev, test und/oder prod |
devEmail (erforderlich) | die E-Mail, die beim Erstellen von Admin-Benutzern in automatisierten Stack-Starts verwendet werden soll |
Verwenden Sie als Nächstes den folgenden Befehl, um eine CloudFormation-Vorlage zu starten und den S3-Bucket zu erstellen, der für Lambda-Code und CloudFormation-Vorlagen verwendet werden soll. Warten Sie, bis diese Vorlage abgeschlossen ist (Sie können den Fortschritt über die Befehlszeile oder die AWS CloudFormation-Konsole verfolgen).
npm run bootstrap
Verwenden Sie abschließend den folgenden Befehl, um die Vorlage zum Bereitstellen des QnABot in Ihrem AWS-Konto zu starten. Wenn der Stapel abgeschlossen ist, können Sie sich bei der Designer-Benutzeroberfläche anmelden (die URL ist eine Ausgabe der Vorlage). Ein temporäres Passwort für die E-Mail in Ihrer config.json:
npm run up
Wenn Sie über einen vorhandenen Stack verfügen, können Sie Folgendes ausführen, um Ihren Stack zu aktualisieren:
npm run update
Um Unit-Tests auszuführen, führen Sie den folgenden Befehl aus dem Stammordner aus:
npm test
Um die Test-Snapshots zu aktualisieren, wenn Sie das Verzeichnis /website oder /templates ändern, führen Sie den folgenden Befehl aus:
npm run test:update:snapshot
HINWEIS: Durch die Ausführung von Regressionstests werden Inhalte und Einstellungen im Content Designer erstellt, geändert und gelöscht. Führen Sie Regressionstests nur für Nicht-Produktions-Bots durch, bei denen der Verlust oder die Änderung von Inhalten und Einstellungen akzeptabel ist.
Dadurch werden Integrationstests für eine bereitgestellte QnABot-Bereitstellung in Ihrem Konto ausgeführt. Bevor Sie die Tests ausführen, befolgen Sie die oben genannten Schritte, um eine Version zu erstellen und bereitzustellen oder mithilfe der Vorlage von der QnABot-Landingpage bereitzustellen: Starten Sie QnABot.
cd .nightswatch
brew install python@3
brew install geckodriver
brew install --cask chromedriver
pip3 install virtualenv
python3 -m virtualenv venv
source ./venv/bin/activate
pip install -r requirements.txt
Legen Sie die folgenden Umgebungsvariablen so fest, dass sie auf die zu testende QnA-Bot-Bereitstellung verweisen:
export CURRENT_STACK_REGION= ' <QNA BOT Region> '
export CURRENT_STACK_NAME= ' <QNA BOT Cloudformation Stack Name> '
export EMAIL= ' <admin user e-mail>
Geben Sie optional einen Benutzernamen und ein Passwort an, mit denen ein Admin-Benutzer testen kann. Wenn diese Umgebungsvariablen nicht festgelegt sind, wird während des ersten Tests ein Standardbenutzer „QnaAdmin“ erstellt. Wenn Sie einen bestimmten Test ausführen möchten, geben Sie einen Benutzernamen an, da der Standardbenutzer nur beim ersten Test erstellt wird.
export USER= ' <QNA BOT existing admin user> '
export PASSWORD= ' <QNA BOT existing admin password> '
Geben Sie optional die Bedrock Guardrails-ID und die Version zum Testen an. Wenn diese Umgebungsvariablen nicht festgelegt sind, werden die Tests für Bedrock Guardrails in test_knowledge_base.py und test_llm.py übersprungen.
export BEDROCK_GUARDRAIL_IDENTIFIER= ' <Pre-configurated Guardrail Identifier in your AWS account> '
export BEDROCK_GUARDRAIL_VERSION= ' <Pre-configurated Guardrail Version in your AWS account> '
Wenn Sie den Browser während der Ausführung von Tests starten möchten, legen Sie auch die folgende Umgebungsvariable fest:
export HEADLESS_BROWSER= ' false '
Wenn Sie die Start- und Endzeit für jeden Test sehen möchten:
export TIMESTAMPS= ' true '
Wenn Sie für den Test ein bestimmtes AWS-Profil verwenden möchten. Wenn dies nicht festgelegt ist, verwendet der Regressionstest die aktuelle AWS-Sitzung, in der er ausgeführt wird.
export TEST_ACCOUNT_PROFILE_NAMES= ' <AWS profile name> '
cd functional
pytest -v
Hauptbenutzer, die an der Veröffentlichung eines benutzerdefinierten QnABot interessiert sind, können die folgenden Anweisungen zum Veröffentlichen der für externe Benutzer verfügbaren Bereitstellungsartefakte verwenden.
Erstellen Sie einen S3-Bucket, um die Vorlagen zu hosten (siehe $DIST_OUTPUT_BUCKET unten). Sie benötigen außerdem regionale Buckets für jede Region, aus der Ihre Benutzer bereitstellen. Die regionalen Buckets müssen $DIST_OUTPUT_BUCKET-$AWS_REGION heißen. Sie müssen den Zielbenutzern entsprechende Zugriffsberechtigungen für die Buckets erteilen. Die Best Practices für Bucket-Sicherheit und Zugriffskontrolle finden Sie unter den folgenden Links:
HINWEIS: Für alle Buckets muss die Versionierung aktiviert sein, andernfalls kann der Stack nicht bereitgestellt werden.
Legen Sie die folgenden Umgebungsvariablen für Ihren benutzerdefinierten QnABot fest:
export DIST_OUTPUT_BUCKET= ' <name of the bucket to upload artifacts to> '
export SOLUTION_NAME= ' <name of your custom bot> '
export VERSION= ' <bot version> '
export AWS_REGIONS=( " us-east-1 " " us-west-2 " " ap-southeast-1 " " ap-southeast-2 " " ca-central-1 " " eu-west-1 " " ap-northeast-1 " " eu-central-1 " " eu-west-2 " " ap-northeast-2 " )
Die oben genannten Variablen bestimmen den Bucket-URL-Pfad, von dem aus Ihr Bot gehostet wird. Das AWS_REGIONS-Array ist eine Liste aller Regionen, die QnABot unterstützt. Die Liste kann bei Bedarf geändert werden, wenn Ihre Bot-Version in bestimmten Regionen nicht bereitgestellt wird.
Führen Sie die folgenden Befehle aus, um die aktuelle lokale Version in den angegebenen Bucket hochzuladen:
cd deployment
./build-s3-dist.sh $DIST_OUTPUT_BUCKET $SOLUTION_NAME $VERSION
aws s3 cp global-s3-assets/ s3:// $DIST_OUTPUT_BUCKET / $SOLUTION_NAME / $VERSION / --recursive --acl bucket-owner-full-control
Erstellen Sie S3-Buckets für jede Region, falls diese noch nicht vorhanden sind. Diese Buckets müssen für die öffentliche Nutzung konfiguriert werden:
for region in " ${AWS_REGIONS[@]} " ;
do
if aws s3api head-bucket --bucket " $DIST_OUTPUT_BUCKET - $region " 2> /dev/null
then
echo " Bucket exists: s3:// $DIST_OUTPUT_BUCKET - $region "
else
aws s3api create-bucket --bucket " $DIST_OUTPUT_BUCKET - $region "
echo " Created bucket: s3:// $DIST_OUTPUT_BUCKET - $region "
fi
done
Führen Sie den folgenden Befehl für jede Region aus:
for region in " ${AWS_REGIONS[@]} " ;
do
if aws s3api head-bucket --bucket " $DIST_OUTPUT_BUCKET - $region " 2> /dev/null
then
aws s3 cp regional-s3-assets/ s3:// $DIST_OUTPUT_BUCKET - $region / $SOLUTION_NAME / $VERSION / --recursive --acl bucket-owner-full-control
else
echo " Bucket not found: s3:// $DIST_OUTPUT_BUCKET - $region "
fi
done
Die Vorlage kann über die folgende URL für alle Regionen bereitgestellt werden:
echo https:// $DIST_OUTPUT_BUCKET .s3.amazonaws.com/ $SOLUTION_NAME / $VERSION /qnabot-on-aws-main.template
Um Webpack im Entwicklungsmodus auszuführen, stellen Sie sicher, dass Folgendes vorhanden ist
Navigieren Sie zum Stammverzeichnis von QnABot (das Verzeichnis wird erstellt, sobald Sie dieses Repo geklont haben).
npm install
Weisen Sie als Nächstes die Umgebungsvariable ASSET_BUCKET_NAME
zu, die sich in package.json im dev mode
des npm-Skripts befindet. Dies ist der Name des Buckets, in den QnABot ./website-Assets lädt, und wird normalerweise <stack-name>-bucket-<randomly-generated-chars> genannt.
Sobald es richtig eingerichtet ist, führen Sie es aus
npm run dev-mode
Dadurch sollte Webpack in den Entwicklungsmodus versetzt und Assets in ./website/build nach ASSET_BUCKET_NAME
hochgeladen werden. Dadurch wird auch auf Änderungen in ./website geachtet und Assets werden in Ihren Bucket neu geladen, wenn sich die Assets ändern.
Derzeit werden nur folgende Browser unterstützt:
Einzelheiten finden Sie in der Datei LICENSE.txt.
Einzelheiten zu den neuen Funktionen in jeder Version finden Sie in der Datei CHANGELOG.md.
Es ist auch ein Workshop verfügbar, der Sie durch die QnABot-Funktionen führt.
Während sich QnABot im Laufe der Jahre weiterentwickelt, nutzt es verschiedene Dienste und Funktionen, die möglicherweise nicht mehr unterstützt werden. Dieser Abschnitt dient als Referenz auf die bereitstellbaren Lösungsversionen zusammen mit Links zu ihren öffentlichen und VPC-CloudFormation-Vorlagen.
Hinweis: Bereitstellbare Lösungsversionen beziehen sich auf die Möglichkeit, die Version von QnABot in ihren AWS-Konten bereitzustellen. Aktiv unterstützte Versionen für QnABot sind nur für die neueste Version von QnABot verfügbar.
Wir empfehlen, diese Version nicht zu verwenden, da ein potenzielles Problem mit der Testall-Funktionalität besteht, das dazu führen kann, dass eine große Anzahl von Versionen im testall S3-Bucket gespeichert wird, wenn Content Designer keine Fragen und Antworten hat. Bitte verwenden Sie die neueste verfügbare Version.
Wir empfehlen, diese Version nicht zu verwenden, da ein potenzielles Problem mit der Testall-Funktionalität besteht, das dazu führen kann, dass eine große Anzahl von Versionen im testall S3-Bucket gespeichert wird, wenn Content Designer keine Fragen und Antworten hat. Bitte verwenden Sie die neueste verfügbare Version.
v5.5.0+
zu verwenden oder auf diese zu aktualisieren, da Vue 2 das End of Life (EOL) erreicht, was alle früheren Versionen von QnABot betrifft. Weitere Informationen finden Sie unten.v5.4.X
auf spätere Versionen durchführen: Wenn Sie ein Upgrade von einer Bereitstellung durchführen, bei der LLMApi auf SAGEMAKER eingestellt ist, legen Sie diesen Wert vor dem Upgrade auf DISABLED fest. Geben Sie diesen Wert nach dem Upgrade an SAGEMAKER zurück.Wir empfehlen, diese Version nicht zu verwenden, da ein potenzielles Problem mit der Testall-Funktionalität besteht, das dazu führen kann, dass eine große Anzahl von Versionen im testall S3-Bucket gespeichert wird, wenn Content Designer keine Fragen und Antworten hat. Bitte verwenden Sie die neueste verfügbare Version.
Wir empfehlen, diese Version nicht zu verwenden, da ein potenzielles Problem mit der Testall-Funktionalität besteht, das dazu führen kann, dass eine große Anzahl von Versionen im testall S3-Bucket gespeichert wird, wenn Content Designer keine Fragen und Antworten hat. Bitte verwenden Sie die neueste verfügbare Version.
Wir empfehlen, diese Version nicht zu verwenden, da ein potenzielles Problem mit der Testall-Funktionalität besteht, das dazu führen kann, dass eine große Anzahl von Versionen im testall S3-Bucket gespeichert wird. Bitte verwenden Sie die neueste verfügbare Version.
Wir empfehlen, diese Version nicht zu verwenden, da ein potenzielles Problem mit der Testall-Funktionalität besteht, das dazu führen kann, dass eine große Anzahl von Versionen im testall S3-Bucket gespeichert wird. Bitte verwenden Sie die neueste verfügbare Version.
v5.2.1
können aufgrund der veralteten Lambda Runtime nicht mehr bereitgestellt werden. Diese Informationen werden unverändert bereitgestellt und wir empfehlen Ihnen dringend, den Verfallskalender und das Lebensende der in der Lösung verwendeten Frameworks zu überprüfen.Bei QnABot liegt der häufigste Grund darin, dass AWS Lambda Runtimes veraltet sind. Wenn eine Lambda-Laufzeitumgebung als veraltet markiert wurde, können Kunden in ihrem AWS-Konto keine neuen Lambda-Funktionen mehr erstellen. Das bedeutet, dass ältere Versionen unserer Lösungen, die diese Laufzeiten nutzen, nicht bereitgestellt werden können. Dies macht es für die Community schwierig, Support zu leisten, da wir nicht in der Lage sind, eine ähnliche Umgebung bereitzustellen, um Probleme zu untersuchen und Fehlerberichte zu reproduzieren.
Wenn derzeit eine bestehende Bereitstellung für Sie funktioniert, müssen Sie nichts aktualisieren. Es wird jedoch dringend empfohlen, einen Plan zum Testen und Migrieren von Produktionsbereitstellungen auf eine unterstützte Version zu erstellen. Je weiter eine Bereitstellung vom latest
entfernt ist, desto größer ist das Risiko einer Instabilität (insbesondere im Hinblick auf die Bereitstellung).
Und für diejenigen, die zum ersten Mal mit der Lösung beginnen möchten, empfiehlt es sich immer, die neueste Version zu verwenden. Es ist die sicherste, stabilste und funktionsreichste Version von QnABot!
In den meisten Fällen sollte ein einfacher Update-Stack-Vorgang es Ihnen ermöglichen, Ihre Instanz auf eine neuere Version zu migrieren und gleichzeitig Ihre Daten in der neuen Bereitstellung beizubehalten.
Hinweis: Für diejenigen, die ein Upgrade von
v5.4.X
auf spätere Versionen durchführen: Wenn Sie ein Upgrade von einer Bereitstellung durchführen, bei der LLMApi auf SAGEMAKER eingestellt ist, legen Sie diesen Wert vor dem Upgrade auf DISABLED fest. Geben Sie diesen Wert nach dem Upgrade an SAGEMAKER zurück.
Das Team empfiehlt dringend , alle Upgrades (insbesondere zwischen Neben- und Hauptversionen) zunächst auf einer Nicht-Produktionsinstanz zu testen, um etwaige Regressionen festzustellen. Dies ist von entscheidender Bedeutung, wenn Sie benutzerdefinierte Änderungen an Ihrer Bereitstellung vorgenommen haben, externe Dienste integrieren oder zwischen mehreren Versionen wechseln.
Einige zusätzliche Vorsichtsmaßnahmen, die Sie treffen können, sind:
Export Settings
).Diese Lösung sammelt anonymisierte Betriebsmetriken, um AWS dabei zu helfen, die Qualität und Funktionen der Lösung zu verbessern. Weitere Informationen, einschließlich der Deaktivierung dieser Funktion, finden Sie im Implementierungsleitfaden.
Urheberrecht: Amazon.com, Inc. oder seine Tochtergesellschaften. Alle Rechte vorbehalten.
Lizenziert unter der Apache-Lizenz, Version 2.0 (die „Lizenz“); Sie dürfen diese Datei nur in Übereinstimmung mit der Lizenz verwenden. Eine Kopie der Lizenz erhalten Sie unter
http://www.apache.org/licenses/LICENSE-2.0
Sofern nicht durch geltendes Recht vorgeschrieben oder schriftlich vereinbart, wird die im Rahmen der Lizenz vertriebene Software „WIE BESEHEN“ und OHNE GEWÄHRLEISTUNGEN ODER BEDINGUNGEN JEGLICHER ART, weder ausdrücklich noch stillschweigend, vertrieben. Die spezifische Sprache, die die Berechtigungen und Einschränkungen im Rahmen der Lizenz regelt, finden Sie in der Lizenz.