Suivez le processus de step-by-step raisonnement de l'agent à l'aide de Trace - 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.

Suivez le processus de step-by-step raisonnement de l'agent à l'aide de Trace

Chaque réponse d'un agent Amazon Bedrock est accompagnée d'une trace détaillant les étapes orchestrées par l'agent. Cette trace vous aide à suivre le processus de raisonnement de l’agent qui le conduit à la réponse qu’il donne à ce moment de la conversation.

Utilisez la trace pour suivre le parcours de l’agent depuis l’entrée utilisateur jusqu’à la réponse qu’il renvoie. La trace fournit des informations sur les entrées des groupes d'actions que l'agent invoque et sur les bases de connaissances qu'il interroge pour répondre à l'utilisateur. En outre, le suivi fournit des informations sur les résultats renvoyés par les groupes d'action et les bases de connaissances. Vous pouvez consulter le raisonnement utilisé par l’agent pour déterminer l’action qu’il entreprend ou la requête qu’il adresse à une base de connaissances. Si une étape de la trace échoue, la raison de cet échec est renvoyée. Utilisez les informations détaillées de la trace pour dépanner votre agent. Vous pouvez identifier les étapes au cours desquelles l'agent rencontre des problèmes ou celles au cours desquelles il produit un comportement inattendu. Vous pouvez ensuite utiliser ces informations pour réfléchir aux moyens d'améliorer le comportement de l'agent.

Structure de la trace

La trace est affichée sous forme d'JSONobjet à la fois dans la console et dans leAPI. Chaque étape dans la console ou Tracedans le API peut se trouver l'une des traces suivantes :

  • PreProcessingTrace— Trace l'entrée et la sortie de l'étape de prétraitement, au cours de laquelle l'agent contextualise et catégorise les entrées de l'utilisateur et détermine si elles sont valides.

  • OrchestrationTrace— Trace l'entrée et la sortie de l'étape d'orchestration, au cours de laquelle l'agent interprète les entrées, invoque des groupes d'action et interroge les bases de connaissances. L'agent renvoie ensuite la sortie pour poursuivre l'orchestration ou pour répondre à l'utilisateur.

  • PostProcessingTrace— Trace l'entrée et la sortie de l'étape de post-traitement, au cours de laquelle l'agent gère le résultat final de l'orchestration et détermine comment renvoyer la réponse à l'utilisateur.

  • FailureTrace— Détermine la raison pour laquelle une étape a échoué.

  • GuardrailTrace— Retrace les actions du garde-corps.

Chacune des traces (saufFailureTrace) contient un ModelInvocationInputobjet. L'interface ModelInvocationInputL'objet contient les configurations définies dans le modèle d'invite pour l'étape, ainsi que l'invite fournie à l'agent lors de cette étape. Pour plus d'informations sur la façon de modifier les modèles d'invite, consultezAméliorez la précision des agents à l'aide de modèles d'invite avancés dans Amazon Bedrock. La structure de l'ModelInvocationInputobjet est la suivante :

{ "traceId": "string", "text": "string", "type": "PRE_PROCESSING | ORCHESTRATION | KNOWLEDGE_BASE_RESPONSE_GENERATION | POST_PROCESSING", "inferenceConfiguration": { "maximumLength": number, "stopSequences": ["string"], "temperature": float, "topK": float, "topP": float }, "promptCreationMode": "DEFAULT | OVERRIDDEN", "parserMode": "DEFAULT | OVERRIDDEN", "overrideLambda": "string" }

La liste suivante décrit les champs du ModelInvocationInputobjet :

Pour plus d'informations sur chaque type de trace, consultez les sections suivantes :

{ "modelInvocationInput": { // see above for details } "modelInvocationOutput": { "metadata": { "usage": { "inputToken":: int, "outputToken":: int }, "rawResponse": { "content": "string" } "parsedResponse": { "isValid": boolean, "rationale": "string" }, "traceId": "string" } }

PreProcessingTraceIl se compose d'un ModelInvocationInputun objet et un PreProcessingModelInvocationOutputobjet. L'interface PreProcessingModelInvocationOutputcontient les champs suivants.

  • metadata— Contient les informations suivantes concernant la sortie du modèle de base.

    • usage— Contient les informations suivantes sur l'utilisation du modèle de base.

      • inputTokens— Contient les informations sur les jetons d'entrée issus de l'utilisation du modèle de base.

      • outputTokens— Contient les informations sur les jetons de sortie issus de l'utilisation du modèle de base.

  • rawResponse— Contient le résultat brut du modèle de base.

    • content— Le contenu brut de sortie du modèle de base.

  • parsedResponse : contient les informations suivantes concernant l’invite utilisateur analysée.

    • isValid— Spécifie si l'invite de l'utilisateur est valide.

    • rationale : spécifie le raisonnement de l’agent pour les prochaines étapes à suivre.

  • traceId : identifiant unique de la trace.

OrchestrationTraceIl se compose du ModelInvocationInputobjet, OrchestrationModelInvocationOutputobjet, et toute combinaison des objets InvocationInputRationale et Observation. L'interface OrchestrationModelInvocationOutputcontient les champs suivants. Pour plus d'informations sur les objets InvocationInputRationale et Observation, sélectionnez l'un des onglets suivants.

{ "modelInvocationInput": { // see above for details }, "modelInvocationOutput": { "metadata": { "usage": { "inputToken":: int, "outputToken":: int }, "rawResponse": { "content": "string" }, "rationale": { ... }, "invocationInput": { ... }, "observation": { ... } }
Rationale

L'objet Rationale contient le raisonnement de l'agent en fonction des données saisies par l'utilisateur. Voici la structure :

{ "traceId": "string", "text": "string" }

La liste suivante décrit les champs de l'objet Rationale :

  • traceId : identifiant unique de l’étape de la trace.

  • text— Le processus de raisonnement de l'agent, basé sur l'invite de saisie.

InvocationInput

L'InvocationInputobjet contient des informations qui seront entrées dans le groupe d'action ou la base de connaissances qui doit être invoquée ou interrogée. Voici la structure :

{ "traceId": "string", "invocationType": "ACTION_GROUP | KNOWLEDGE_BASE | FINISH", "actionGroupInvocationInput": { // see below for details }, "knowledgeBaseLookupInput": { "knowledgeBaseId": "string", "text": "string" } }

La liste suivante décrit les champs de l'InvocationInputobjet :

  • traceId : identifiant unique de la trace.

  • invocationType— Spécifie si l'agent invoque un groupe d'action ou une base de connaissances, ou met fin à la session.

  • actionGroupInvocationInput : apparaît si type correspond à ACTION_GROUP. Pour de plus amples informations, veuillez consulter Définissez les actions dans le groupe d'actions. Il peut s'agir de l'une des structures suivantes :

    • Si le groupe d'actions est défini par un API schéma, la structure est la suivante :

      { "actionGroupName": "string", "apiPath": "string", "verb": "string", "parameters": [ { "name": "string", "type": "string", "value": "string" }, ... ], "requestBody": { "content": { "<content-type>": [ { "name": "string", "type": "string", "value": "string" } ] } }, "executionType": "LAMBDA | RETURN_CONTROL", "invocationId": "string" }

      Voici la description des champs :

      • actionGroupName— Le nom du groupe d'actions qui, selon les prévisions de l'agent, doit être invoqué.

      • apiPath— Le chemin d'accès à l'APIopération à appeler, conformément au API schéma.

      • verb— La API méthode utilisée, conformément au API schéma.

      • parameters : contient une liste d’objets. Chaque objet contient le nom, le type et la valeur d'un paramètre de l'APIopération, tel que défini dans le API schéma.

      • requestBody— Contient le corps de la demande et ses propriétés, tels que définis dans le API schéma.

      • executionType— Si l'exécution de l'action est transmise à une fonction Lambda (LAMBDA) ou si le contrôle est renvoyé via la InvokeAgent réponse (RETURN_CONTROL). Pour de plus amples informations, veuillez consulter Gérer l'exécution de l'action.

      • invocationId— L'identifiant unique de l'invocation. Renvoyé uniquement si executionType c'est le casRETURN_CONTROL.

    • Si le groupe d'actions est défini par les détails de la fonction, la structure est la suivante :

      { "actionGroupName": "string", "function": "string", "parameters": [ { "name": "string", "type": "string", "value": "string" }, ... ], "executionType": "LAMBDA | RETURN_CONTROL", "invocationId": "string" }

      Voici la description des champs :

      • actionGroupName— Le nom du groupe d'actions qui, selon les prévisions de l'agent, doit être invoqué.

      • function— Le nom de la fonction que l'agent prédit doit être appelée.

      • parameters— Les paramètres de la fonction.

      • executionType— Si l'exécution de l'action est transmise à une fonction Lambda (LAMBDA) ou si le contrôle est renvoyé via la InvokeAgent réponse (RETURN_CONTROL). Pour de plus amples informations, veuillez consulter Gérer l'exécution de l'action.

      • invocationId— L'identifiant unique de l'invocation. Renvoyé uniquement si executionType c'est le casRETURN_CONTROL.

  • knowledgeBaseLookupInput : apparaît si type correspond à KNOWLEDGE_BASE. Pour de plus amples informations, veuillez consulter Récupérez des données et générez des réponses basées sur l'IA avec des bases de connaissances. Contient les informations suivantes concernant la base de connaissances et la requête de recherche de la base de connaissances :

    • knowledgeBaseId : identifiant unique de la base de connaissances que l’agent recherche.

    • text : requête envoyée à la base de connaissances.

Observation

L'objet Observation contient le résultat ou la sortie d'un groupe d'action ou d'une base de connaissances, ou la réponse à l'utilisateur. Voici la structure :

{ "traceId": "string", "type": "ACTION_GROUP | KNOWLEDGE_BASE | REPROMPT | ASK_USER | FINISH", "actionGroupInvocation": { "text": "JSON-formatted string" }, "knowledgeBaseLookupOutput": { "retrievedReferences": [ { "content": { "text": "string" }, "location": { "type": "S3", "s3Location": { "uri": "string" } } }, ... ] }, "repromptResponse": { "source": "ACTION_GROUP | KNOWLEDGE_BASE | PARSER", "text": "string" }, "finalResponse": { "text" } }

La liste suivante décrit les champs de l'objet Observation :

  • traceId : identifiant unique de la trace.

  • type— Spécifie si l'observation de l'agent est renvoyée à partir du résultat d'un groupe d'actions ou d'une base de connaissances, si l'agent réinvite l'utilisateur, demande plus d'informations ou met fin à la conversation.

  • actionGroupInvocationOutput— Contient la chaîne JSON formatée renvoyée par l'APIopération invoquée par le groupe d'actions. Apparaît si type correspond à ACTION_GROUP. Pour de plus amples informations, veuillez consulter Définir OpenAPI schémas pour les groupes d'action de votre agent dans Amazon Bedrock.

  • knowledgeBaseLookupOutput— Contient du texte extrait de la base de connaissances pertinent pour répondre à l'invite, ainsi que l'emplacement de la source de données sur Amazon S3. Apparaît si type correspond à KNOWLEDGE_BASE. Pour de plus amples informations, veuillez consulter Récupérez des données et générez des réponses basées sur l'IA avec des bases de connaissances. Chaque objet de la liste retrievedReferences contient les champs suivants :

    • content : contient du texte (text), extrait de la base de connaissances, renvoyé par la requête de la base de connaissances.

    • location— Contient l'Amazon S3 URI de la source de données à partir de laquelle le texte renvoyé a été trouvé.

  • repromptResponse : apparaît si type correspond à REPROMPT. Contient le texte (text) qui demande à nouveau une invite ainsi que la raison (source) pour laquelle l’agent doit renvoyer une invite.

  • finalResponse : apparaît si type correspond à ASK_USER ou FINISH. Contient le texte (text) qui demande des informations supplémentaires à l’utilisateur ou qui est une réponse à ce dernier.

{ "modelInvocationInput": { // see above for details } "modelInvocationOutput": { "rawResponse": { "content": "string" }, "metadata": { "usage": { "inputToken": int, "outputToken": int } }, "parsedResponse": { "text": "string" }, "traceId": "string" } }

PostProcessingTraceIl se compose d'un ModelInvocationInputun objet et un PostProcessingModelInvocationOutputobjet. L'interface PostProcessingModelInvocationOutputcontient les champs suivants :

  • rawResponse— Contient le résultat brut du modèle de base.

    • content— Le contenu brut de sortie du modèle de base.

  • metadata— Contient les informations suivantes concernant la sortie du modèle de base.

    • usage— Contient les informations suivantes sur l'utilisation du modèle de base.

      • inputTokens— Contient les informations sur les jetons d'entrée issus de l'utilisation du modèle de base.

      • outputTokens— Contient les informations sur les jetons de sortie issus de l'utilisation du modèle de base.

  • parsedResponse— Contient le text code à renvoyer à l'utilisateur une fois le texte traité par la fonction d'analyse.

  • traceId : identifiant unique de la trace.

{ "failureReason": "string", "traceId": "string" }

La liste suivante décrit les champs de l'FailureTraceobjet :

  • failureReason : raison pour laquelle l’étape a échoué.

  • traceId : identifiant unique de la trace.

{ "action": "GUARDRAIL_INTERVENED" | "NONE", "inputAssessments": [GuardrailAssessment], "outputAssessments": [GuardrailAssessment] }

La liste suivante décrit les champs de l' GuardrailAssessment objet :

  • action— indique si des glissières de sécurité sont intervenues ou non sur les données d'entrée. Les options sont GUARDRAIL_INTERVENED ouNONE.

  • inputAssessments— Les détails de l'évaluation de Guardrail sur la base des données saisies par l'utilisateur.

  • outputAssessments— Les détails de l'évaluation de Guardrail sur la réponse.

Pour plus de détails sur l'GuardrailAssessmentobjet et le test d'un garde-corps, voir. Testez un garde-corps

GuardrailAssessment exemple :

{ "topicPolicy": { "topics": [{ "name": "string", "type": "string", "action": "string" }] }, "contentPolicy": { "filters": [{ "type": "string", "confidence": "string", "action": "string" }] }, "wordPolicy": { "customWords": [{ "match": "string", "action": "string" }], "managedWordLists": [{ "match": "string", "type": "string", "action": "string" }] }, "sensitiveInformationPolicy": { "piiEntities": [{ "type": "string", "match": "string", "action": "string" }], "regexes": [{ "name": "string", "regex": "string", "match": "string", "action": "string" }] } }