Contexte de session de contrôle - Amazon Bedrock

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Contexte de session de contrôle

Pour mieux contrôler le contexte de session, vous pouvez modifier l'SessionStateobjet dans votre agent. L'SessionStateobjet contient des informations qui peuvent être conservées à tour de rôle (InvokeAgentdemande et réponses distinctes). Vous pouvez utiliser ces informations pour fournir un contexte conversationnel à l'agent lors des conversations avec les utilisateurs.

Le format général de l'SessionStateobjet est le suivant.

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

Sélectionnez une rubrique pour en savoir plus sur les champs de l'SessionStateobjet.

Attributs de session et de session d'invite

Agents for Amazon Bedrock vous permet de définir les types d'attributs contextuels suivants qui persistent pendant certaines parties d'une session :

  • SessionAttributes — Attributs qui persistent au cours d'une session entre un utilisateur et un agent. Toutes les InvokeAgentdemandes effectuées avec le même sessionId identifiant appartiennent à la même session, tant que la durée limite de session (laidleSessionTTLinSeconds) n'a pas été dépassée.

  • promptSessionAttributes— Attributs qui persistent pendant un seul tour (un InvokeAgentappel). Vous pouvez utiliser l'espace réservé $prompt_session_attributes$ lorsque vous modifiez le modèle d'invite de base d'orchestration. Cet espace réservé sera renseigné au moment de l'exécution avec les attributs que vous spécifiez dans le promptSessionAttributes champ.

Vous pouvez définir les attributs d'état de session en deux étapes différentes :

  • Lorsque vous configurez un groupe d'action et que vous écrivez la fonction Lambda, incluez sessionAttributes ou incluez promptSessionAttributes l'événement de réponse renvoyé à Amazon Bedrock.

  • Pendant l'exécution, lorsque vous envoyez une InvokeAgentdemande, incluez un sessionState objet dans le corps de la demande pour modifier dynamiquement les attributs d'état de session au milieu de la conversation.

Exemple d'attribut de session

L'exemple suivant utilise un attribut de session pour personnaliser un message destiné à votre utilisateur.

  1. Rédigez le code de votre application pour demander à l'utilisateur de fournir son prénom et la demande qu'il souhaite faire à l'agent et pour stocker les réponses sous forme de variables <first_name>et<request>.

  2. Rédigez le code de votre application pour envoyer une InvokeAgentdemande avec le corps suivant :

    { "inputText": "<request>", "sessionState": { "sessionAttributes": { "firstName": "<first_name>" } } }
  3. Lorsqu'un utilisateur utilise votre application et fournit son prénom, votre code envoie le prénom en tant qu'attribut de session et l'agent enregistre son prénom pendant toute la durée de la session.

  4. Comme les attributs de session sont envoyés lors de l'événement d'entrée Lambda, vous pouvez faire référence à ces attributs de session dans une fonction Lambda pour un groupe d'actions. Par exemple, si le schéma d'API d'action nécessite un prénom dans le corps de la demande, vous pouvez utiliser l'attribut firstName session lors de l'écriture de la fonction Lambda pour un groupe d'actions afin de remplir automatiquement ce champ lors de l'envoi de la demande d'API.

Exemple d'attribut de session rapide

L'exemple général suivant utilise un attribut de session prompt pour fournir un contexte temporel à l'agent.

  1. Écrivez le code de votre application pour stocker la demande de l'utilisateur dans une variable appelée<request>.

  2. Écrivez le code de votre application pour récupérer le fuseau horaire de l'utilisateur si celui-ci utilise un mot indiquant l'heure relative (tel que « demain ») dans le<request>, et stockez-le dans une variable appelée<timezone>.

  3. Rédigez votre candidature pour envoyer une InvokeAgentdemande avec le corps suivant :

    { "inputText": "<request>", "sessionState": { "promptSessionAttributes": { "timeZone": "<timezone>" } } }
  4. Si un utilisateur utilise un mot indiquant le temps relatif, votre code enverra l'attribut de session timeZone prompt et l'agent le stockera pendant toute la durée du tour.

  5. Par exemple, si un utilisateur le demandeI need to book a hotel for tomorrow, votre code envoie le fuseau horaire de l'utilisateur à l'agent et celui-ci peut déterminer la date exacte à laquelle « demain » fait référence.

  6. L'attribut prompt session peut être utilisé lors des étapes suivantes.

Résultats de l'invocation d'un groupe d'actions

Si vous avez configuré un groupe d'actions pour rétablir le contrôle dans une InvokeAgentréponse, vous pouvez envoyer les résultats de l'appel du sessionState groupe d'actions dans une InvokeAgentréponse ultérieure en incluant les champs suivants :

  • invocationId— Cet identifiant doit correspondre à celui invocationId renvoyé dans l'ReturnControlPayloadobjet dans le returnControl champ de la InvokeAgentréponse.

  • returnControlInvocationResults— Inclut les résultats que vous obtenez en invoquant l'action. Vous pouvez configurer votre application pour transmettre l'ReturnControlPayloadobjet afin d'exécuter une demande d'API ou d'appeler une fonction que vous définissez. Vous pouvez ensuite fournir les résultats de cette action ici. Chaque membre de la returnControlInvocationResults liste est l'un des suivants :

    • Un ApiResultobjet contenant l'opération d'API dont l'agent a prédit qu'elle devait être appelée dans une InvokeAgentséquence précédente et les résultats de l'invocation de l'action dans vos systèmes. Le format général est le suivant :

      { "actionGroup": "string", "apiPath": "string", "httpMethod": "string", "httpStatusCode": integer, "responseBody": { "TEXT": { "body": "string" } } }
    • Un FunctionResultobjet contenant la fonction dont l'agent a prédit qu'elle devait être appelée dans une InvokeAgentséquence précédente et les résultats de l'invocation de l'action dans vos systèmes. Le format général est le suivant :

      { "actionGroup": "string", "function": "string", "responseBody": { "TEXT": { "body": "string" } } }

Les résultats fournis peuvent être utilisés comme contexte pour une orchestration ultérieure, envoyés au post-traitement pour que l'agent formate une réponse, ou utilisés directement dans la réponse de l'agent à l'utilisateur.

Configurations de récupération de la base de connaissances

Pour modifier la configuration de récupération des bases de connaissances associées à votre agent, incluez le knowledgeBaseConfigurations champ avec une liste de configurations pour chaque base de connaissances dont vous souhaitez spécifier les configurations. Spécifiez knowledgeBaseId. Dans le vectorSearchConfiguration champ, vous pouvez spécifier les configurations de requête suivantes (pour plus d'informations sur ces configurations, voirConfigurations de requêtes) :

  • Type de recherche : indique si la base de connaissances recherche uniquement les intégrations vectorielles (SEMANTIC) ou à la fois les intégrations vectorielles et le texte brut (). HYBRID Utilisez le overrideSearchType champ.

  • Nombre maximum de résultats extraits : nombre maximal de résultats issus de l'extraction de la requête à utiliser dans la réponse.

  • Métadonnées et filtrage : filtres que vous pouvez configurer pour filtrer les résultats en fonction des attributs de métadonnées des fichiers de source de données.