Configure las funciones de Lambda para enviar la información que un agente de Amazon Bedrock obtenga del usuario para gestionar un grupo de acciones en Amazon Bedrock - Amazon Bedrock

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Configure las funciones de Lambda para enviar la información que un agente de Amazon Bedrock obtenga del usuario para gestionar un grupo de acciones en Amazon Bedrock

Puede definir una función Lambda para programar la lógica empresarial de un grupo de acciones. Cuando un agente de Amazon Bedrock determina la operación de API que debe invocar en un grupo de acciones, envía la información del esquema de la API junto con los metadatos pertinentes como un evento de entrada a la función Lambda. Para escribir la función, debe comprender los siguientes componentes de la función Lambda:

  • Evento de entrada: contiene los metadatos relevantes y los campos rellenados del cuerpo de la solicitud de la operación de la API o de los parámetros de la función para la acción que el agente determine que debe ejecutarse.

  • Respuesta: contiene los metadatos relevantes y los campos rellenados para el cuerpo de la respuesta devuelto por la operación o función de la API.

Escribe la función Lambda para definir cómo gestionar un grupo de acciones y personalizar la forma en que desea que se devuelva la respuesta de la API. Las variables del evento de entrada se utilizan para definir las funciones y devolver una respuesta al agente.

nota

Un grupo de acciones puede contener hasta 11 operaciones de API, pero solo se puede escribir una función Lambda. Como la función Lambda solo puede recibir un evento de entrada y devolver una respuesta para una operación de API a la vez, debe escribir la función teniendo en cuenta las diferentes operaciones de API que se pueden invocar.

Para que su agente utilice una función Lambda, debe adjuntar una política basada en recursos a la función para proporcionar permisos al agente. Para obtener más información, siga los pasos que se indican en. Política basada en recursos que permite a Amazon Bedrock invocar una función Lambda de un grupo de acciones Para obtener más información sobre las políticas basadas en recursos en Lambda, consulte Uso de políticas basadas en recursos para Lambda en la Guía para desarrolladores. AWS Lambda

Para obtener información sobre cómo definir una función al crear el grupo de acciones, consulte. Añada un grupo de acción a su agente en Amazon Bedrock

Evento de entrada de Lambda desde Amazon Bedrock

Cuando se invoca un grupo de acciones utilizando una función de Lambda, Amazon Bedrock envía un evento de entrada de Lambda con el siguiente formato general. Puede definir la función Lambda para utilizar cualquiera de los campos de eventos de entrada para manipular la lógica empresarial de la función y realizar la acción correctamente. Para obtener más información sobre las funciones Lambda, consulte Invocación controlada por eventos en la Guía para desarrolladores. AWS Lambda

El formato del evento de entrada depende de si ha definido el grupo de acciones con un esquema de API o con detalles de función:

  • Si ha definido el grupo de acciones con un esquema de API, el formato del evento de entrada es el siguiente:

    { "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" } }
  • Si ha definido el grupo de acciones con los detalles de la función, el formato del evento de entrada es el siguiente:

    { "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" } }

En la siguiente lista se describen los campos de eventos de entrada;

  • messageVersion: la versión del mensaje que identifica el formato de los datos del evento que se van a pasar a la función de Lambda y el formato previsto de la respuesta de una función de Lambda. Amazon Bedrock solo admite la versión 1.0.

  • agent: contiene información sobre el nombre, el ID, el alias y la versión del agente al que pertenece el grupo de acciones.

  • inputText: la entrada del usuario para el turno de conversación.

  • sessionId: el identificador único de la sesión del agente.

  • actionGroup: el nombre del grupo de acciones.

  • parameters: contiene una lista de objetos. Cada objeto contiene el nombre, el tipo y el valor de un parámetro de la operación de la API, tal como se define en el OpenAPI esquema o en la función.

  • Si has definido el grupo de acciones con un esquema de API, el evento de entrada contiene los siguientes campos:

    • apiPath— La ruta a la operación de la API, tal como se define en el OpenAPI esquema.

    • httpMethod— El método de la operación de la API, tal como se define en el OpenAPI esquema.

    • requestBody— Contiene el cuerpo de la solicitud y sus propiedades, tal como se definen en el OpenAPI esquema del grupo de acciones.

  • Si ha definido el grupo de acciones con los detalles de la función, el evento de entrada contiene el siguiente campo:

    • function— El nombre de la función tal como se define en los detalles de la función del grupo de acciones.

  • sessionAttributes— Contiene los atributos de la sesión y sus valores. Estos atributos se almacenan durante una sesión y proporcionan contexto al agente.

  • promptSessionAttributes— Contiene los atributos de la sesión rápida y sus valores. Estos atributos se almacenan durante un turno y proporcionan contexto al agente.

Evento de respuesta de Lambda a Amazon Bedrock

Amazon Bedrock espera una respuesta de una función de Lambda que coincida con el siguiente formato. La respuesta consta de los parámetros devueltos por la operación de la API. El agente puede usar la respuesta de la función de Lambda para una mayor orquestación o para ayudarla a devolver una respuesta al cliente.

nota

El tamaño máximo de la respuesta de carga útil de Lambda es de 25 KB.

El formato del evento de entrada depende de si ha definido el grupo de acciones con un esquema de API o con detalles de función:

  • Si ha definido el grupo de acciones con un esquema de API, el formato de respuesta es el siguiente:

    { "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 } } }, ... ] }
  • Si ha definido el grupo de acciones con los detalles de la función, el formato de respuesta es el siguiente:

    { "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 } } } }, ... ] }

En la siguiente lista se describen los campos de respuesta:

  • messageVersion: la versión del mensaje que identifica el formato de los datos del evento que se van a pasar a la función de Lambda y el formato previsto de la respuesta de una función de Lambda. Amazon Bedrock solo admite la versión 1.0.

  • response: contiene la siguiente información acerca de la respuesta de la API.

    • actionGroup: el nombre del grupo de acciones.

    • Si has definido el grupo de acciones con un esquema de API, la respuesta puede incluir los siguientes campos:

      • apiPath— La ruta a la operación de la API, tal como se define en el OpenAPI esquema.

      • httpMethod— El método de la operación de la API, tal como se define en el OpenAPI esquema.

      • httpStatusCode— El código de estado HTTP devuelto por la operación de la API.

      • responseBody— Contiene el cuerpo de la respuesta, tal como se define en el OpenAPI esquema.

    • Si ha definido el grupo de acciones con los detalles de la función, la respuesta puede incluir los siguientes campos:

      • responseState(Opcional): configúrelo en uno de los siguientes estados para definir el comportamiento del agente después de procesar la acción:

        • ERROR: el agente lanza una DependencyFailedException para la sesión actual. Se aplica cuando la ejecución de la función falla debido a un error de dependencia.

        • REPROMPT: el agente pasa una cadena de respuesta al modelo para volver a solicitarlo. Se aplica cuando la ejecución de la función falla debido a una entrada no válida.

      • responseBody— Contiene un objeto que define la respuesta a la ejecución de la función. La clave es el tipo de contenido (actualmente solo TEXT se admite) y el valor es un objeto que contiene body la respuesta.

  • (Opcional) sessionAttributes: contiene los atributos de la sesión y sus valores. Para obtener más información, consulte Atributos de sesión y sesión rápida.

  • (Opcional) promptSessionAttributes: contiene los atributos de la petición y sus valores. Para obtener más información, consulte Atributos de sesión y sesión rápida.

  • (Opcional)knowledgeBasesConfiguration: contiene una lista de configuraciones de consulta para las bases de conocimiento adjuntas al agente. Para obtener más información, consulte Configuraciones de recuperación de la base de conocimientos.

Ejemplo de función de Lambda del grupo de acciones

El siguiente es un ejemplo mínimo de cómo se puede definir la función Lambda en. Python Seleccione la pestaña correspondiente a si ha definido el grupo de acciones con un OpenAPI esquema o con los detalles de la función:

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