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.
Tópicos
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
sessionIdpertencem à 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
conversationalHistorySharingestiver 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
sessionAttributesoupromptSessionAttributesno evento de resposta retornado ao Amazon Bedrock. -
Durante o runtime, ao enviar uma solicitação InvokeAgent, inclua um objeto
sessionStateno 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.
-
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. -
Escreva o código da aplicação para enviar uma solicitação InvokeAgent com o seguinte corpo:
{ "inputText": "<request>", "sessionState": { "sessionAttributes": { "firstName": "<first_name>" } } } -
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.
-
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
firstNameao 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.
-
Escreva o código do aplicativo para armazenar a solicitação do usuário em uma variável chamada
<request>. -
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>. -
Escreva a aplicação para enviar uma solicitação InvokeAgent com o seguinte corpo:
{ "inputText": "<request>", "sessionState": { "promptSessionAttributes": { "timeZone": "<timezone>" } } } -
Se um usuário usar uma palavra indicando o tempo relativo, o código enviará o atributo
timeZoneda sessão de prompt, e o agente o armazenará durante todo o turno. -
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. -
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 aoinvocationIdretornado no ReturnControlPayloadobjeto noreturnControlcampo 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 listareturnControlInvocationResultsé 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 campooverrideSearchType. -
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.