AMAZON.KendraSearchIntent - Amazon Lex versione 1

Se utilizzi Amazon Lex V2, consulta invece la guida Amazon Lex V2.

 

Se utilizzi Amazon Lex V1, ti consigliamo di aggiornare i bot ad Amazon Lex V2. Non stiamo più aggiungendo nuove funzionalità alla V1 e consigliamo vivamente di utilizzare la V2 per tutti i nuovi bot.

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 non è in grado di determinare l'azione successiva in una conversazione con l'utente, attiva l'intento di ricerca.

AMAZON.KendraSearchIntentÈ disponibile solo nella lingua inglese (Stati Uniti) (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 documenti PDF o file Microsoft Word. Può ricercare documenti indicizzati e restituire i seguenti tipi di risposte a una domanda:

  • Una risposta

  • Una voce da una domanda frequente 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 chiama l'intento ogni volta che non riesce a determinare l'espressione dell'utente per uno slot o un intento. Ad esempio, se il bot sta suscitando una risposta per un tipo di slot chiamato «pizza topping» e l'utente dice «Cos'è una pizza? », Amazon Lex li chiama AMAZON.KendraSearchIntent per gestire la domanda. Se non viene ricevuta alcuna risposta da Amazon Kendra, la conversazione continua come configurato nel bot.

Quando utilizzi sia la che AMAZON.KendraSearchIntent la AMAZON.FallbackIntent nello stesso bot, Amazon Lex utilizza gli intenti come segue:

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

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

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

    • Se la risposta dell'utente contiene un'espressione riconosciuta da Amazon Lex, 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, Amazon Lex effettua un'altra chiamata all'Queryoperazione.

  4. Se non viene fornita alcuna risposta dopo il numero di tentativi configurato, Amazon Lex 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 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 utilizza il filtro nella richiesta di query.

  • Aggiungi parametri di query aggiuntivi alla richiesta per restringere i risultati della ricerca utilizzando la funzione Lambda della finestra di dialogo. 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 di dialogo. Puoi creare una richiesta di query Amazon Kendra completa inviata da Amazon Lex. È 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 invia ad Amazon Kendra, puoi specificare una query nel campo kendraQueryRequestPayload della funzione Lambda di dialogo. Se la query non è valida, Amazon Lex 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.

Politica IAM per Amazon Kendra Search

Per utilizzare l'AMAZON.KendraSearchIntentintento, devi utilizzare un ruolo che fornisca politiche AWS Identity and Access Management (IAM) che consentano ad Amazon Lex di assumere un ruolo di runtime autorizzato a richiamare l'intento di Amazon KendraQuery. Le impostazioni IAM che usi dipendono dal fatto che tu le crei AMAZON.KendraSearchIntent utilizzando la console Amazon Lex, un SDK AWS o il AWS Command Line Interface (AWS CLI). Quando usi la console, puoi scegliere se aggiungere l'autorizzazione per chiamare Amazon Kendra al ruolo collegato al servizio Amazon Lex o utilizzare un ruolo specifico per chiamare l'operazione Amazon Kendra. Query Quando si utilizza l'AWS CLI o un SDK per creare l'intento, è necessario utilizzare un ruolo specifico per richiamare 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. 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 deve disporre delle autorizzazioni per gestire le politiche dei ruoli. Allega la seguente policy IAM 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/lex.amazonaws.com/AWSServiceRoleForLexBots" }, { "Effect": "Allow", "Action": "iam:ListRoles", "Resource": "*" } ] }

Specifica di un ruolo

Puoi utilizzare la consoleAWS CLI, l'o l'API per specificare un ruolo di runtime da utilizzare 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 IAM e 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 deve utilizzare per chiamare Amazon Kendra deve disporre delle autorizzazioni. kendra:Query Quando utilizzi un ruolo IAM esistente per ottenere l'autorizzazione a chiamare l'operazione Amazon Query Kendra, al ruolo deve essere associata la seguente policy.

Puoi utilizzare la console IAM, l'API IAM o AWS CLI creare una policy e collegarla a un ruolo. Queste istruzioni utilizzano l'AWS CLI per creare il ruolo e le policy.

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. InAWS CLI, esegui il comando seguente per creare la policy IAM 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 ruolo IAM 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 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 ruolo IAM 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. In Ruolo IAM, scegliere una delle seguenti opzioni:

    • Per aggiornare il ruolo collegato al servizio Amazon Lex 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 di richiesta. Per ulteriori informazioni sugli attributi di sessione, consulta Impostazione degli attributi di 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 nella dichiarazione di intento. conclusion L'intento deve avere una conclusion dichiarazione a meno che una funzione Lambda di adempimento non produca un messaggio di conclusione.

Amazon Kendra offre quattro tipi di risposte.

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

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

  • 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>— L'URL di un documento nell'indice 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 conclusion 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 domanda FAQ 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 il tuo hook di dialogo e il codice di evasione ordini 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 crea una query 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 una qualsiasi delle funzionalità di Amazon Kendra. Se non si specifica una query valida, si ottiene un'eccezione InvalidLambdaResponseException. Per ulteriori informazioni, consulta la sezione Query nella Amazon Kendra Developer Guide.

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

Utilizzo dell'hook del codice di adempimento per la risposta

Dopo che Amazon Lex 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 utilizza l'conclusionistruzione per le risposte.