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 AMAZON.KendraSearchIntent Absicht , um Dokumente zu durchsuchen, die Sie mit Amazon Kendra indiziert haben. Wenn Amazon Lex V2 die nächste Aktion in einer Konversation mit dem Benutzer nicht ermitteln kann, löst es die Suchabsicht aus.

Die 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 Suchservice, der Dokumente in natürlicher Sprache wie PDF-Dokumente oder Microsoft Word-Dateien indiziert. Es kann indizierte Dokumente durchsuchen und die folgenden Arten von Antworten auf Fragen zurückgeben:

  • Antworten

  • Einträge aus häufig gestellten Fragen, die die Fragen möglicherweise beantworten

  • Dokumente, die sich auf die Fragen beziehen

Ein Beispiel für die Verwendung von AMAZON.KendraSearchIntent finden Sie unter Beispiel: Erstellen eines Bots mit häufig gestellten Fragen für einen Amazon Kendra-Index.

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

Anmerkung

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

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

  1. Amazon Lex V2 ruft die aufAMAZON.KendraSearchIntent. Die Absicht ruft die Amazon Kendra-QueryOperation auf.

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

  3. Wenn es keine Antwort von Amazon Kendra gibt, 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 Auffüllen eines Slot-Werts oder das Bestätigen einer Absicht, fährt das Gespräch mit dem Benutzer wie für den Bot konfiguriert fort.

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

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

Es gibt drei Möglichkeiten, das zu verwendenAMAZON.KendraSearchIntent, um eine Anfrage 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 Anforderung zusätzliche Abfrageparameter hinzu, um die Suchergebnisse mithilfe Ihrer Lambda-Funktion einzugrenzen. Sie fügen der delegate Dialogaktion ein kendraQueryFilterString Feld hinzu, das Amazon-Kendra-Abfrageparameter enthält. Wenn Sie der Anforderung mit der Lambda-Funktion Abfrageparameter hinzufügen, haben diese Vorrang vor dem Abfragefilter, den Sie beim Erstellen der Absicht definiert haben.

  • Erstellen Sie eine neue Abfrage mit der Lambda-Funktion. Sie können eine vollständige Amazon 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 beim Erstellen eines Bots anzugeben oder das kendraQueryFilterString Feld beim Aufrufen der delegate Aktion in einer Lambda-Funktion im Dialogfeld anzugeben, geben Sie eine Zeichenfolge an, die als Attributfilter für die Amazon-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-Entwicklerhandbuch.

Um die Kontrolle über die Abfrage zu haben, die Amazon Lex V2 an Amazon Kendra sendet, können Sie eine Abfrage im kendraQueryRequestPayloadFeld in Ihrer Lambda-Funktion 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-Entwicklerhandbuch.

Ein Beispiel für die Verwendung von AMAZON.KendraSearchIntent finden Sie unter Beispiel: Erstellen eines Bots mit häufig gestellten Fragen für einen Amazon Kendra-Index.

IAM-Richtlinie für die Amazon Kendra-Suche

Um die AMAZON.KendraSearchIntent Absicht zu verwenden, müssen Sie eine Rolle verwenden, die AWS Identity and Access Management (IAM)-Richtlinien bereitstellt, mit denen Amazon Lex V2 eine Laufzeitrolle übernehmen kann, die über die Berechtigung zum Aufrufen der Amazon-Kendra-QueryAbsicht verfügt. Welche IAM-Einstellungen Sie verwenden, hängt davon ab, ob Sie die AMAZON.KendraSearchIntent mit der Amazon Lex V2-Konsole oder mit einem AWS SDK oder der AWS Command Line Interface () erstellenAWS CLI. 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 verwenden möchten, die speziell für den Aufruf der Amazon-Kendra-QueryOperation bestimmt ist. Wenn Sie die AWS CLI oder ein SDK verwenden, um die Absicht zu erstellen, müssen Sie eine Rolle speziell für den Aufruf der -QueryOperation verwenden.

Anfügen von Berechtigungen

Sie können die Konsole verwenden, um Berechtigungen für den Zugriff auf die Amazon Kendra-QueryOperation an die standardmäßige serviceverknüpfte Amazon Lex V2-Rolle anzufügen. Wenn Sie Berechtigungen an die serviceverknüpfte Rolle anfügen, müssen Sie keine Laufzeitrolle speziell erstellen und verwalten, um eine Verbindung zum Amazon 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 zum Verwalten von Rollenrichtlinien verfügen. Fügen Sie die folgende IAM-Richtlinie an die Konsolenzugriffsrolle an. 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 -API verwenden AWS CLI, um eine Laufzeitrolle anzugeben, die beim Aufrufen der Amazon-Kendra-QueryOperation verwendet werden soll.

Der Benutzer, die Rolle oder die Gruppe, die Sie zur Angabe der Laufzeitrolle verwenden, muss über die -iam:PassRoleBerechtigung 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- und AWS STS Bedingungskontextschlüssel 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 Laufzeitrolle, die Amazon Lex V2 zum Aufrufen von Amazon Kendra verwenden muss, muss über die -kendra:QueryBerechtigungen verfügen. Wenn Sie eine vorhandene IAM-Rolle für die Berechtigung zum Aufrufen der Amazon Kendra-QueryOperation verwenden, muss der Rolle die folgende Richtlinie zugeordnet sein.

Sie können die IAM-Konsole, die IAM-API oder die verwenden, AWS CLI um eine Richtlinie zu erstellen und sie einer Rolle anzufügen. In diesen Anweisungen wird die AWS CLI zum Erstellen der Rolle und Richtlinien verwendet.

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 der Amazon Kendra-QueryOperation zu erstellen.

    aws iam create-policy \ --policy-name query-policy-name \ --policy-document file://KendraQueryPolicy.json
  3. Fügen Sie die Richtlinie an die IAM-Rolle an, die Sie zum Aufrufen der -QueryOperation verwenden.

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

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

So geben Sie die Laufzeitrolle für an AMAZON.KendraSearchIntent
  1. Melden Sie sich bei der an AWS Management Console und öffnen Sie die Amazon 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 unter IAM role (IAM-Rolle) eine der folgenden Optionen:

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

    • Um eine Rolle zu verwenden, die über die Berechtigung zum Aufrufen der Amazon Kendra-QueryOperation verfügt, wählen Sie Vorhandene Rolle verwenden aus.

Verwenden von Anforderungs- und Sitzungsattributen als Filter

Um die Antwort von Amazon Kendra auf Elemente im Zusammenhang mit der aktuellen Konversation zu filtern, 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 es Amazon Kendra aufruft. 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-Abfrage zu filtern.

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

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

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

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

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

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

Die mit der verwendete Abfragefilterzeichenfolge AMAZON.KendraSearchIntent muss für den ersten Buchstaben jedes Filters Kleinbuchstaben verwenden. Im Folgenden finden Sie beispielsweise einen gültigen Abfragefilter für die 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 IntentClosingSetting Anweisung der Absicht zurück. Die Absicht muss eine -closingResponseAnweisung haben, es sei denn, eine Lambda-Funktion erzeugt eine schließende Antwortnachricht.

Amazon Kendra verfügt über fünf Arten von Antworten.

  • Die folgenden beiden Antworten erfordern die Einrichtung einer häufig gestellten Fragen für Ihren Amazon-Kendra-Index. Weitere Informationen finden Sie unter Hinzufügen von Fragen und Antworten direkt zu einem Index.

    • x-amz-lex:kendra-search-response-question_answer-question-<N> – Die Frage aus einer häufig gestellten Frage, die der Suche entspricht.

    • x-amz-lex:kendra-search-response-question_answer-answer-<N> – Die Antwort auf eine häufig gestellte Frage, die der Suche entspricht.

  • Die folgenden drei Antworten erfordern, dass eine Datenquelle für Ihren Amazon-Kendra-Index eingerichtet wird. 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> – Die URL eines Dokuments 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-Entwicklerhandbuch.

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 jeder Antwort von Amazon Kendra überein:

  • „Ich habe eine häufig gestellte Frage für Sie gefunden: ((x-amz-lex:kendra-search-response-question_answer-question-1)) und die Antwort lautet ((x-amz-lex:kendra-search-response-question_answer-answer-1)“

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

  • „Die Antwort auf Ihre Fragen ist ((x-amz-lex:kendra-search-response-answer-1))“

Verwenden einer Lambda-Funktion zur Verwaltung von Anfrage und Antwort

Die AMAZON.KendraSearchIntent Absicht kann Ihren Dialogcode-Hook und den Fulfillment-Code-Hook verwenden, um die Anfrage an Amazon Kendra und die Antwort zu verwalten. Verwenden Sie die Lambda-Funktion des Dialogcode-Hooks, wenn Sie die an Amazon Kendra gesendete Abfrage ändern möchten, und die Lambda-Funktion des Erfüllungscode-Hooks, wenn Sie die Antwort ändern möchten.

Erstellen einer Abfrage mit dem Dialogcode-Hook

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

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

  • kendraQueryFilterString – Verwenden Sie diese Zeichenfolge, um Attributfilter für die Amazon Kendra-Anforderung anzugeben. Sie können die Abfrage mithilfe eines beliebigen in Ihrem Index definierten Indexfelds filtern. Die Struktur der Filterzeichenfolge finden Sie unter Verwenden von Dokumentattributen zum Filtern von Abfragen im Amazon Kendra-Entwicklerhandbuch. 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-Abfrage anzugeben. Ihre Abfrage kann alle Funktionen von Amazon Kendra verwenden. Wenn Sie keine gültige Abfrage angeben, erhalten Sie die Ausnahme InvalidLambdaResponseException. Weitere Informationen finden Sie unter Abfrage im Amazon Kendra-Entwicklerhandbuch.

Nachdem Sie den Filter oder die Abfragezeichenfolge erstellt haben, senden Sie die Antwort an Amazon Lex V2, wobei das dialogAction Feld der Antwort auf festgelegt istdelegate. Amazon Lex V2 sendet die Abfrage an Amazon Kendra und gibt dann die Abfrageantwort an den -Erfüllungscode-Hook zurück.

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

Nachdem Amazon Lex V2 eine Abfrage an Amazon Kendra gesendet hat, wird die Abfrageantwort an die Lambda-AMAZON.KendraSearchIntentErfüllungsfunktion 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-QueryOperation zurückgegeben wird. Weitere Informationen finden Sie unter Abfrageantwortsyntax im Amazon-Kendra-Entwicklerhandbuch.

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