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 multiagente, aceita contexto adicional para processar solicitações em 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 Usar a colaboração multiagente com Agentes do Amazon Bedrock .

  • promptSessionAttributes: atributos que persistem em um único turno (uma chamada InvokeAgent). É 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 da aplicação para solicitar que o usuário forneça seu nome e a solicitação que ele deseja fazer ao agente e armazene as respostas como variáveis <first_name> e <request>.

  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 da aplicação para armazenar a solicitação do usuário em uma variável chamada <request>.

  2. Escreva o código da aplicação para recuperar o fuso horário no local do usuário, se o usuário usar uma palavra indicando o tempo relativo (como “amanhã”) na <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 objeto ReturnControlPayload no campo returnControl da resposta InvokeAgent.

  • returnControlInvocationResults: inclui os resultados obtidos ao invocar a ação. É possível configurar a aplicação para transmitir o objeto ReturnControlPayload para executar uma solicitação de API ou chamar uma função definida. É possível fornecer os resultados dessa ação aqui. Cada membro da lista returnControlInvocationResults é um dos seguintes:

    • Um objeto ApiResult que contém a operação de API que o agente previu que deveria ser chamada em uma sequência InvokeAgent anterior e os resultados da invocação da ação nos sistemas. O formato geral é o seguinte:

      { "actionGroup": "string", "agentId" : :string", "apiPath": "string", "confirmationState" : "CONFIRM | DENY", "httpMethod": "string", "httpStatusCode": integer, "responseBody": { "TEXT": { "body": "string" } } }
    • Um objeto FunctionResult que contém a função que o agente previu que deveria ser chamada em uma sequência InvokeAgent anterior e os resultados da invocação da ação nos 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.