Konfigurasikan fungsi Lambda untuk mengirim informasi yang diperoleh agen Amazon Bedrock dari pengguna untuk memenuhi grup tindakan di Amazon Bedrock - 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 untuk memenuhi grup tindakan di Amazon Bedrock

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

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

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

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

catatan

Grup tindakan dapat berisi hingga 11 operasi API, tetapi Anda hanya dapat menulis satu fungsi Lambda. Karena fungsi Lambda hanya dapat menerima peristiwa input dan mengembalikan respons untuk satu operasi API pada satu waktu, Anda harus menulis fungsi tersebut dengan mempertimbangkan berbagai operasi API 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 Panduan Pengembang. AWS Lambda

Untuk mempelajari cara mendefinisikan fungsi saat membuat grup tindakan, lihatMenambahkan 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 Panduan Pengembang. AWS Lambda

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

  • Jika Anda mendefinisikan grup tindakan dengan skema API, format peristiwa 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 peristiwa 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 operasi API, seperti yang didefinisikan dalam OpenAPI skema, atau dalam fungsi.

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

    • apiPath— Jalur ke operasi API, seperti yang didefinisikan dalam OpenAPI skema.

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

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

  • 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 operasi API. 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 bergantung pada apakah Anda mendefinisikan grup tindakan dengan skema API atau dengan detail fungsi:

  • Jika Anda mendefinisikan grup tindakan dengan skema API, 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" } }
  • 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" } }

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 respons API.

    • actionGroup— Nama kelompok aksi.

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

      • apiPath— Jalur ke operasi API, seperti yang didefinisikan dalam OpenAPI skema.

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

      • httpStatusCode— Kode status HTTP dikembalikan dari operasi API.

      • 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:

        • KEGAGALAN — 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.

  • (Opsional) promptSessionAttributes - Berisi atribut prompt dan nilainya.

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 detail 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