Configure as funções do Lambda para enviar informações que um agente do Amazon Bedrock extrai do usuário para cumprir um grupo de ação no Amazon Bedrock - Amazon Bedrock

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Configure as funções do Lambda para enviar informações que um agente do Amazon Bedrock extrai do usuário para cumprir um grupo de ação no Amazon Bedrock

Você pode definir uma função Lambda para programar a lógica de negócios para um grupo de ação. Depois que um agente do Amazon Bedrock determina a operação de API que precisa ser invocada em um grupo de ação, ele envia informações do esquema da API junto com metadados relevantes como um evento de entrada para a função Lambda. Para escrever sua função, você precisa entender os seguintes componentes da função Lambda:

  • Evento de entrada — contém metadados relevantes e campos preenchidos do corpo da solicitação da operação da API ou dos parâmetros da função para a ação que o agente determina que deve ser chamada.

  • Resposta — contém metadados relevantes e campos preenchidos para o corpo da resposta retornado da operação da API ou da função.

Você escreve sua função Lambda para definir como lidar com um grupo de ações e personalizar como deseja que a resposta da API seja retornada. Use as variáveis do evento de entrada para definir as funções e retornar uma resposta ao agente.

nota

Um grupo de ações pode conter até 11 operações de API, mas você só pode escrever uma função Lambda. Como a função Lambda só pode receber um evento de entrada e retornar uma resposta para uma operação de API por vez, você deve escrever a função considerando as diferentes operações de API que podem ser invocadas.

Para que seu agente use uma função Lambda, você deve anexar uma política baseada em recursos à função para fornecer permissões para o agente. Para obter mais informações, siga as etapas emPolítica baseada em recursos para permitir que o Amazon Bedrock invoque uma função Lambda do grupo de ação. Para obter mais informações sobre políticas baseadas em recursos no Lambda, consulte Usando políticas baseadas em recursos para o Lambda no Guia do Desenvolvedor. AWS Lambda

Para saber como definir uma função ao criar o grupo de ações, consulteAdicione um grupo de ação ao seu agente no Amazon Bedrock.

Evento de entrada do Lambda originado do Amazon Bedrock

Quando um grupo de ações que utiliza uma função do Lambda é invocado, o Amazon Bedrock envia um evento de entrada do Lambda com o formato geral a seguir. Você pode definir sua função Lambda para usar qualquer um dos campos de eventos de entrada para manipular a lógica de negócios dentro da função para realizar a ação com sucesso. Para obter mais informações sobre as funções do Lambda, consulte Invocação orientada por eventos no Guia do desenvolvedor. AWS Lambda

O formato do evento de entrada depende se você definiu o grupo de ações com um esquema de API ou com detalhes da função:

  • Se você definiu o grupo de ações com um esquema de API, o formato do evento de entrada é o seguinte:

    { "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" } }
  • Se você definiu o grupo de ação com detalhes da função, o formato do evento de entrada é o seguinte:

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

A lista a seguir descreve os campos do evento de entrada;

  • messageVersion: a versão da mensagem que identifica o formato dos dados de evento que estão indo para a função do Lambda e o formato esperado da resposta de uma função do Lambda. O Amazon Bedrock só oferece suporte à versão 1.0.

  • agent: contém informações sobre o nome, o ID, o alias e a versão do agente ao qual o grupo de ações pertence.

  • inputText: a entrada do usuário para o turno de conversa.

  • sessionId: o identificador exclusivo da sessão do agente.

  • actionGroup: o nome do grupo de ações.

  • parameters: contém uma lista de objetos. Cada objeto contém o nome, o tipo e o valor de um parâmetro na operação da API, conforme definido no OpenAPI esquema ou na função.

  • Se você definiu o grupo de ações com um esquema de API, o evento de entrada conterá os seguintes campos:

    • apiPath— O caminho para a operação da API, conforme definido no OpenAPI esquema.

    • httpMethod— O método da operação da API, conforme definido no OpenAPI esquema.

    • requestBody— Contém o corpo da solicitação e suas propriedades, conforme definido no OpenAPI esquema do grupo de ações.

  • Se você definiu o grupo de ação com detalhes da função, o evento de entrada conterá o seguinte campo:

    • function— O nome da função conforme definido nos detalhes da função para o grupo de ação.

  • sessionAttributes— Contém os atributos da sessão e seus valores. Esses atributos são armazenados em uma sessão e fornecem contexto para o agente.

  • promptSessionAttributes— Contém atributos de sessão rápida e seus valores. Esses atributos são armazenados em um turno e fornecem contexto para o agente.

Evento de resposta do Lambda ao Amazon Bedrock

O Amazon Bedrock espera uma resposta da função do Lambda no formato a seguir. A resposta consiste em parâmetros retornados da operação da API. O agente pode usar a resposta da função do Lambda para orquestração adicional ou para ajudar você a retornar uma resposta ao cliente.

nota

O tamanho máximo da resposta da carga útil do Lambda é 25 KB.

O formato do evento de entrada depende se você definiu o grupo de ações com um esquema de API ou com detalhes da função:

  • Se você definiu o grupo de ações com um esquema de API, o formato da resposta é o seguinte:

    { "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 } } }, ... ] }
  • Se você definiu o grupo de ação com detalhes da função, o formato da resposta é o seguinte:

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

A lista a seguir descreve os campos de resposta:

  • messageVersion: a versão da mensagem que identifica o formato dos dados de evento que estão indo para a função do Lambda e o formato esperado da resposta de uma função do Lambda. O Amazon Bedrock só oferece suporte à versão 1.0.

  • response: contém as seguintes informações sobre a resposta da API.

    • actionGroup: o nome do grupo de ações.

    • Se você definiu o grupo de ações com um esquema de API, os seguintes campos podem estar na resposta:

      • apiPath— O caminho para a operação da API, conforme definido no OpenAPI esquema.

      • httpMethod— O método da operação da API, conforme definido no OpenAPI esquema.

      • httpStatusCode— O código de status HTTP retornado da operação da API.

      • responseBody— Contém o corpo da resposta, conforme definido no OpenAPI esquema.

    • Se você definiu o grupo de ação com detalhes da função, os seguintes campos podem estar na resposta:

      • responseState(Opcional) — Defina um dos seguintes estados para definir o comportamento do agente após o processamento da ação:

        • FALHA — O agente lança um DependencyFailedException para a sessão atual. Aplica-se quando a execução da função falha devido a uma falha de dependência.

        • REPROMPT — O agente passa uma string de resposta ao modelo para solicitá-la novamente. Aplica-se quando a execução da função falha devido a uma entrada inválida.

      • responseBody— Contém um objeto que define a resposta da execução da função. A chave é o tipo de conteúdo (atualmente somente TEXT é suportado) e o valor é um objeto contendo o body da resposta.

  • (Opcional) sessionAttributes: contém os atributos da sessão e seus valores. Para ter mais informações, consulte Atributos de sessão e sessão imediata.

  • (Opcional) promptSessionAttributes: contém os atributos do prompt e seus valores. Para ter mais informações, consulte Atributos de sessão e sessão imediata.

  • (Opcional) knowledgeBasesConfiguration — Contém uma lista de configurações de consulta para bases de conhecimento anexadas ao agente. Para ter mais informações, consulte Configurações de recuperação da base de conhecimento.

Exemplo de função do Lambda do grupo de ações

A seguir está um exemplo mínimo de como a função Lambda pode ser definida em. Python Selecione a guia correspondente ao fato de você ter definido o grupo de ações com um OpenAPI esquema ou com detalhes da função:

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