使用跟踪跟踪代理的 step-by-step推理过程 - Amazon Bedrock

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

使用跟踪跟踪代理的 step-by-step推理过程

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

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

轨迹的结构

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

  • 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对象:

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

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

由 a PreProcessingTrace组成 ModelInvocationInput对象和 PreProcessingModelInvocationOutput对象。这些区域有:PreProcessingModelInvocationOutput包含以下字段。

  • metadata— 包含有关基础模型输出的以下信息。

    • usage— 包含基础模型使用情况的以下信息。

      • inputTokens— 包含有关基础模型使用情况的输入令牌的信息。

      • outputTokens— 包含有关基础模型使用情况的输出令牌的信息。

  • rawResponse— 包含基础模型的原始输出。

    • content— 基础模型的原始输出内容。

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

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

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

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

OrchestrationTrace以下部分组成 ModelInvocationInput对象,OrchestrationModelInvocationOutput对象,以及 “基本原理” 和 “观察” 对象的任意组合。InvocationInput这些区域有:OrchestrationModelInvocationOutput包含以下字段。有关 “基本原理” 和 “观测InvocationInput值” 对象的更多信息,请从以下选项卡中进行选择。

{ "modelInvocationInput": { // see above for details }, "modelInvocationOutput": { "metadata": { "usage": { "inputToken":: int, "outputToken":: int }, "rawResponse": { "content": "string" }, "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,则会显示此字段。有关更多信息,请参阅 使用知识库检索数据并生成 AI 响应。包含有关知识库和知识库搜索查询的以下信息:

    • 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,则显示此字段。有关更多信息,请参阅 定义 OpenAPI Amazon Bedrock 中代理人行动小组的架构

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

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

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

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

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

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

由 a PostProcessingTrace组成 ModelInvocationInput对象和 PostProcessingModelInvocationOutput对象。这些区域有:PostProcessingModelInvocationOutput包含以下字段:

  • rawResponse— 包含基础模型的原始输出。

    • content— 基础模型的原始输出内容。

  • metadata— 包含有关基础模型输出的以下信息。

    • usage— 包含基础模型使用情况的以下信息。

      • inputTokens— 包含有关基础模型使用情况的输入令牌的信息。

      • outputTokens— 包含有关基础模型使用情况的输出令牌的信息。

  • 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— 护栏对响应的评估详情。

有关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" }] } }