AMAZON.KendraSearchIntent - Amazon Lex

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

AMAZON.KendraSearchIntent

Per cercare documenti che hai indicizzato con Amazon Kendra, usa l'intento. AMAZON.KendraSearchIntent Quando Amazon Lex V2 non è in grado di determinare l'azione successiva in una conversazione con l'utente, attiva l'intento di ricerca.

AMAZON.KendraSearchIntentÈ disponibile solo nelle impostazioni locali in inglese (USA) (en-US) e nelle regioni Stati Uniti orientali (Virginia settentrionale), Stati Uniti occidentali (Oregon) ed Europa (Irlanda).

Amazon Kendra è machine-learning-based un servizio di ricerca che indicizza documenti in linguaggio naturale come PDF documenti o file di Microsoft Word. Può ricercare documenti indicizzati e restituire i seguenti tipi di risposte a una domanda:

  • Una risposta

  • Una voce di un FAQ che potrebbe rispondere alla domanda

  • Un documento correlato alla domanda

Per un esempio di utilizzo di AMAZON.KendraSearchIntent, consulta Esempio: creazione di un FAQ bot per un indice Amazon Kendra.

Se configuri un AMAZON.KendraSearchIntent intento per il tuo bot, Amazon Lex V2 chiama l'intento ogni volta che non è in grado di determinare l'espressione dell'intento da parte dell'utente. Se non viene ricevuta alcuna risposta da Amazon Kendra, la conversazione continua come configurato nel bot.

Nota

Amazon Lex V2 attualmente non supporta l'elicitazione AMAZON.KendraSearchIntent durante lo slot. Se Amazon Lex V2 non è in grado di determinare l'enunciato dell'utente per uno slot, chiama il. AMAZON.FallbackIntent

Quando usi il AMAZON.KendraSearchIntent con lo AMAZON.FallbackIntent stesso bot, Amazon Lex V2 utilizza gli intenti come segue:

  1. Amazon Lex V2 chiama ilAMAZON.KendraSearchIntent. L'intento chiama l'operazione Amazon KendraQuery.

  2. Se Amazon Kendra restituisce una risposta, Amazon Lex V2 mostra il risultato all'utente.

  3. Se non viene ricevuta alcuna risposta da Amazon Kendra, Amazon Lex V2 richiede nuovamente una richiesta all'utente. L'operazione successiva dipende dalla risposta dell'utente.

    • Se la risposta dell'utente contiene un enunciato riconosciuto da Amazon Lex V2, ad esempio il riempimento di un valore di slot o la conferma di un intento, la conversazione con l'utente procede come configurato per il bot.

    • Se la risposta dell'utente non contiene un enunciato riconosciuto da Amazon Lex V2, Amazon Lex V2 effettua un'altra chiamata all'operazione. Query

  4. Se non viene fornita alcuna risposta dopo il numero di tentativi configurato, Amazon Lex V2 chiama AMAZON.FallbackIntent e termina la conversazione con l'utente.

Esistono tre modi per inviare una richiesta AMAZON.KendraSearchIntent ad Amazon Kendra:

  • Lascia che sia l'intento di ricerca a fare la richiesta per te. Amazon Lex V2 chiama Amazon Kendra con l'enunciato dell'utente come stringa di ricerca. Quando crei l'intento, puoi definire una stringa di filtro di query che limiti il numero di risposte restituite da Amazon Kendra. Amazon Lex V2 utilizza il filtro nella richiesta di query.

  • Aggiungi parametri di query aggiuntivi alla richiesta per restringere i risultati della ricerca utilizzando la funzione Lambda. Aggiungi un kendraQueryFilterString campo che contiene i parametri di interrogazione di Amazon Kendra all'delegateazione di dialogo. Quando aggiungi parametri di query alla richiesta con la funzione Lambda, hanno la precedenza sul filtro di query definito al momento della creazione dell'intento.

  • Crea una nuova query utilizzando la funzione Lambda. Puoi creare una richiesta di query Amazon Kendra completa inviata da Amazon Lex V2. È possibile specificare la query nel campo kendraQueryRequestPayload dell'operazione di dialogo delegate. Il campo kendraQueryRequestPayload ha la precedenza sul campo kendraQueryFilterString.

Per specificare il queryFilterString parametro quando crei un bot o per specificare il kendraQueryFilterString campo quando richiami l'delegateazione in una funzione Lambda di dialogo, specifichi una stringa che viene utilizzata come filtro degli attributi per la query Amazon Kendra. Se la stringa non è un filtro di attributo valido, si otterrà un'eccezione InvalidBotConfigException in fase di runtime. Per ulteriori informazioni sui filtri degli attributi, consulta Using document attributes to filter query nella Amazon Kendra Developer Guide.

Per avere il controllo sulla query che Amazon Lex V2 invia ad Amazon Kendra, puoi specificare una query kendraQueryRequestPayload nel campo della tua funzione Lambda. Se la query non è valida, Amazon Lex V2 restituisce un'InvalidLambdaResponseExceptioneccezione. Per ulteriori informazioni, consulta l'operazione di interrogazione nella Amazon Kendra Developer Guide.

Per un esempio di come utilizzare AMAZON.KendraSearchIntent, consulta Esempio: creazione di un FAQ bot per un indice Amazon Kendra.

IAMPolitica per Amazon Kendra Search

Per utilizzare l'AMAZON.KendraSearchIntentintento, è necessario utilizzare un ruolo che fornisca AWS Identity and Access Management (IAM) politiche che consentano ad Amazon Lex V2 di assumere un ruolo di runtime autorizzato a chiamare l'intento di Amazon Kendra. Query Le IAM impostazioni che utilizzi dipendono dal fatto che tu crei AMAZON.KendraSearchIntent utilizzando la console Amazon Lex V2 o utilizzando un AWS SDK o il AWS Command Line Interface (AWS CLI). Quando usi la console, puoi scegliere tra aggiungere l'autorizzazione per chiamare Amazon Kendra al ruolo collegato al servizio Amazon Lex V2 o utilizzare un ruolo specifico per chiamare l'operazione Amazon Kendra. Query Quando usi AWS CLI o un SDK per creare l'intento, devi usare un ruolo specifico per chiamare l'operazione. Query

Collegamento di autorizzazioni

Puoi utilizzare la console per associare le autorizzazioni per accedere all'operazione Query Amazon Kendra al ruolo predefinito collegato al servizio Amazon Lex V2. Quando associ le autorizzazioni al ruolo collegato al servizio, non devi creare e gestire un ruolo di runtime specifico per connetterti all'indice Amazon Kendra.

L'utente, il ruolo o il gruppo che usi per accedere alla console Amazon Lex V2 deve disporre delle autorizzazioni per gestire le politiche dei ruoli. Allega la seguente IAM policy al ruolo di accesso alla console. Quando si concedono queste autorizzazioni, il ruolo dispone delle autorizzazioni necessarie per modificare la policy del ruolo collegato ai servizi esistente.

{ "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": "*" } ] }

Specifica di un ruolo

Puoi usare la console AWS CLI, o il API per specificare un ruolo di runtime da usare quando chiami l'operazione Amazon Query Kendra.

L'utente, il ruolo o il gruppo che usi per specificare il ruolo di runtime deve disporre dell'iam:PassRoleautorizzazione. La policy seguente definisce l'autorizzazione. È possibile utilizzare le chiavi di contesto di condizione iam:AssociatedResourceArn e iam:PassedToService per limitare ulteriormente l'ambito delle autorizzazioni. Per ulteriori informazioni, consulta IAMe AWS STS Condition Context Keys nella Guida AWS Identity and Access Management per l'utente.

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

Il ruolo di runtime che Amazon Lex V2 deve utilizzare per chiamare Amazon Kendra deve disporre delle autorizzazioni. kendra:Query Quando utilizzi un IAM ruolo esistente per ottenere l'autorizzazione a chiamare l'operazione Amazon Query Kendra, al ruolo deve essere associata la seguente politica.

Puoi utilizzare la IAM console IAMAPI, il o il AWS CLI per creare una policy e associarla a un ruolo. Queste istruzioni utilizzano il AWS CLI per creare il ruolo e le politiche.

Nota

Il codice seguente è formattato per Linux e MacOS. Per Windows, sostituire il carattere di continuazione della riga di Linux (\) con un accento circonflesso (^).

Per aggiungere l'autorizzazione per l'operazione Query a un ruolo
  1. Creare un documento denominato KendraQueryPolicy.json nella directory corrente, aggiungervi il seguente codice e salvarlo

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kendra:Query" ], "Resource": [ "arn:aws:kendra:region:account:index/index ID" ] } ] }
  2. In AWS CLI, esegui il comando seguente per creare la IAM politica per l'esecuzione dell'operazione Amazon Query Kendra.

    aws iam create-policy \ --policy-name query-policy-name \ --policy-document file://KendraQueryPolicy.json
  3. Allega la policy al IAM ruolo che stai utilizzando per chiamare l'Queryoperazione.

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

Puoi scegliere di aggiornare il ruolo collegato al servizio Amazon Lex V2 o di utilizzare un ruolo che hai creato quando crei il ruolo AMAZON.KendraSearchIntent per il tuo bot. La procedura seguente mostra come scegliere il IAM ruolo da utilizzare.

Per specificare il ruolo di runtime per AMAZON.KendraSearchIntent
  1. Accedi AWS Management Console e apri la console Amazon Lex all'indirizzo https://console.aws.amazon.com/lex/.

  2. Scegliere il bot a cui si desidera aggiungere AMAZON.KendraSearchIntent.

  3. Scegliete il segno più (+) accanto a Intenti.

  4. In Aggiungi intento, scegliere Cerca intenti esistenti.

  5. In Intenti di ricerca, immettere AMAZON.KendraSearchIntent e quindi scegliere Aggiungi.

  6. In Copia intento integrato, immettere un nome per l'intento, ad esempio KendraSearchIntent, quindi scegliere Aggiungi.

  7. Aprire la sezione Query Amazon Kendra.

  8. Per IAMil ruolo scegli una delle seguenti opzioni:

    • Per aggiornare il ruolo collegato al servizio Amazon Lex V2 per consentire al bot di interrogare gli indici Amazon Kendra, scegli Aggiungi autorizzazioni Amazon Kendra.

    • Per utilizzare un ruolo autorizzato a chiamare l'operazione Amazon Query Kendra, scegli Usa un ruolo esistente.

Utilizzo degli attributi di richiesta e di sessione come filtri

Per filtrare la risposta di Amazon Kendra agli elementi relativi alla conversazione corrente, utilizza gli attributi di sessione e richiesta come filtri aggiungendo queryFilterString il parametro quando crei il bot. Specifichi un segnaposto per l'attributo quando crei l'intento, quindi Amazon Lex V2 sostituisce un valore prima di chiamare Amazon Kendra. Per ulteriori informazioni sugli attributi di richiesta, consulta Impostazione degli attributi della richiesta. Per ulteriori informazioni sugli attributi di sessione, consulta Impostazione degli attributi della sessione.

Di seguito è riportato un esempio di queryFilterString parametro che utilizza una stringa per filtrare la query di Amazon Kendra.

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

Di seguito è riportato un esempio di queryFilterString parametro che utilizza un attributo di sessione chiamato "SourceURI" per filtrare la query di Amazon Kendra.

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

Di seguito è riportato un esempio di queryFilterString parametro che utilizza un attributo request chiamato "DepartmentName" per filtrare la query di Amazon Kendra.

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

I AMAZON.KendraSearchInteng filtri utilizzano lo stesso formato dei filtri di ricerca di Amazon Kendra. Per ulteriori informazioni, consulta Utilizzo degli attributi del documento per filtrare i risultati di ricerca nella guida per sviluppatori di Amazon Kendra.

La stringa del filtro di interrogazione utilizzata con AMAZON.KendraSearchIntent deve utilizzare lettere minuscole per la prima lettera di ogni filtro. Ad esempio, quanto segue è un filtro di interrogazione valido per. AMAZON.KendraSearchIntent

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

Utilizzo della risposta di ricerca

Amazon Kendra restituisce la risposta a una ricerca in una risposta dalla dichiarazione di intento. IntentClosingSetting L'intento deve avere un'closingResponseistruzione a meno che una funzione Lambda non produca un messaggio di risposta di chiusura.

Amazon Kendra offre cinque tipi di risposte.

  • Le due risposte seguenti richiedono una FAQ configurazione per il tuo indice Amazon Kendra. Per maggiori dettagli, consulta Aggiungere domande e risposte direttamente a un indice.

    • x-amz-lex:kendra-search-response-question_answer-question-<N>— La domanda di un FAQ che corrisponde alla ricerca.

    • x-amz-lex:kendra-search-response-question_answer-answer-<N>— La risposta di a FAQ che corrisponde alla ricerca.

  • Le tre risposte seguenti richiedono la configurazione di un'origine dati per il tuo indice Amazon Kendra. Per maggiori dettagli, consulta Creazione di una fonte di dati.

    • x-amz-lex:kendra-search-response-document-<N>— Un estratto da un documento dell'indice correlato al testo dell'enunciato.

    • x-amz-lex:kendra-search-response-document-link-<N>— Il documento URL dell'indice che è correlato al testo dell'enunciato.

    • x-amz-lex:kendra-search-response-answer-<N>— Un estratto da un documento dell'indice che risponde alla domanda.

Le risposte vengono restituite in attributi request. Possono esserci fino a cinque risposte per ogni attributo, numerate da 1 a 5. Per ulteriori informazioni sulle risposte, consulta Tipi di risposta nella Amazon Kendra Developer Guide.

L'istruzione closingResponse deve avere uno o più gruppi di messaggi. Ogni gruppo di messaggi contiene uno o più messaggi. Ogni messaggio può contenere una o più variabili segnaposto che vengono sostituite da attributi di richiesta nella risposta di Amazon Kendra. Nel gruppo di messaggi deve essere presente almeno un messaggio in cui tutte le variabili del messaggio vengono sostituite dai valori degli attributi di richiesta nella risposta runtime oppure nel gruppo deve essere presente un messaggio senza variabili segnaposto. Gli attributi della richiesta sono impostati con doppie parentesi ("((" "))"). I seguenti messaggi del gruppo di messaggi corrispondono a qualsiasi risposta di Amazon Kendra:

  • «Ho trovato una FAQ domanda per te: ((x-amz-lex: kendra-search-response-question _answer-question-1)), e la risposta è ((: _answer-answer-1))» x-amz-lex kendra-search-response-question

  • «Ho trovato un estratto da un documento utile: ((: -1))» x-amz-lex kendra-search-response-document

  • «Penso che la risposta alle tue domande sia ((x-amz-lex: kendra-search-response-answer -1))»

Utilizzo di una funzione Lambda per gestire la richiesta e la risposta

L'AMAZON.KendraSearchIntentintent può utilizzare l'hook del codice di dialogo e il codice di evasione dell'ordine per gestire la richiesta ad Amazon Kendra e la risposta. Usa la funzione Dialog Code Hook Lambda quando desideri modificare la query che invii ad Amazon Kendra e la funzione Fulfillment code hook Lambda quando desideri modificare la risposta.

Creazione di una query con l'hook del codice di dialogo

Puoi utilizzare l'hook di codice di dialogo per creare una query da inviare ad Amazon Kendra. L'utilizzo dell'hook del codice di dialogo è facoltativo. Se non specifichi un hook di codice di dialogo, Amazon Lex V2 crea una query a partire dall'enunciato dell'utente e utilizza queryFilterString quello che hai fornito quando hai configurato l'intento, se ne hai fornito uno.

Puoi utilizzare due campi nella risposta del codice hook di dialogo per modificare la richiesta ad Amazon Kendra:

  • kendraQueryFilterString— Usa questa stringa per specificare i filtri degli attributi per la richiesta Amazon Kendra. È possibile filtrare la query utilizzando uno qualsiasi dei campi di indice definiti nell'indice. Per la struttura della stringa di filtro, consulta Using document attributes to filter query nella Amazon Kendra Developer Guide. Se la stringa del filtro specificata non è valida, si otterrà un'eccezione InvalidLambdaResponseException. La stringa kendraQueryFilterString sovrascrive qualsiasi stringa di query specificata in queryFilterString configurato per l'intento.

  • kendraQueryRequestPayload— Usa questa stringa per specificare una query Amazon Kendra. La tua query può utilizzare qualsiasi funzionalità di Amazon Kendra. Se non si specifica una query valida, si ottiene un'eccezione InvalidLambdaResponseException. Per ulteriori informazioni, consulta Query nella Amazon Kendra Developer Guide.

Dopo aver creato il filtro o la stringa di query, invii la risposta ad Amazon Lex V2 con il dialogAction campo della risposta impostato delegate su. Amazon Lex V2 invia la query ad Amazon Kendra e quindi restituisce la risposta alla query all'hook del codice di evasione dell'ordine.

Utilizzo dell'hook del codice di adempimento per la risposta

Dopo che Amazon Lex V2 invia una query ad Amazon Kendra, la risposta alla query viene restituita alla funzione Lambda di AMAZON.KendraSearchIntent adempimento. L'evento di input del code hook contiene la risposta completa di Amazon Kendra. I dati della query hanno la stessa struttura di quelli restituiti dall'operazione Amazon Query Kendra. Per ulteriori informazioni, consulta la sintassi della risposta alle query nella Amazon Kendra Developer Guide.

L'hook del codice di adempimento è facoltativo. Se non ne esiste uno o se il code hook non restituisce un messaggio nella risposta, Amazon Lex V2 utilizza l'closingResponseistruzione per le risposte.