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.
Configuración de las funciones de Lambda para enviar la información que un agente de Amazon Bedrock obtiene del usuario
Puede definir una función de Lambda para que programe la lógica empresarial de un grupo de acciones. Cuando un agente de Amazon Bedrock determina la operación de la 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 evento de entrada a la función de Lambda. Para escribir la función, debe comprender los siguientes componentes de la función de Lambda:
-
Evento de entrada: contiene los metadatos y los campos rellenados pertinentes 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 y los campos rellenados pertinentes para el cuerpo de la respuesta devuelto por la operación o función de la API.
La función de Lambda se escribe para definir cómo gestionar un grupo de acciones y personalizar la forma en que quiere 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 la API, pero solo se puede escribir una función de Lambda. Como la función de Lambda solo puede recibir un evento de entrada y devolver una respuesta para una operación de la API cada vez, debe escribir la función teniendo en cuenta las diferentes operaciones de la API que se pueden invocar.
Para que su agente utilice una función de Lambda, debe asociar una política basada en recursos con la función para proporcionarle permisos al agente. Para obtener más información, siga los pasos de Política basada en recursos que permite a Amazon Bedrock invocar una función de Lambda de un grupo de acciones. Para obtener más información sobre las políticas basadas en recursos en Lambda, consulte Trabajar con políticas de IAM basadas en recursos en Lambda en la Guía para desarrolladores de AWS Lambda.
Para obtener más información sobre cómo definir una función al crear el grupo de acciones, consulte Agregación de un grupo de acciones al agente en Amazon Bedrock.
Temas
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 de Lambda para que utilice cualquiera de los campos de eventos de entrada para manipular la lógica empresarial dentro de la función para llevar a cabo la acción correctamente. Para obtener más información sobre las funciones de Lambda, consulte la invocación basada en eventos en la Guía para desarrolladores de 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 la 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 del evento 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 y como se define en el esquema de OpenAPI o en la función. -
Si ha definido el grupo de acciones con un esquema de API, el evento de entrada incluirá los siguientes campos:
-
apiPath
: la ruta a la operación de la API, tal como se define en el esquema de OpenAPI. -
httpMethod
: el método de la operación de la API, tal como se define en el esquema de OpenAPI. -
requestBody
: contiene el cuerpo de la solicitud y sus propiedades, tal como se definen en el esquema de OpenAPI para el grupo de acciones.
-
-
Si ha definido el grupo de acciones con los detalles de la función, el evento de entrada incluirá 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 de peticiones 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 incluye 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 respuesta de la carga útil de Lambda es de 25 MB.
El formato del evento de entrada depende de si ha definido el grupo de acciones con un esquema de API o con detalles de la función:
-
Si ha definido el grupo de acciones con un esquema de API, el formato de la 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 la 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 ha 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 esquema de OpenAPI. -
httpMethod
: el método de la operación de la API, tal como se define en el esquema de OpenAPI. -
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 esquema de OpenAPI.
-
-
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:-
FAILURE: el agente lanza una
DependencyFailedException
para la sesión actual. Se aplica cuando se produce un error en la ejecución de la función debido a un error de dependencia. -
REPROMPT: el agente pasa una cadena de respuestas al modelo para volver a pedirla. Se aplica cuando se produce un error en la ejecución de la función 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 se admiteTEXT
) y el valor es un objeto que contiene elbody
de 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 de peticiones. -
(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 de peticiones. -
(Opcional)
knowledgeBasesConfiguration
: contiene una lista de configuraciones de consulta para las bases de conocimientos asociadas 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
A continuación se muestra un ejemplo mínimo de cómo se puede definir la función de Lambda en Python. Seleccione la pestaña correspondiente según si ha definido el grupo de acciones con un esquema de OpenAPI o con los detalles de la función: