AMAZON.KendraSearchIntent - Amazon Lex V1

Jika Anda menggunakan Amazon Lex V2, lihat panduan Amazon Lex V2 sebagai gantinya.

 

Jika Anda menggunakan Amazon Lex V1, kami sarankan untuk meningkatkan bot Anda ke Amazon Lex V2. Kami tidak lagi menambahkan fitur baru ke V1 dan sangat menyarankan menggunakan V2 untuk semua bot baru.

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

AMAZON.KendraSearchIntent

Untuk mencari dokumen yang telah Anda indeks dengan Amazon Kendra, gunakan intent. AMAZON.KendraSearchIntent Jika Amazon Lex tidak dapat menentukan tindakan selanjutnya dalam percakapan dengan pengguna, Amazon Lex akan memicu maksud pencarian.

AMAZON.KendraSearchIntentIni hanya tersedia di wilayah Inggris (AS) (en-AS) dan di Wilayah AS Timur (Virginia N.), AS Barat (Oregon) dan Eropa (Irlandia).

Amazon Kendra adalah layanan machine-learning-based pencarian yang mengindeks dokumen bahasa alami seperti dokumen PDF atau file Microsoft Word. Ini dapat mencari dokumen yang diindeks dan mengembalikan jenis tanggapan berikut ke pertanyaan:

  • Jawaban

  • Entri dari FAQ yang mungkin menjawab pertanyaan

  • Dokumen yang terkait dengan pertanyaan

Untuk contoh menggunakanAMAZON.KendraSearchIntent, lihatContoh: Membuat Bot FAQ untuk Indeks Amazon Kendra.

Jika Anda mengonfigurasi AMAZON.KendraSearchIntent intent untuk bot Anda, Amazon Lex akan memanggil intent kapan pun intent tidak dapat menentukan ucapan pengguna untuk slot atau intent. Misalnya, jika bot Anda memunculkan respons untuk jenis slot yang disebut “pizza topping” dan pengguna mengatakan “Apa itu pizza? ,” Amazon Lex memanggil AMAZON.KendraSearchIntent untuk menangani pertanyaan itu. Jika tidak ada tanggapan dari Amazon Kendra, percakapan berlanjut seperti yang dikonfigurasi di bot.

Saat Anda menggunakan keduanya AMAZON.KendraSearchIntent dan AMAZON.FallbackIntent di bot yang sama, Amazon Lex menggunakan intent sebagai berikut:

  1. Amazon Lex memanggilAMAZON.KendraSearchIntent. Maksudnya menyebut operasi Amazon Query Kendra.

  2. Jika Amazon Kendra mengembalikan respons, Amazon Lex menampilkan hasilnya kepada pengguna.

  3. Jika tidak ada tanggapan dari Amazon Kendra, Amazon Lex meminta kembali pengguna. Tindakan selanjutnya tergantung pada respons dari pengguna.

    • Jika respons dari pengguna berisi ucapan yang dikenali Amazon Lex, seperti mengisi nilai slot atau mengonfirmasi maksud, percakapan dengan pengguna dilanjutkan seperti yang dikonfigurasi untuk bot.

    • Jika respons dari pengguna tidak mengandung ucapan yang dikenali Amazon Lex, Amazon Lex membuat panggilan lain ke operasi. Query

  4. Jika tidak ada respons setelah jumlah percobaan ulang yang dikonfigurasi, Amazon Lex memanggil AMAZON.FallbackIntent dan mengakhiri percakapan dengan pengguna.

Ada tiga cara untuk menggunakan AMAZON.KendraSearchIntent untuk membuat permintaan ke Amazon Kendra:

  • Biarkan maksud pencarian membuat permintaan untuk Anda. Amazon Lex menyebut Amazon Kendra dengan ucapan pengguna sebagai string pencarian. Saat membuat intent, Anda dapat menentukan string filter kueri yang membatasi jumlah respons yang dikembalikan Amazon Kendra. Amazon Lex menggunakan filter dalam permintaan kueri.

  • Tambahkan parameter kueri tambahan ke permintaan untuk mempersempit hasil pencarian menggunakan fungsi Lambda dialog Anda. Anda menambahkan kendraQueryFilterString bidang yang berisi parameter kueri Amazon Kendra ke tindakan delegate dialog. Saat Anda menambahkan parameter kueri ke permintaan dengan fungsi Lambda, parameter tersebut lebih diutamakan daripada filter kueri yang Anda tentukan saat Anda membuat maksud.

  • Buat kueri baru menggunakan fungsi dialog Lambda. Anda dapat membuat permintaan kueri Amazon Kendra lengkap yang dikirimkan Amazon Lex. Anda menentukan kueri di kendraQueryRequestPayload bidang dalam tindakan delegate dialog. kendraQueryRequestPayloadLapangan lebih diutamakan di atas lapangan. kendraQueryFilterString

Untuk menentukan queryFilterString parameter saat Anda membuat bot, atau untuk menentukan kendraQueryFilterString bidang saat Anda memanggil delegate tindakan dalam dialog fungsi Lambda, Anda menentukan string yang digunakan sebagai filter atribut untuk kueri Amazon Kendra. Jika string bukan filter atribut yang valid, Anda akan mendapatkan InvalidBotConfigException pengecualian saat runtime. Untuk informasi selengkapnya tentang filter atribut, lihat Menggunakan atribut dokumen untuk memfilter kueri di Panduan Pengembang Amazon Kendra.

Untuk memiliki kontrol atas kueri yang dikirimkan Amazon Lex ke Amazon Kendra, Anda dapat menentukan kueri di kendraQueryRequestPayload bidang di dialog Anda fungsi Lambda. Jika kueri tidak valid, Amazon Lex mengembalikan InvalidLambdaResponseException pengecualian. Untuk informasi selengkapnya, lihat Operasi kueri di Panduan Pengembang Amazon Kendra.

Untuk contoh cara menggunakanAMAZON.KendraSearchIntent, lihatContoh: Membuat Bot FAQ untuk Indeks Amazon Kendra.

Kebijakan IAM untuk Pencarian Amazon Kendra

Untuk menggunakan AMAZON.KendraSearchIntent intent, Anda harus menggunakan peran yang menyediakan kebijakan AWS Identity and Access Management (IAM) yang memungkinkan Amazon Lex untuk mengambil peran runtime yang memiliki izin untuk memanggil maksud Amazon Kendra. Query Pengaturan IAM yang Anda gunakan bergantung pada apakah Anda membuat AMAZON.KendraSearchIntent menggunakan konsol Amazon Lex, atau menggunakan AWS SDK atau AWS Command Line Interface ()AWS CLI. Saat menggunakan konsol, Anda dapat memilih antara menambahkan izin untuk memanggil Amazon Kendra ke peran terkait layanan Amazon Lex atau menggunakan peran khusus untuk memanggil operasi Amazon Kendra. Query Bila Anda menggunakan AWS CLI atau SDK untuk membuat intent, Anda harus menggunakan peran khusus untuk memanggil operasi. Query

Melampirkan Izin

Anda dapat menggunakan konsol untuk melampirkan izin untuk mengakses operasi Amazon Query Kendra ke peran default Amazon Lex terkait layanan. Saat melampirkan izin ke peran terkait layanan, Anda tidak perlu membuat dan mengelola peran runtime secara khusus untuk terhubung ke indeks Amazon Kendra.

Pengguna, peran, atau grup yang Anda gunakan untuk mengakses konsol Amazon Lex harus memiliki izin untuk mengelola kebijakan peran. Lampirkan kebijakan IAM berikut ke peran akses konsol. Saat Anda memberikan izin ini, peran tersebut memiliki izin untuk mengubah kebijakan peran terkait layanan yang ada.

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

Menentukan Peran

Anda dapat menggunakan konsol, APIAWS CLI, atau API untuk menentukan peran runtime yang akan digunakan saat memanggil operasi Amazon Query Kendra.

Pengguna, peran, atau grup yang Anda gunakan untuk menentukan peran runtime harus memiliki iam:PassRole izin. Kebijakan berikut mendefinisikan izin. Anda dapat menggunakan kunci konteks iam:AssociatedResourceArn dan iam:PassedToService kondisi untuk membatasi cakupan izin lebih lanjut. Untuk informasi selengkapnya, lihat IAM dan AWS STS Condition Context Keys di Panduan AWS Identity and Access Management Pengguna.

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

Peran runtime yang perlu digunakan Amazon Lex untuk memanggil Amazon Kendra harus memiliki kendra:Query izin. Saat Anda menggunakan peran IAM yang ada untuk izin memanggil operasi Amazon Query Kendra, peran tersebut harus memiliki kebijakan berikut yang dilampirkan.

Anda dapat menggunakan konsol IAM, API IAM, atau AWS CLI untuk membuat kebijakan dan melampirkannya ke peran. Petunjuk ini menggunakan AWS CLI untuk membuat peran dan kebijakan.

catatan

Kode berikut diformat untuk Linux dan macOS. Untuk Windows, ganti karakter kelanjutan baris Linux (\) dengan tanda sisipan (^).

Untuk menambahkan izin operasi Kueri ke peran
  1. Buat dokumen yang disebut KendraQueryPolicy.json di direktori saat ini, tambahkan kode berikut ke dalamnya, dan simpan

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kendra:Query" ], "Resource": [ "arn:aws:kendra:region:account:index/index ID" ] } ] }
  2. DalamAWS CLI, jalankan perintah berikut untuk membuat kebijakan IAM untuk menjalankan operasi Amazon Query Kendra.

    aws iam create-policy \ --policy-name query-policy-name \ --policy-document file://KendraQueryPolicy.json
  3. Lampirkan kebijakan ke peran IAM yang Anda gunakan untuk memanggil Query operasi.

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

Anda dapat memilih untuk memperbarui peran terkait layanan Amazon Lex atau menggunakan peran yang Anda buat saat membuat AMAZON.KendraSearchIntent untuk bot Anda. Prosedur berikut menunjukkan bagaimana memilih peran IAM untuk digunakan.

Untuk menentukan peran runtime untuk AMAZON. KendraSearchIntent
  1. Masuk ke AWS Management Console dan buka konsol Amazon Lex di https://console.aws.amazon.com/lex/.

  2. Pilih bot yang ingin Anda tambahkan. AMAZON.KendraSearchIntent

  3. Pilih plus (+) di sebelah Intent.

  4. Di Tambah maksud, pilih Cari maksud yang ada.

  5. Di Maksud pencarian, masukkan AMAZON.KendraSearchIntent lalu pilih Tambah.

  6. Di Salin maksud bawaan, masukkan nama untuk maksud, sepertiKendraSearchIntent, lalu pilih Tambah.

  7. Buka bagian kueri Amazon Kendra.

  8. Untuk peran IAM pilih salah satu opsi berikut:

    • Untuk memperbarui peran terkait layanan Amazon Lex agar bot Anda dapat menanyakan indeks Amazon Kendra, pilih Tambahkan izin Amazon Kendra.

    • Untuk menggunakan peran yang memiliki izin untuk memanggil Query operasi Amazon Kendra, pilih Gunakan peran yang ada.

Menggunakan Atribut Permintaan dan Sesi sebagai Filter

Untuk memfilter respons dari Amazon Kendra ke item yang terkait dengan percakapan saat ini, gunakan atribut sesi dan permintaan sebagai filter dengan menambahkan queryFilterString parameter saat Anda membuat bot. Anda menentukan placeholder untuk atribut saat membuat intent, lalu Amazon Lex V2 mengganti nilai sebelum memanggil Amazon Kendra. Untuk informasi selengkapnya tentang atribut permintaan, lihatMengatur Atribut Permintaan. Untuk informasi selengkapnya tentang atribut sesi, lihatMengatur Atribut Sesi.

Berikut ini adalah contoh queryFilterString parameter yang menggunakan string untuk memfilter kueri Amazon Kendra.

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

Berikut ini adalah contoh queryFilterString parameter yang menggunakan atribut sesi dipanggil "SourceURI" untuk memfilter kueri Amazon Kendra.

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

Berikut ini adalah contoh queryFilterString parameter yang menggunakan atribut permintaan dipanggil "DepartmentName" untuk memfilter kueri Amazon Kendra.

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

AMAZON.KendraSearchIntengFilter menggunakan format yang sama dengan filter pencarian Amazon Kendra. Untuk informasi selengkapnya, lihat Menggunakan atribut dokumen untuk memfilter hasil penelusuran di panduan pengembang Amazon Kendra.

String filter kueri yang digunakan dengan huruf kecil AMAZON.KendraSearchIntent harus menggunakan huruf kecil untuk huruf pertama dari setiap filter. Misalnya, berikut ini adalah filter kueri yang valid untuk fileAMAZON.KendraSearchIntent.

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

Menggunakan Respon Pencarian

Amazon Kendra mengembalikan respons ke pencarian dalam pernyataan maksud. conclusion Maksud harus memiliki conclusion pernyataan kecuali fungsi Lambda pemenuhan menghasilkan pesan kesimpulan.

Amazon Kendra memiliki empat jenis tanggapan.

  • x-amz-lex:kendra-search-response-question_answer-question-<N>— Pertanyaan dari FAQ yang cocok dengan pencarian.

  • x-amz-lex:kendra-search-response-question_answer-answer-<N>— Jawaban dari FAQ yang cocok dengan pencarian.

  • x-amz-lex:kendra-search-response-document-<N>— Kutipan dari dokumen dalam indeks yang terkait dengan teks ucapan.

  • x-amz-lex:kendra-search-response-document-link-<N>— URL dokumen dalam indeks yang terkait dengan teks ucapan.

  • x-amz-lex:kendra-search-response-answer-<N>— Kutipan dari dokumen dalam indeks yang menjawab pertanyaan.

Tanggapan dikembalikan dalam request atribut. Ada hingga lima tanggapan untuk setiap atribut, bernomor 1 hingga 5. Untuk informasi selengkapnya tentang tanggapan, lihat Jenis respons di Panduan Pengembang Amazon Kendra.

conclusionPernyataan harus memiliki satu atau lebih grup pesan. Setiap grup pesan berisi satu atau beberapa pesan. Setiap pesan dapat berisi satu atau beberapa variabel placeholder yang diganti dengan atribut permintaan dalam respons dari Amazon Kendra. Harus ada setidaknya satu pesan dalam grup pesan di mana semua variabel dalam pesan diganti dengan nilai atribut permintaan dalam respons runtime, atau harus ada pesan dalam grup tanpa variabel placeholder. Atribut permintaan diatur dengan tanda kurung ganda (“((” “))”). Pesan grup pesan berikut cocok dengan respons apa pun dari Amazon Kendra:

  • “Saya menemukan pertanyaan FAQ untuk Anda: ((x-amz-lex: kendra-search-response-question _jawaban-pertanyaan-1)), dan jawabannya adalah ((: _jawaban-jawab-1))” x-amz-lex kendra-search-response-question

  • “Saya menemukan kutipan dari dokumen yang bermanfaat: ((x-amz-lex: kendra-search-response-document -1))”

  • “Saya pikir jawaban atas pertanyaan Anda adalah ((x-amz-lex: kendra-search-response-answer -1))”

Menggunakan Fungsi Lambda untuk Mengelola Permintaan dan Respons

AMAZON.KendraSearchIntentMaksud dapat menggunakan hook kode dialog dan hook kode pemenuhan untuk mengelola permintaan ke Amazon Kendra dan responsnya. Gunakan fungsi Lambda kait kode dialog saat Anda ingin memodifikasi kueri yang Anda kirim ke Amazon Kendra, dan kode pemenuhan mengaitkan fungsi Lambda saat Anda ingin memodifikasi respons.

Membuat Query dengan Hook Kode Dialog

Anda dapat menggunakan hook kode dialog untuk membuat kueri untuk dikirim ke Amazon Kendra. Menggunakan hook kode dialog adalah opsional. Jika Anda tidak menentukan hook kode dialog, Amazon Lex akan membuat kueri dari ucapan pengguna dan menggunakan queryFilterString yang Anda berikan saat mengonfigurasi intent, jika Anda memberikannya.

Anda dapat menggunakan dua bidang dalam respons kait kode dialog untuk memodifikasi permintaan ke Amazon Kendra:

  • kendraQueryFilterString— Gunakan string ini untuk menentukan filter atribut untuk permintaan Amazon Kendra. Anda dapat memfilter kueri menggunakan salah satu bidang indeks yang ditentukan dalam indeks Anda. Untuk struktur string filter, lihat Menggunakan atribut dokumen untuk memfilter kueri di Panduan Pengembang Amazon Kendra. Jika string filter yang ditentukan tidak valid, Anda akan mendapatkan InvalidLambdaResponseException pengecualian. kendraQueryFilterStringString mengesampingkan string kueri yang ditentukan dalam queryFilterString konfigurasi untuk maksud.

  • kendraQueryRequestPayload— Gunakan string ini untuk menentukan kueri Amazon Kendra. Kueri Anda dapat menggunakan salah satu fitur Amazon Kendra. Jika Anda tidak menentukan kueri yang valid, Anda mendapatkan InvalidLambdaResponseException pengecualian. Untuk informasi selengkapnya, lihat Kueri di Panduan Pengembang Amazon Kendra.

Setelah Anda membuat string filter atau kueri, Anda mengirim respons ke Amazon Lex dengan dialogAction bidang respons yang disetel kedelegate. Amazon Lex mengirimkan kueri ke Amazon Kendra dan kemudian mengembalikan respons kueri ke hook kode pemenuhan.

Menggunakan Hook Kode Pemenuhan untuk Respons

Setelah Amazon Lex mengirim kueri ke Amazon Kendra, respons kueri dikembalikan ke fungsi Lambda AMAZON.KendraSearchIntent pemenuhan. Acara input ke kait kode berisi respons lengkap dari Amazon Kendra. Data kueri berada dalam struktur yang sama dengan yang dikembalikan oleh operasi Amazon KendraQuery. Untuk informasi selengkapnya, lihat Sintaks respons kueri di Panduan Pengembang Amazon Kendra.

Kait kode pemenuhan adalah opsional. Jika tidak ada, atau jika kait kode tidak mengembalikan pesan dalam respons, Amazon Lex menggunakan conclusion pernyataan tersebut untuk tanggapan.