Konfigurasikan fungsi Lambda untuk mengirim informasi yang diperoleh agen Amazon Bedrock dari pengguna - Amazon Bedrock

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

Konfigurasikan fungsi Lambda untuk mengirim informasi yang diperoleh agen Amazon Bedrock dari pengguna

Anda dapat menentukan fungsi Lambda untuk memprogram logika bisnis untuk grup tindakan. Setelah agen Amazon Bedrock menentukan API operasi yang diperlukan untuk dipanggil dalam grup tindakan, ia mengirimkan informasi dari API skema bersama metadata yang relevan sebagai peristiwa input ke fungsi Lambda. Untuk menulis fungsi Anda, Anda harus memahami komponen fungsi Lambda berikut:

  • Peristiwa masukan - Berisi metadata yang relevan dan bidang yang diisi dari badan permintaan API operasi atau parameter fungsi untuk tindakan yang ditentukan agen harus dipanggil.

  • Respons - Berisi metadata yang relevan dan bidang terisi untuk badan respons yang dikembalikan dari API operasi atau fungsi.

Anda menulis fungsi Lambda Anda untuk menentukan cara menangani grup tindakan dan untuk menyesuaikan bagaimana Anda ingin API respons dikembalikan. Anda menggunakan variabel dari peristiwa input untuk menentukan fungsi Anda dan mengembalikan respons ke agen.

catatan

Grup tindakan dapat berisi hingga 11 API operasi, tetapi Anda hanya dapat menulis satu fungsi Lambda. Karena fungsi Lambda hanya dapat menerima peristiwa input dan mengembalikan respons untuk satu API operasi pada satu waktu, Anda harus menulis fungsi dengan mempertimbangkan API operasi berbeda yang mungkin dipanggil.

Agar agen Anda dapat menggunakan fungsi Lambda, Anda harus melampirkan kebijakan berbasis sumber daya ke fungsi tersebut untuk memberikan izin bagi agen. Untuk informasi lebih lanjut, ikuti langkah-langkah diKebijakan berbasis sumber daya untuk mengizinkan Amazon Bedrock menjalankan fungsi Lambda grup tindakan. Untuk informasi selengkapnya tentang kebijakan berbasis sumber daya di Lambda, lihat Menggunakan kebijakan berbasis sumber daya untuk Lambda di AWS Lambda Panduan Pengembang.

Untuk mempelajari cara mendefinisikan fungsi saat membuat grup tindakan, lihatTambahkan grup tindakan ke agen Anda di Amazon Bedrock.

Acara masukan Lambda dari Amazon Bedrock

Saat grup tindakan yang menggunakan fungsi Lambda dipanggil, Amazon Bedrock mengirimkan peristiwa input Lambda dengan format umum berikut. Anda dapat menentukan fungsi Lambda Anda untuk menggunakan salah satu bidang peristiwa input untuk memanipulasi logika bisnis dalam fungsi agar berhasil melakukan tindakan. Untuk informasi selengkapnya tentang fungsi Lambda, lihat Pemanggilan berbasis peristiwa di AWS Lambda Panduan Pengembang.

Format peristiwa masukan tergantung pada apakah Anda mendefinisikan grup tindakan dengan API skema atau dengan detail fungsi:

  • Jika Anda mendefinisikan grup tindakan dengan API skema, format acara masukan adalah sebagai berikut:

    { "messageVersion": "1.0", "agent": { "name": "string", "id": "string", "alias": "string", "version": "string" }, "inputText": "string", "sessionId": "string", "actionGroup": "string", "apiPath": "string", "httpMethod": "string", "parameters": [ { "name": "string", "type": "string", "value": "string" }, ... ], "requestBody": { "content": { "<content_type>": { "properties": [ { "name": "string", "type": "string", "value": "string" }, ... ] } } }, "sessionAttributes": { "string": "string", }, "promptSessionAttributes": { "string": "string" } }
  • Jika Anda mendefinisikan grup tindakan dengan detail fungsi, format acara masukan adalah sebagai berikut:

    { "messageVersion": "1.0", "agent": { "name": "string", "id": "string", "alias": "string", "version": "string" }, "inputText": "string", "sessionId": "string", "actionGroup": "string", "function": "string", "parameters": [ { "name": "string", "type": "string", "value": "string" }, ... ], "sessionAttributes": { "string": "string", }, "promptSessionAttributes": { "string": "string" } }

Daftar berikut menjelaskan bidang acara masukan;

  • messageVersion— Versi pesan yang mengidentifikasi format data peristiwa yang masuk ke fungsi Lambda dan format respons yang diharapkan dari fungsi Lambda. Amazon Bedrock hanya mendukung versi 1.0.

  • agent— Berisi informasi tentang nama, ID, alias, dan versi agen yang menjadi milik grup aksi.

  • inputText— Input pengguna untuk percakapan berubah.

  • sessionId— Pengenal unik dari sesi agen.

  • actionGroup— Nama kelompok aksi.

  • parameters— Berisi daftar objek. Setiap objek berisi nama, jenis, dan nilai parameter dalam API operasi, sebagaimana didefinisikan dalam OpenAPI skema, atau dalam fungsi.

  • Jika Anda mendefinisikan grup tindakan dengan API skema, peristiwa masukan berisi bidang berikut:

    • apiPath— Jalan menuju API operasi, sebagaimana didefinisikan dalam OpenAPI skema.

    • httpMethod— Metode API operasi, sebagaimana didefinisikan dalam OpenAPI skema.

    • requestBody— Berisi badan permintaan dan propertinya, sebagaimana didefinisikan dalam OpenAPI skema untuk kelompok aksi.

  • Jika Anda mendefinisikan grup tindakan dengan detail fungsi, peristiwa masukan berisi bidang berikut:

    • function— Nama fungsi sebagaimana didefinisikan dalam rincian fungsi untuk kelompok tindakan.

  • sessionAttributes— Berisi atribut sesi dan nilainya. Atribut ini disimpan selama sesi dan memberikan konteks untuk agen.

  • promptSessionAttributes— Berisi atribut sesi prompt dan nilainya. Atribut-atribut ini disimpan secara bergantian dan memberikan konteks untuk agen.

Acara respons Lambda ke Amazon Bedrock

Amazon Bedrock mengharapkan respons dari fungsi Lambda Anda yang cocok dengan format berikut. Respons terdiri dari parameter yang dikembalikan dari API operasi. Agen dapat menggunakan respons dari fungsi Lambda untuk orkestrasi lebih lanjut atau untuk membantunya mengembalikan respons kepada pelanggan.

catatan

Ukuran respons muatan Lambda maksimum adalah 25 KB.

Format peristiwa masukan tergantung pada apakah Anda mendefinisikan grup tindakan dengan API skema atau dengan detail fungsi:

  • Jika Anda mendefinisikan grup tindakan dengan API skema, format responsnya adalah sebagai berikut:

    { "messageVersion": "1.0", "response": { "actionGroup": "string", "apiPath": "string", "httpMethod": "string", "httpStatusCode": number, "responseBody": { "<contentType>": { "body": "JSON-formatted string" } } }, "sessionAttributes": { "string": "string", ... }, "promptSessionAttributes": { "string": "string", ... }, "knowledgeBasesConfiguration": [ { "knowledgeBaseId": "string", "retrievalConfiguration": { "vectorSearchConfiguration": { "numberOfResults": int, "overrideSearchType": "HYBRID | SEMANTIC", "filter": RetrievalFilter object } } }, ... ] }
  • Jika Anda mendefinisikan grup tindakan dengan detail fungsi, format responsnya adalah sebagai berikut:

    { "messageVersion": "1.0", "response": { "actionGroup": "string", "function": "string", "functionResponse": { "responseState": "FAILURE | REPROMPT", "responseBody": { "<functionContentType>": { "body": "JSON-formatted string" } } } }, "sessionAttributes": { "string": "string", }, "promptSessionAttributes": { "string": "string" }, "knowledgeBasesConfiguration": [ { "knowledgeBaseId": "string", "retrievalConfiguration": { "vectorSearchConfiguration": { "numberOfResults": int, "filter": { RetrievalFilter object } } } }, ... ] }

Daftar berikut menjelaskan bidang respons:

  • messageVersion— Versi pesan yang mengidentifikasi format data peristiwa yang masuk ke fungsi Lambda dan format respons yang diharapkan dari fungsi Lambda. Amazon Bedrock hanya mendukung versi 1.0.

  • response— Berisi informasi berikut tentang API tanggapan.

    • actionGroup— Nama kelompok aksi.

    • Jika Anda mendefinisikan grup tindakan dengan API skema, bidang berikut dapat berada dalam respons:

      • apiPath— Jalan menuju API operasi, sebagaimana didefinisikan dalam OpenAPI skema.

      • httpMethod— Metode API operasi, sebagaimana didefinisikan dalam OpenAPI skema.

      • httpStatusCode— Kode HTTP status dikembalikan dari API operasi.

      • responseBody— Berisi badan respons, sebagaimana didefinisikan dalam OpenAPI skema.

    • Jika Anda mendefinisikan grup tindakan dengan detail fungsi, bidang berikut dapat berada dalam respons:

      • responseState(Opsional) - Setel ke salah satu status berikut untuk menentukan perilaku agen setelah memproses tindakan:

        • FAILURE— Agen melempar a DependencyFailedException untuk sesi saat ini. Berlaku ketika eksekusi fungsi gagal karena kegagalan ketergantungan.

        • REPROMPT— Agen meneruskan string respons ke model untuk memintanya kembali. Berlaku ketika eksekusi fungsi gagal karena input tidak valid.

      • responseBody— Berisi objek yang mendefinisikan respon dari eksekusi fungsi. Kuncinya adalah jenis konten (saat TEXT ini hanya didukung) dan nilainya adalah objek body yang berisi respons.

  • (Opsional) sessionAttributes - Berisi atribut sesi dan nilainya. Untuk informasi selengkapnya, lihat Atribut sesi sesi dan prompt.

  • (Opsional) promptSessionAttributes - Berisi atribut prompt dan nilainya. Untuk informasi selengkapnya, lihat Atribut sesi sesi dan prompt.

  • (Opsional) knowledgeBasesConfiguration - Berisi daftar konfigurasi kueri untuk basis pengetahuan yang dilampirkan ke agen. Untuk informasi selengkapnya, lihat Konfigurasi pengambilan basis pengetahuan.

Contoh fungsi kelompok aksi Lambda

Berikut ini adalah contoh minimal bagaimana fungsi Lambda dapat didefinisikan dalam Python. Pilih tab yang sesuai dengan apakah Anda mendefinisikan grup tindakan dengan OpenAPI skema atau dengan rincian fungsi:

OpenAPI schema
def lambda_handler(event, context): agent = event['agent'] actionGroup = event['actionGroup'] api_path = event['apiPath'] # get parameters get_parameters = event.get('parameters', []) # post parameters post_parameters = event['requestBody']['content']['application/json']['properties'] response_body = { 'application/json': { 'body': "sample response" } } action_response = { 'actionGroup': event['actionGroup'], 'apiPath': event['apiPath'], 'httpMethod': event['httpMethod'], 'httpStatusCode': 200, 'responseBody': response_body } session_attributes = event['sessionAttributes'] prompt_session_attributes = event['promptSessionAttributes'] api_response = { 'messageVersion': '1.0', 'response': action_response, 'sessionAttributes': session_attributes, 'promptSessionAttributes': prompt_session_attributes } return api_response
Function details
def lambda_handler(event, context): agent = event['agent'] actionGroup = event['actionGroup'] function = event['function'] parameters = event.get('parameters', []) response_body = { 'TEXT': { 'body': "sample response" } } function_response = { 'actionGroup': event['actionGroup'], 'function': event['function'], 'functionResponse': { 'responseBody': response_body } } session_attributes = event['sessionAttributes'] prompt_session_attributes = event['promptSessionAttributes'] action_response = { 'messageVersion': '1.0', 'response': function_response, 'sessionAttributes': session_attributes, 'promptSessionAttributes': prompt_session_attributes } return action_response