AMAZON.KendraSearchIntent - Amazon Lex

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.

AMAZON.KendraSearchIntent

Verwenden Sie die Absicht, um nach Dokumenten zu suchen, die Sie mit Amazon Kendra indexiert haben. AMAZON.KendraSearchIntent Wenn Amazon Lex V2 die nächste Aktion in einer Konversation mit dem Benutzer nicht bestimmen kann, löst es die Suchabsicht aus.

Das AMAZON.KendraSearchIntent ist nur im Gebietsschema Englisch (USA) (en-US) und in den Regionen USA Ost (Nord-Virginia), USA West (Oregon) und Europa (Irland) verfügbar.

Amazon Kendra ist ein machine-learning-based Suchdienst, der Dokumente in natürlicher Sprache wie PDF Dokumente oder Microsoft Word-Dateien indexiert. Es kann indizierte Dokumente durchsuchen und die folgenden Arten von Antworten auf Fragen zurückgeben:

  • Antworten

  • Ein Eintrag von einemFAQ, der die Frage beantworten könnte

  • Dokumente, die sich auf die Fragen beziehen

Ein Beispiel für die Verwendung von AMAZON.KendraSearchIntent finden Sie unter Beispiel: Einen FAQ Bot für einen Amazon Kendra Kendra-Index erstellen.

Wenn Sie eine AMAZON.KendraSearchIntent Absicht für Ihren Bot konfigurieren, ruft Amazon Lex V2 die Absicht immer dann auf, wenn die Benutzeräußerung für eine Absicht nicht bestimmt werden kann. Wenn keine Antwort von Amazon Kendra eingeht, wird die Konversation wie im Bot konfiguriert fortgesetzt.

Anmerkung

Amazon Lex V2 unterstützt derzeit das AMAZON.KendraSearchIntent während der Slot-Erfassung nicht. Wenn Amazon Lex V2 die Benutzeräußerung für einen Slot nicht ermitteln kann, ruft es den aufAMAZON.FallbackIntent.

Wenn Sie das AMAZON.KendraSearchIntent mit dem AMAZON.FallbackIntent im selben Bot verwenden, verwendet Amazon Lex V2 die Absichten wie folgt:

  1. Amazon Lex V2 nennt dasAMAZON.KendraSearchIntent. Die Absicht nennt Amazon Kendra Query Operation.

  2. Wenn Amazon Kendra eine Antwort zurückgibt, zeigt Amazon Lex V2 dem Benutzer das Ergebnis an.

  3. Wenn Amazon Kendra keine Antwort erhält, fordert Amazon Lex V2 den Benutzer erneut auf. Die nächste Aktion hängt von der Antwort des Benutzers ab.

    • Wenn die Antwort des Benutzers eine Äußerung enthält, die Amazon Lex V2 erkennt, z. B. das Ausfüllen eines Slot-Werts oder die Bestätigung einer Absicht, wird die Konversation mit dem Benutzer wie für den Bot konfiguriert fortgesetzt.

    • Wenn die Antwort des Benutzers keine Äußerung enthält, die Amazon Lex V2 erkennt, ruft Amazon Lex V2 den Query Vorgang erneut auf.

  4. Wenn nach der konfigurierten Anzahl von Wiederholungen keine Antwort erfolgt, ruft Amazon Lex V2 den auf AMAZON.FallbackIntent und beendet die Konversation mit dem Benutzer.

Es gibt drei Möglichkeiten, mit dem eine Anfrage AMAZON.KendraSearchIntent an Amazon Kendra zu stellen:

  • Lassen Sie die Suchabsicht die Anfrage für Sie stellen. Amazon Lex V2 ruft Amazon Kendra mit der Äußerung des Benutzers als Suchzeichenfolge auf. Wenn Sie die Absicht erstellen, können Sie eine Abfragefilterzeichenfolge definieren, die die Anzahl der Antworten begrenzt, die Amazon Kendra zurückgibt. Amazon Lex V2 verwendet den Filter in der Abfrageanforderung.

  • Fügen Sie der Anfrage zusätzliche Abfrageparameter hinzu, um die Suchergebnisse mithilfe Ihrer Lambda-Funktion einzugrenzen. Sie fügen der delegate Dialogaktion ein kendraQueryFilterString Feld hinzu, Amazon Kendra Kendra-Abfrageparameter enthält. Wenn Sie der Anfrage mit der Lambda-Funktion Abfrageparameter hinzufügen, haben diese Vorrang vor dem Abfragefilter, den Sie bei der Erstellung der Absicht definiert haben.

  • Erstellen Sie eine neue Abfrage mit der Lambda-Funktion. Sie können eine vollständige Amazon Kendra Kendra-Abfrageanforderung erstellen, die Amazon Lex V2 sendet. Sie legen die Abfrage im Feld kendraQueryRequestPayload in der Dialogaktion delegate fest. Das Feld kendraQueryRequestPayload hat Vorrang vor dem Feld kendraQueryFilterString.

Um den queryFilterString Parameter anzugeben, wenn Sie einen Bot erstellen, oder um das kendraQueryFilterString Feld anzugeben, wenn Sie die delegate Aktion in einer Dialog-Lambda-Funktion aufrufen, geben Sie eine Zeichenfolge an, die als Attributfilter für die Amazon Kendra Kendra-Abfrage verwendet wird. Wenn die Zeichenfolge kein gültiger Attributfilter ist, wird zur Laufzeit die Ausnahme InvalidBotConfigException zurückgegeben. Weitere Informationen zu Attributfiltern finden Sie unter Verwenden von Dokumentattributen zum Filtern von Abfragen im Amazon Kendra Developer Guide.

Um die Abfrage zu kontrollieren, die Amazon Lex V2 an Amazon Kendra sendet, können Sie in dem kendraQueryRequestPayload Feld Ihrer Lambda-Funktion eine Abfrage angeben. Wenn die Abfrage nicht gültig ist, gibt Amazon Lex V2 eine InvalidLambdaResponseException Ausnahme zurück. Weitere Informationen finden Sie unter Abfragevorgang im Amazon Kendra Developer Guide.

Ein Beispiel für die Verwendung von AMAZON.KendraSearchIntent finden Sie unter Beispiel: Einen FAQ Bot für einen Amazon Kendra Kendra-Index erstellen.

IAMRichtlinie für Amazon Kendra Search

Um den AMAZON.KendraSearchIntent Intent zu verwenden, müssen Sie eine Rolle verwenden, die AWS Identity and Access Management (IAM) -Richtlinien bereitstellt, die es Amazon Lex V2 ermöglichen, eine Runtime-Rolle anzunehmen, die berechtigt ist, den Amazon Kendra Query Kendra-Intent aufzurufen. Die IAM Einstellungen, die Sie verwenden, hängen davon ab, ob Sie die AMAZON.KendraSearchIntent mit der Amazon Lex V2-Konsole oder mit einem AWS SDK oder dem AWS Command Line Interface (AWS CLI) erstellen. Wenn Sie die Konsole verwenden, können Sie wählen, ob Sie der serviceverknüpften Amazon Lex V2-Rolle die Berechtigung zum Aufrufen von Amazon Kendra hinzufügen oder eine Rolle speziell für den Aufruf des Amazon Query Kendra Kendra-Vorgangs verwenden möchten. Wenn Sie das AWS CLI oder an verwenden, um die Absicht SDK zu erstellen, müssen Sie eine Rolle verwenden, die speziell für den Aufruf der Operation bestimmt ist. Query

Anfügen von Berechtigungen

Sie können die Konsole verwenden, um der standardmäßigen serviceverknüpften Amazon Lex V2-Rolle Berechtigungen für den Zugriff auf den Amazon Query Kendra-Vorgang zuzuweisen. Wenn Sie der serviceverknüpften Rolle Berechtigungen zuordnen, müssen Sie keine spezielle Runtime-Rolle erstellen und verwalten, um eine Verbindung zum Amazon Kendra Kendra-Index herzustellen.

Der Benutzer, die Rolle oder die Gruppe, die Sie für den Zugriff auf die Amazon Lex V2-Konsole verwenden, muss über Berechtigungen zur Verwaltung von Rollenrichtlinien verfügen. Fügen Sie der Konsolenzugriffsrolle die folgende IAM Richtlinie hinzu. Wenn Sie diese Berechtigungen erteilen, verfügt die Rolle über Berechtigungen zum Ändern der vorhandenen Richtlinie für die serviceverknüpfte Rolle.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:AttachRolePolicy", "iam:PutRolePolicy", "iam:GetRolePolicy" ], "Resource": "arn:aws:iam::*:role/aws-service-role/lexv2.amazonaws.com/AWSServiceRoleForLexBots*" }, { "Effect": "Allow", "Action": "iam:ListRoles", "Resource": "*" } ] }

Angeben einer Rolle

Sie können die Konsole, die oder die verwenden AWS CLI, API um eine Laufzeitrolle anzugeben, die beim Aufrufen des Amazon Kendra Query Kendra-Vorgangs verwendet werden soll.

Der Benutzer, die Rolle oder die Gruppe, die Sie zur Angabe der Runtime-Rolle verwenden, muss über die iam:PassRole entsprechende Berechtigung verfügen. Die folgende Richtlinie definiert die Berechtigung. Sie können die Bedingungskontextschlüssel iam:AssociatedResourceArn und iam:PassedToService verwenden, um den Umfang der Berechtigungen weiter einzuschränken. Weitere Informationen finden Sie unter IAM AWS STS Condition Context Keys im AWS Identity and Access Management Benutzerhandbuch.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::account:role/role" } ] }

Die Runtime-Rolle, die Amazon Lex V2 zum Aufrufen von Amazon Kendra verwenden muss, muss über die kendra:Query entsprechenden Berechtigungen verfügen. Wenn Sie eine bestehende IAM Rolle für die Genehmigung zum Aufrufen des Amazon Kendra Query Kendra-Vorgangs verwenden, muss der Rolle die folgende Richtlinie beigefügt sein.

Sie können die IAM Konsole, die oder die verwenden IAMAPI, AWS CLI um eine Richtlinie zu erstellen und sie einer Rolle zuzuordnen. In diesen Anweisungen werden AWS CLI die Rolle und die Richtlinien erstellt.

Anmerkung

Der folgende Code ist für Linux und MacOS formatiert. Ersetzen Sie unter Windows das Linux-Zeilenfortsetzungszeichen (\) durch ein Caret-Zeichen (^).

So fügen Sie einer Rolle die Berechtigung für die Query-Operation hinzu
  1. Erstellen Sie im aktuellen Verzeichnis ein Dokument mit dem Namen KendraQueryPolicy.json, fügen Sie ihm folgenden Code hinzu und speichern Sie es.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kendra:Query" ], "Resource": [ "arn:aws:kendra:region:account:index/index ID" ] } ] }
  2. Führen Sie in der den folgenden Befehl aus AWS CLI, um die IAM Richtlinie für die Ausführung des Amazon Kendra Query Kendra-Vorgangs zu erstellen.

    aws iam create-policy \ --policy-name query-policy-name \ --policy-document file://KendraQueryPolicy.json
  3. Ordnen Sie die Richtlinie der IAM Rolle zu, mit der Sie den Query Vorgang aufrufen.

    aws iam attach-role-policy \ --policy-arn arn:aws:iam::account-id:policy/query-policy-name --role-name role-name

Sie können wählen, ob Sie die serviceverknüpfte Amazon Lex V2-Rolle aktualisieren oder eine Rolle verwenden möchten, die Sie bei der Erstellung der AMAZON.KendraSearchIntent für Ihren Bot erstellt haben. Das folgende Verfahren zeigt, wie Sie die zu IAM verwendende Rolle auswählen.

Um die Runtime-Rolle für anzugeben AMAZON.KendraSearchIntent
  1. Melden Sie sich bei der an AWS Management Console und öffnen Sie die Amazon Lex Lex-Konsole unter https://console.aws.amazon.com/lex/.

  2. Wählen Sie den Bot, dem Sie AMAZON.KendraSearchIntent hinzufügen möchten.

  3. Wählen Sie das Pluszeichen (+) neben Intents (Absichten).

  4. Wählen Sie unter Add intent (Absicht hinzufügen) die Option Search existing intents (Vorhandene Absichten durchsuchen).

  5. Geben Sie unter Search intents (Absichten suchen) AMAZON.KendraSearchIntent ein und wählen Sie dann Add (Hinzufügen).

  6. Geben Sie unter Copy built-in intent (Integrierte Absicht kopieren) einen Namen für die Absicht ein, z. B. KendraSearchIntent, und wählen Sie dann Add (Hinzufügen).

  7. Öffnen Sie den Abschnitt Amazon Kendra query (Amazon Kendra-Abfrage).

  8. Wählen Sie für die IAMRolle eine der folgenden Optionen:

    • Um die serviceverknüpfte Amazon Lex V2-Rolle zu aktualisieren, sodass Ihr Bot Amazon Kendra Kendra-Indizes abfragen kann, wählen Sie Amazon Kendra Kendra-Berechtigungen hinzufügen.

    • Um eine Rolle zu verwenden, die berechtigt ist, den Amazon Kendra Query Kendra-Vorgang aufzurufen, wählen Sie Bestehende Rolle verwenden.

Verwenden von Anforderungs- und Sitzungsattributen als Filter

Um die Antwort von Amazon Kendra auf Elemente zu filtern, die sich auf die aktuelle Konversation beziehen, verwenden Sie Sitzungs- und Anforderungsattribute als Filter, indem Sie den queryFilterString Parameter hinzufügen, wenn Sie Ihren Bot erstellen. Sie geben einen Platzhalter für das Attribut an, wenn Sie die Absicht erstellen, und dann ersetzt Amazon Lex V2 einen Wert, bevor Amazon Kendra aufgerufen wird. Weitere Informationen zu Anforderungsattributen finden Sie unter Anforderungsattribute einrichten. Weitere Informationen über Sitzungsattribute finden Sie unter Sitzungsattribute einrichten.

Im Folgenden finden Sie ein Beispiel für einen queryFilterString Parameter, der eine Zeichenfolge verwendet, um die Amazon Kendra Kendra-Abfrage zu filtern.

"{"equalsTo": {"key": "City", "value": {"stringValue": "Seattle"}}}"

Im Folgenden finden Sie ein Beispiel für einen queryFilterString Parameter, der ein Sitzungsattribut verwendet, das aufgerufen wird"SourceURI", um die Amazon Kendra Kendra-Abfrage zu filtern.

"{"equalsTo": {"key": "SourceURI","value": {"stringValue": "[FileURL]"}}}"

Im Folgenden finden Sie ein Beispiel für einen queryFilterString Parameter, der ein Anforderungsattribut verwendet, das aufgerufen wird"DepartmentName", um die Amazon Kendra Kendra-Abfrage zu filtern.

"{"equalsTo": {"key": "Department","value": {"stringValue": "((DepartmentName))"}}}"

Die AMAZON.KendraSearchInteng Filter verwenden dasselbe Format wie die Amazon Kendra Kendra-Suchfilter. Weitere Informationen finden Sie unter Verwenden von Dokumentattributen zum Filtern von Suchergebnissen im Amazon Kendra Developer Guide.

Die mit dem verwendete Abfragefilterzeichenfolge AMAZON.KendraSearchIntent muss Kleinbuchstaben für den ersten Buchstaben jedes Filters verwenden. Der folgende ist beispielsweise ein gültiger Abfragefilter für. AMAZON.KendraSearchIntent

{ "andAllFilters": [ { "equalsTo": { "key": "City", "value": { "stringValue": "Seattle" } } }, { "equalsTo": { "key": "State", "value": { "stringValue": "Washington" } } } ] }

Verwenden der Suchantwort

Amazon Kendra gibt die Antwort auf eine Suche als Antwort auf die Absichtserklärung zurück. IntentClosingSetting Die Absicht muss eine closingResponse Aussage enthalten, es sei denn, eine Lambda-Funktion erzeugt eine abschließende Antwortnachricht.

Amazon Kendra bietet fünf Arten von Antworten.

  • Für die folgenden beiden Antworten FAQ muss ein für Ihren Amazon Kendra Kendra-Index eingerichtet werden. Weitere Informationen finden Sie unter Fragen und Antworten direkt zu einem Index hinzufügen.

    • x-amz-lex:kendra-search-response-question_answer-question-<N>— Die Frage von aFAQ, die der Suche entspricht.

    • x-amz-lex:kendra-search-response-question_answer-answer-<N>— Die Antwort von aFAQ, die der Suche entspricht.

  • Für die folgenden drei Antworten muss eine Datenquelle für Ihren Amazon Kendra Kendra-Index eingerichtet werden. Weitere Informationen finden Sie unter Erstellen einer Datenquelle.

    • x-amz-lex:kendra-search-response-document-<N>— Ein Auszug aus einem Dokument im Index, der sich auf den Text der Äußerung bezieht.

    • x-amz-lex:kendra-search-response-document-link-<N>— Das URL Dokument im Index, das sich auf den Text der Äußerung bezieht.

    • x-amz-lex:kendra-search-response-answer-<N>— Ein Auszug aus einem Dokument im Index, das die Frage beantwortet.

Die Antworten werden in request-Attributen zurückgegeben. Für jedes Attribut kann es bis zu fünf Antworten geben, nummeriert von 1 bis 5. Weitere Informationen zu Antworten finden Sie unter Antworttypen im Amazon Kendra Developer Guide.

Die Anweisung closingResponse muss eine oder mehrere Nachrichtengruppen aufweisen. Jede Nachrichtengruppe enthält eine oder mehrere Nachrichten. Jede Nachricht kann eine oder mehrere Platzhaltervariablen enthalten, die in der Antwort von Amazon Kendra durch Anforderungsattribute ersetzt werden. In der Nachrichtengruppe muss mindestens eine Nachricht vorhanden sein, in der alle Variablen in der Nachricht durch Anforderungsattributwerte in der Laufzeitantwort ersetzt werden, oder in der Gruppe muss eine Nachricht ohne Platzhaltervariablen vorhanden sein. Die Anforderungsattribute werden durch doppelte Klammern ("((" "))") hervorgehoben. Die folgenden Nachrichtengruppennachrichten stimmen mit allen Antworten von Amazon Kendra überein:

  • „Ich habe eine FAQ Frage für Sie gefunden: ((x-amz-lex: kendra-search-response-question _answer-question-1)), und die Antwort lautet ((: _answer-answer-1))“ x-amz-lex kendra-search-response-question

  • „Ich habe einen Auszug aus einem hilfreichen Dokument gefunden: ((: -1))“ x-amz-lex kendra-search-response-document

  • „Ich denke, die Antwort auf Ihre Fragen lautet ((x-amz-lex: kendra-search-response-answer -1))“

Verwenden einer Lambda-Funktion zur Verwaltung der Anfrage und Antwort

Die AMAZON.KendraSearchIntent Absicht kann Ihren Dialog-Code-Hook und Ihren Fulfillment-Code-Hook verwenden, um die Anfrage an Amazon Kendra und die Antwort zu verwalten. Verwenden Sie die Dialogcode-Hook-Lambda-Funktion, wenn Sie die Anfrage ändern möchten, die Sie an Amazon Kendra senden, und die Lambda-Funktion für den Fulfillment-Code-Hook, wenn Sie die Antwort ändern möchten.

Erstellen einer Abfrage mit dem Dialogcode-Hook

Sie können den Dialog-Code-Hook verwenden, um eine Abfrage zu erstellen, die an Amazon Kendra gesendet werden soll. Die Verwendung des Dialogcode-Hooks ist optional. Wenn Sie keinen Dialog-Code-Hook angeben, erstellt Amazon Lex V2 eine Abfrage aus der Benutzeräußerung und verwendet diequeryFilterString, die Sie bei der Konfiguration der Absicht angegeben haben, sofern Sie eine angegeben haben.

Sie können zwei Felder in der Dialog-Code-Hook-Antwort verwenden, um die Anfrage an Amazon Kendra zu ändern:

  • kendraQueryFilterString— Verwenden Sie diese Zeichenfolge, um Attributfilter für die Amazon Kendra Kendra-Anforderung anzugeben. Sie können die Abfrage mithilfe eines beliebigen in Ihrem Index definierten Indexfelds filtern. Informationen zur Struktur der Filterzeichenfolge finden Sie unter Verwenden von Dokumentattributen zum Filtern von Abfragen im Amazon Kendra Developer Guide. Wenn die angegebene Filterzeichenfolge ungültig ist, erhalten Sie die Ausnahme InvalidLambdaResponseException. Die kendraQueryFilterString-Zeichenfolge überschreibt alle Abfragezeichenfolgen, die im für diese Absicht konfigurierten queryFilterString angegeben sind.

  • kendraQueryRequestPayload— Verwenden Sie diese Zeichenfolge, um eine Amazon Kendra Kendra-Abfrage anzugeben. Ihre Anfrage kann alle Funktionen von Amazon Kendra verwenden. Wenn Sie keine gültige Abfrage angeben, erhalten Sie die Ausnahme InvalidLambdaResponseException. Weitere Informationen finden Sie unter Query im Amazon Kendra Developer Guide.

Nachdem Sie den Filter oder die Abfragezeichenfolge erstellt haben, senden Sie die Antwort an Amazon Lex V2, wobei das dialogAction Feld der Antwort auf gesetzt istdelegate. Amazon Lex V2 sendet die Anfrage an Amazon Kendra und sendet dann die Abfrageantwort an den Fulfillment-Code-Hook zurück.

Verwenden des Erfüllungscode-Hooks für die Antwort

Nachdem Amazon Lex V2 eine Anfrage an Amazon Kendra gesendet hat, wird die Abfrageantwort an die AMAZON.KendraSearchIntent Fulfillment-Lambda-Funktion zurückgegeben. Das Eingabeereignis für den Code-Hook enthält die vollständige Antwort von Amazon Kendra. Die Abfragedaten haben dieselbe Struktur wie die, die von der Amazon Kendra Query Kendra-Operation zurückgegeben wurde. Weitere Informationen finden Sie unter Syntax der Abfrageantwort im Amazon Kendra Developer Guide.

Der Erfüllungscode-Hook ist optional. Wenn keine vorhanden ist oder wenn der Code-Hook keine Nachricht in der Antwort zurückgibt, verwendet Amazon Lex V2 die closingResponse Anweisung für Antworten.