Contesto della sessione dell’agente di controllo - Amazon Bedrock

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Contesto della sessione dell’agente di controllo

Per un maggiore controllo del contesto della sessione, puoi modificare l’oggetto SessionState nell’agente. L’oggetto SessionState contiene informazioni che possono essere gestite a turno (richieste e risposte InvokeAgent separate). È possibile utilizzare queste informazioni per fornire un contesto di conversazione all’agente durante le conversazioni con gli utenti.

Il formato generale dell’oggetto SessionState è il seguente.

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

Seleziona un argomento per scoprire di più sui campi dell’oggetto SessionState.

Attributi della sessione e della sessione di prompt

Agent per Amazon Bedrock consente di definire i seguenti tipi di attributi contestuali che persistono su alcune parti di una sessione:

  • sessionAttributes: attributi che persistono durante una sessione tra un utente e un agente. Tutte le richieste InvokeAgent effettuate con lo stesso sessionId appartengono alla medesima sessione, purché il limite di tempo della sessione (idleSessionTTLinSeconds) non sia stato superato.

  • conversationHistory: per la collaborazione multiagente, accetta un contesto aggiuntivo per elaborare le richieste di runtime se conversationalHistorySharing è abilitato per un agente collaboratore. Per impostazione predefinita, questo campo viene creato automaticamente dall’agente supervisore quando si invoca l’agente collaboratore. Facoltativamente, puoi utilizzare questo campo per fornire un contesto aggiuntivo. Per ulteriori informazioni, consulta Utilizzo della collaborazione multiagente con Agent per Amazon Bedrock .

  • promptSessionAttributes: attributi che persistono per un singolo turno (una chiamata InvokeAgent). È possibile utilizzare il segnaposto $prompt_session_attributes$ quando si modifica il modello di prompt di orchestrazione di base. Questo segnaposto verrà compilato in fase di runtime con gli attributi specificati nel campo promptSessionAttributes.

È possibile definire gli attributi dello stato della sessione in due occasioni diverse:

  • Quando configuri un gruppo di operazioni e scrivi la funzione Lambda, includi sessionAttributes o promptSessionAttributes nell’evento di risposta che viene restituito ad Amazon Bedrock.

  • Durante il runtime, quando invii una richiesta InvokeAgent, includi un oggetto sessionState nel corpo della richiesta per modificare dinamicamente gli attributi dello stato della sessione durante la conversazione.

Esempio di attributi di sessione

Nell’esempio indicato di seguito, utilizza un attributo di sessione per personalizzare un messaggio per l’utente.

  1. Scrivi il codice dell’applicazione in modo da chiedere all’utente di fornire il proprio nome e la richiesta che desidera fare all’agente e per archiviare le risposte come variabili <first_name> e <request>.

  2. Scrivi il codice dell’applicazione in modo da inviare una richiesta InvokeAgent con il seguente corpo:

    { "inputText": "<request>", "sessionState": { "sessionAttributes": { "firstName": "<first_name>" } } }
  3. Quando un utente utilizza l’applicazione e fornisce il proprio nome, il codice invia il nome come attributo di sessione e l’agente lo memorizza per la durata dell’intera sessione.

  4. Poiché gli attributi di sessione vengono inviati nell’evento di input Lambda, è possibile fare riferimento a tali attributi in una funzione Lambda per un gruppo di operazioni. Ad esempio, se lo schema API dell’azione richiede un nome nel corpo della richiesta, puoi utilizzare l’attributo di sessione firstName quando scrivi la funzione Lambda per un gruppo di operazioni, in modo che quel campo venga compilato automaticamente quando si invia la richiesta API.

Esempio di attributo di sessione prompt

L’esempio generale riportato di seguito utilizza un attributo di sessione prompt per fornire all’agente un contesto temporale.

  1. Scrivi il codice dell’applicazione in modo da archiviare la richiesta dell’utente in una variabile chiamata <request>.

  2. Scrivi il codice dell’applicazione in modo da recuperare il fuso orario relativo alla posizione dell’utente se l’utente utilizza nella<request> una parola che indica un periodo di tempo (ad esempio “domani”) e archivialo in una variabile chiamata<timezone>.

  3. Scrivi l’applicazione in modo da inviare una richiesta InvokeAgent con il seguente corpo:

    { "inputText": "<request>", "sessionState": { "promptSessionAttributes": { "timeZone": "<timezone>" } } }
  4. Se un utente utilizza una parola che indica il tempo relativo, il codice invia l’attributo della sessione di prompt timeZone e l’agente lo memorizza per l’intera la durata del turno.

  5. Ad esempio, se un utente chiede I need to book a hotel for tomorrow, il codice invia il relativo fuso orario all’agente, che può determinare la data esatta a cui “domani” fa riferimento.

  6. L’attributo di sessione prompt può essere utilizzato nelle fasi indicate di seguito.

    • Se includi il segnaposto $prompt_session_attributes$ nel modello di prompt di orchestrazione, il prompt di orchestrazione sull’FM include gli attributi di sessione prompt.

    • Gli attributi di sessione prompt vengono inviati nell’evento di input Lambda e possono essere utilizzati per compilare le richieste API o restituiti nella risposta.

Risultati dell’invocazione del gruppo di operazioni

Se hai configurato un gruppo di operazioni in modo da restituire il controllo in una risposta InvokeAgent, puoi inviare i risultati dell’invocazione del gruppo in sessionState di una risposta InvokeAgent successiva includendo i seguenti campi:

  • invocationId: questo ID deve corrispondere al’invocationId restituito nell’oggetto ReturnControlPayload nel campo returnControl della risposta InvokeAgent.

  • returnControlInvocationResults: include i risultati ottenuti dall’invocazione dell’azione. Puoi configurare l’applicazione in modo da passare l’oggetto ReturnControlPayload per eseguire una richiesta API o chiamare una funzione definita dall’utente e fornire i risultati di tale azione qui. Ogni membro dell’elenco di returnControlInvocationResults è uno dei seguenti elementi:

    • Un oggetto ApiResult contenente l’operazione API che l’agente ha previsto di dover chiamare in una sequenza InvokeAgent precedente e i risultati derivanti dall’invocazione dell’azione nei tuoi sistemi. Il formato generale è il seguente:

      { "actionGroup": "string", "agentId" : :string", "apiPath": "string", "confirmationState" : "CONFIRM | DENY", "httpMethod": "string", "httpStatusCode": integer, "responseBody": { "TEXT": { "body": "string" } } }
    • Una funzione FunctionResult contenente l’operazione API che l’agente ha previsto di dover chiamare in una sequenza InvokeAgent precedente e i risultati derivanti dall’invocazione dell’azione nei tuoi sistemi. Il formato generale è il seguente:

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

I risultati forniti possono essere utilizzati come contesto per un’ulteriore orchestrazione, inviati in post-elaborazione affinché l’agente formatti una risposta o utilizzati direttamente nella risposta dell’agente all’utente.

Configurazioni di recupero della knowledge base

Per modificare la configurazione di recupero delle knowledge base collegate all’agente, includi il campo knowledgeBaseConfigurations con un elenco di configurazioni per ogni knowledge base di cui desideri specificare le configurazioni. Specificare il valore di knowledgeBaseId. Nel campo vectorSearchConfiguration, è possibile specificare le seguenti configurazioni di query (per ulteriori informazioni su queste configurazioni, consulta Configurare e personalizzare la generazione di query e risposte):

  • Tipo di ricerca: indica se la knowledge base cerca solo gli embedding vettoriali (SEMANTIC) o sia gli embedding vettoriali che il testo non elaborato (HYBRID). Utilizza il campo overrideSearchType.

  • Numero massimo di risultati recuperati: il numero massimo di risultati del recupero della query da utilizzare nella risposta.

  • Metadati e filtri: filtri che è possibile configurare per filtrare i risultati in base agli attributi dei metadati nei file di origine dati.