在 Amazon Bedrock 中追踪事件 - Amazon Bedrock

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在 Amazon Bedrock 中追踪事件

Amazon Bedrock 代理的每一次回复都附有一条跟踪记录,详细说明了该代理正在策划的步骤。跟踪记录可以帮助您跟踪代理的推理过程,该过程可引导它做出它当时在对话中做出的响应。

使用跟踪记录来跟踪代理从用户输入到它返回的响应的路径。跟踪提供有关代理调用的操作组的输入信息,以及代理为响应用户而查询的知识库的信息。此外,跟踪还提供有关行动组和知识库返回的产出的信息。您可以查看代理用来确定其采取的操作或对知识库的查询的推理。如果跟踪中的某个步骤失败,则跟踪功能会返回失败的原因。使用跟踪中的详细信息对您的代理进行故障排除。您可以确定代理在哪些步骤中遇到问题或在哪些步骤中会产生意外行为。然后,您可以使用这些信息来考虑如何改善代理的行为。

查看踪迹

以下介绍如何查看跟踪。选择与您选择的方法相对应的选项卡,然后按照步骤操作。

Console
在与代理对话期间查看跟踪

AWS Management Console 使用具有 Amazon Bedrock 权限的 IAM 角色登录,然后通过 https://console.aws.amazon.com/bedrock/ 打开亚马逊 Bedrock 控制台。

  1. 在 “理” 部分,从代理列表中选择要测试的代理的链接。

  2. 测试” 窗口出现在右侧的窗格中。

  3. 输入一条消息,然后选择 Run。在生成响应时或响应完成生成后,选择显示跟踪

  4. 当您的代理执行编排时,您可以实时查看每个步骤的跟踪。

API

要查看跟踪,请使用适用于 Amazon Bedrock 的代理运行时终端节点发送InvokeAgent请求,并将该enableTrace字段设置为。TRUE默认情况下禁用跟踪。

如果您启用跟踪,则在InvokeAgent响应中,流chunk中的每一个都附带一个映射到TracePart对象的trace字段。里面TracePart有一个映射到Trace对象的trace字段。

轨迹的结构

该跟踪在控制台和 API 中均以 JSON 对象的形式显示。控制台或 API Trace中的每个步骤都可以是以下轨迹之一:

  • PreProcessingTrace— 跟踪预处理步骤的输入和输出,在该步骤中,代理对用户输入进行情境化和分类,并确定其是否有效。

  • OrchestrationTrace— 跟踪编排步骤的输入和输出,在该步骤中,代理解释输入、调用操作组和查询知识库。然后,代理返回输出以继续编排或响应用户。

  • PostProcessingTrace— 跟踪后处理步骤的输入和输出,在该步骤中,代理处理编排的最终输出并确定如何将响应返回给用户。

  • FailureTrace— 追踪步骤失败的原因。

  • GuardrailTrace— 追踪护栏的动作。

每条轨迹(除外FailureTrace)都包含一个ModelInvocationInput对象。该ModelInvocationInput对象包含在该步骤的提示模板中设置的配置,以及在此步骤中向代理提供的提示。有关如何修改提示模板的更多信息,请参阅Amazon Bedrock 中的高级提示。该ModelInvocationInput对象的结构如下所示:

{ "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" }

以下列表描述了ModelInvocationInput对象的字段:

  • traceId – 跟踪的唯一标识符。

  • text – 在相应步骤中向代理提供的提示文本。

  • type – 代理过程的当前步骤。

  • inferenceConfiguration – 影响响应生成的推理参数。有关更多信息,请参阅 推理参数

  • promptCreationMode— 此步骤中代理的默认基本提示模板是否被覆盖。有关更多信息,请参阅 Amazon Bedrock 中的高级提示

  • parserMode— 此步骤中代理的默认响应解析器是否被覆盖。有关更多信息,请参阅 Amazon Bedrock 中的高级提示

  • overrideLambda— 如果默认解析器被覆盖,则用于解析响应的解析器 Lambda 函数的亚马逊资源名称 (ARN)。有关更多信息,请参阅 Amazon Bedrock 中的高级提示

有关每种跟踪类型的更多信息,请参阅以下各节:

{ "modelInvocationInput": { // see above for details } "modelInvocationOutput": { "parsedResponse": { "isValid": boolean, "rationale": "string" }, "traceId": "string" } }

PreProcessingTrace由一个ModelInvocationInput对象和一个PreProcessingModelInvocationOutput对象组成。PreProcessingModelInvocationOutput 包含以下字段。

  • parsedResponse – 包含已解析的用户提示的以下相关详细信息。

    • isValid— 指定用户提示是否有效。

    • rationale – 用于指定代理对后续行动的推理。

  • traceId – 跟踪的唯一标识符。

OrchestrationTraceModelInvocationInput对象以及 “基本原理” 和 “观察” 对象的任意组合组成。InvocationInput有关每个对象的更多信息,请从以下选项卡中进行选择:

{ "modelInvocationInput": { // see above for details }, "rationale": { ... }, "invocationInput": { ... }, "observation": { ... } }
Rationale

Rational 对象包含代理给定用户输入的推。以下是结构:

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

以下列表描述了 Rational 对象字段:

  • traceId – 跟踪步骤的唯一标识符。

  • text— 基于输入提示的代理推理过程。

InvocationInput

InvocationInput对象包含将输入到要调用或查询的操作组或知识库中的信息。以下是结构:

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

以下列表描述了InvocationInput对象的字段:

  • traceId – 跟踪的唯一标识符。

  • invocationType— 指定代理是在调用操作组或知识库,还是正在结束会话。

  • actionGroupInvocationInput – 如果 typeACTION_GROUP,则会显示此字段。有关更多信息,请参阅 在操作组中定义动作。可以是以下结构之一:

    • 如果操作组由 API 架构定义,则结构如下所示:

      { "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" }

      以下是这些字段的描述:

      • actionGroupName— 应调用代理预测的操作组的名称。

      • apiPath— 根据 API 架构,要调用的 API 操作的路径。

      • verb— 根据 API 架构,正在使用的 API 方法。

      • parameters – 包含对象列表。每个对象都包含 API 操作中参数的名称、类型和值,如 API 架构中所定义。

      • requestBody— 包含请求正文及其属性,如 API 架构中所定义。

      • executionType— 操作的完成是传递给 Lambda 函数 (LAMBDA) 还是通过InvokeAgent响应 (RETURN_CONTROL) 返回控制权。有关更多信息,请参阅 处理操作的履行

      • invocationId— 调用的唯一标识符。仅当为时executionType才返回RETURN_CONTROL

    • 如果操作组由函数详细信息定义,则结构如下所示:

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

      以下是这些字段的描述:

      • actionGroupName— 应调用代理预测的操作组的名称。

      • function— 应调用代理预测的函数的名称。

      • parameters— 函数的参数。

      • executionType— 操作的完成是传递给 Lambda 函数 (LAMBDA) 还是通过InvokeAgent响应 (RETURN_CONTROL) 返回控制权。有关更多信息,请参阅 处理操作的履行

      • invocationId— 调用的唯一标识符。仅当为时executionType才返回RETURN_CONTROL

  • knowledgeBaseLookupInput – 如果 typeKNOWLEDGE_BASE,则会显示此字段。有关更多信息,请参阅 Amazon Bedrock 知识库。包含有关知识库和知识库搜索查询的以下信息:

    • knowledgeBaseId – 代理将查询的知识库的唯一标识符。

    • text – 对知识库的查询。

Observation

O b servation 对象包含操作组或知识库的结果或输出,或者对用户的响应。以下是结构:

{ "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" } }

以下列表描述了观测对象的字段:

  • traceId – 跟踪的唯一标识符。

  • type— 指定代理的观察结果是从操作组还是知识库的结果中返回,以及代理是否在重新提示用户、请求更多信息或结束对话。

  • actionGroupInvocationOutput— 包含操作组调用的 API 操作返回的 JSON 格式的字符串。如果 typeACTION_GROUP,则显示此字段。有关更多信息,请参阅 在 Amazon Bedrock 中OpenAPI为代理的行动组定义架构

  • knowledgeBaseLookupOutput— 包含从知识库中检索到的与响应提示相关的文本,以及数据源的 Amazon S3 位置。如果 typeKNOWLEDGE_BASE,则显示此字段。有关更多信息,请参阅 Amazon Bedrock 知识库。列表中的每个对象都retrievedReferences包含以下字段:

    • content – 包含从知识库查询返回的知识库 text

    • location— 包含从中找到返回文本的数据源的 Amazon S3 URI。

  • repromptResponse – 如果 typeREPROMPT,则会显示此字段。包含要求再次提示的 text,以及代理需要重新提示的原因 source

  • finalResponse – 如果 typeASK_USERFINISH,则会显示此字段。包含要求用户提供更多信息或回应用户的 text

{ "modelInvocationInput": { // see above for details } "modelInvocationOutput": { "parsedResponse": { "text": "string" }, "traceId": "string" } }

PostProcessingTrace由一个ModelInvocationInput对象和一个PostProcessingModelInvocationOutput对象组成。PostProcessingModelInvocationOutput包含以下字段:

  • parsedResponse— 包含text要在解析器函数处理文本后返回给用户的。

  • traceId – 跟踪的唯一标识符。

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

以下列表描述了FailureTrace对象的字段:

  • failureReason – 步骤失败的原因。

  • traceId – 跟踪的唯一标识符。

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

以下列表描述了 GuardrailAssessment 对象的字段:

  • action— 表示护栏是否干预了输入数据。选项为GUARDRAIL_INTERVENEDNONE

  • inputAssessments— 根据用户输入进行的 Guardrail 评估的详细信息。

  • outputAssessments— Guardrail对响应的评估的详细信息。

有关GuardrailAssessment对象和测试护栏的更多详细信息,请参阅。测试护栏

GuardrailAssessment 示例:

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