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
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
oupromptSessionAttributes
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.
-
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
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.
-
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
timeZone
da 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 aoinvocationId
retornado no ReturnControlPayloadobjeto noreturnControl
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 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.