Controlar o contexto da sessão do agente - 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á.

Controlar o contexto da sessão do agente

Para maior controle do contexto da sessão, é possível modificar o objeto SessionState no agente. O objeto SessionState contém informações que podem ser mantidas em turnos (solicitações e respostas InvokeAgent separadas). É possível usar essas informações para fornecer contexto conversacional ao agente durante conversas com o usuário.

O formato do objeto SessionState é o seguinte:

{ "sessionAttributes": { "<attributeName1>": "<attributeValue1>", "<attributeName2>": "<attributeValue2>", ... }, "conversationHistory": { "messages": [{ "role": "user | assistant", "content": [{ "text": "string" }] }], }, "promptSessionAttributes": { "<attributeName3>": "<attributeValue3>", "<attributeName4>": "<attributeValue4>", ... }, "invocationId": "string", "returnControlInvocationResults": [ ApiResult or FunctionResult, ... ], "knowledgeBases": [ { "knowledgeBaseId": "string", "retrievalConfiguration": { "vectorSearchConfiguration": { "overrideSearchType": "HYBRID | SEMANTIC", "numberOfResults": int, "filter": RetrievalFilter object } } }, ... ] }

Selecione um tópico para saber mais sobre os campos no objeto SessionState.

Atributos da sessão e da sessão de prompt

O Amazon Bedrock Agents permite definir os seguintes tipos de atributo contextual que persistem em partes de uma sessão:

  • sessionAttributes: atributos que persistem durante uma sessão entre um usuário e um agente. Todas as solicitações InvokeAgent feitas com o mesmo sessionId pertencem à mesma sessão, desde que o limite de tempo da sessão (idleSessionTTLinSeconds) não tenha sido ultrapassado.

  • ConversationHistory — Para colaboração com vários agentes, aceita contexto adicional para processar solicitações de tempo de execução se conversationalHistorySharing estiver habilitado para um agente colaborador. Por padrão, esse campo é criado automaticamente pelo agente supervisor ao invocar o agente colaborador. Opcionalmente, você pode usar esse campo para fornecer contexto adicional. Para obter mais informações, consulte Use a colaboração de vários agentes com o Amazon Bedrock Agents .

  • promptSessionAttributes— Atributos que persistem em um único turno (uma InvokeAgentchamada). É possível usar o espaço reservado $prompt_session_attributes$ ao editar o modelo de prompt base da orquestração. Esse espaço reservado será preenchido em tempo de execução com os atributos que você especificar no campo promptSessionAttributes.

É possível definir os atributos do estado da sessão em duas etapas diferentes:

  • Ao configurar um grupo de ação e escrever a função do Lambda, inclua sessionAttributes ou promptSessionAttributes no evento de resposta retornado ao Amazon Bedrock.

  • Durante o runtime, ao enviar uma solicitação InvokeAgent, inclua um objeto sessionState no corpo da solicitação para alterar dinamicamente os atributos do estado da sessão no meio da conversa.

Exemplo de atributo de sessão

O exemplo a seguir usa um atributo de sessão para personalizar uma mensagem para o usuário.

  1. Escreva o código do aplicativo para solicitar que o usuário forneça seu primeiro nome e a solicitação que deseja fazer ao agente e armazene as respostas como variáveis <first_name> <request> e.

  2. Escreva o código da aplicação para enviar uma solicitação InvokeAgent com o seguinte corpo:

    { "inputText": "<request>", "sessionState": { "sessionAttributes": { "firstName": "<first_name>" } } }
  3. Quando um usuário usa a aplicação e fornece seu nome, o código envia o nome como um atributo da sessão e o agente armazena o nome enquanto a sessão durar.

  4. Como os atributos da sessão são enviados no evento de entrada do Lambda, é possível fazer referência a esses atributos de sessão em uma função do Lambda de um grupo de ação. Por exemplo, se o esquema de API da ação exigir um nome no corpo da solicitação, será possível usar o atributo de sessão firstName ao escrever a função do Lambda para que um grupo de ação preencha automaticamente esse campo ao enviar a solicitação de API.

Exemplo de atributo de sessão de prompt

O exemplo geral a seguir usa um atributo de sessão de prompt para fornecer contexto temporal ao agente.

  1. Escreva o código do aplicativo para armazenar a solicitação do usuário em uma variável chamada<request>.

  2. Escreva o código do seu aplicativo para recuperar o fuso horário no local do usuário se o usuário usar uma palavra indicando a hora relativa (como “amanhã”) no<request>, e armazene em uma variável chamada<timezone>.

  3. Escreva a aplicação para enviar uma solicitação InvokeAgent com o seguinte corpo:

    { "inputText": "<request>", "sessionState": { "promptSessionAttributes": { "timeZone": "<timezone>" } } }
  4. Se um usuário usar uma palavra indicando o tempo relativo, o código enviará o atributo timeZone da sessão de prompt, e o agente o armazenará durante todo o turno.

  5. Por exemplo, se um usuário solicitar I need to book a hotel for tomorrow, o código enviará o fuso horário do usuário ao agente, e o agente poderá determinar a data exata à qual “amanhã” se refere.

  6. O atributo da sessão de prompt pode ser usado nas etapas a seguir.

    • Se você incluir o espaço reservado $prompt_session_attributes$ no modelo de prompt de orquestração, o prompt de orquestração para o FM incluirá os atributos da sessão de prompt.

    • Os atributos de sessão de prompt são enviados no Evento de entrada do Lambda e podem ser usados para ajudar a preencher as solicitações de API ou retornados na resposta.

Resultados da invocação do grupo de ação

Se você tiver configurado um grupo de ação para retornar o controle em uma resposta InvokeAgent, poderá enviar os resultados da invocação do grupo de ação no sessionState em uma resposta InvokeAgent subsequente, incluindo os seguintes campos:

  • invocationId— Esse ID deve corresponder ao invocationId retornado no ReturnControlPayloadobjeto no returnControl campo da InvokeAgentresposta.

  • returnControlInvocationResults: inclui os resultados obtidos ao invocar a ação. Você pode configurar seu aplicativo para passar o ReturnControlPayloadobjeto para realizar uma solicitação de API ou chamar uma função que você define. É possível fornecer os resultados dessa ação aqui. Cada membro da lista returnControlInvocationResults é um dos seguintes:

    • Um ApiResultobjeto contendo a operação de API que o agente previu que deveria ser chamada em uma InvokeAgentsequência anterior e os resultados da invocação da ação em seus sistemas. O formato geral é o seguinte:

      { "actionGroup": "string", "agentId" : :string", "apiPath": "string", "confirmationState" : "CONFIRM | DENY", "httpMethod": "string", "httpStatusCode": integer, "responseBody": { "TEXT": { "body": "string" } } }
    • Um FunctionResultobjeto contendo a função que o agente previu que deveria ser chamada em uma InvokeAgentsequência anterior e os resultados da invocação da ação em seus sistemas. O formato geral é o seguinte:

      { "actionGroup": "string", "agentId" : :string", "confirmationState" : "CONFIRM | DENY", "function": "string", "responseBody": { "TEXT": { "body": "string" } } }

Os resultados fornecidos podem ser usados como contexto para orquestração adicional, enviados para pós-processamento para que o agente formate uma resposta ou usados diretamente na resposta do agente ao usuário.

Configurações de recuperação da base de conhecimento

Para modificar a configuração de recuperação das bases de conhecimento anexadas ao agente, inclua o campo knowledgeBaseConfigurations com uma lista de configurações para cada base de conhecimento cujas configurações você deseja especificar. Especifique o knowledgeBaseId. No campo vectorSearchConfiguration, é possível especificar as seguintes configurações de consulta (para obter mais informações sobre essas configurações, consulteConfigurar e personalizar consultas e geração de respostas):

  • Tipo de pesquisa: se a base de conhecimento pesquisa somente incorporações de vetores (SEMANTIC) ou incorporações de vetores e texto bruto (HYBRID). Use o campo overrideSearchType.

  • Número máximo de resultados recuperados: o número máximo de resultados da recuperação da consulta a serem usados na resposta.

  • Metadados e filtragem: filtros que é possível configurar para filtrar os resultados com base nos atributos de metadados nos arquivos da fonte de dados.