使用追蹤以追蹤代理程式的逐步推理程序
來自 Amazon Bedrock 代理程式的每個回應都隨附一個追蹤,可詳細說明代理程式正在協調的步驟。追蹤功能幫助您遵循代理程式的推論過程,進而引導其在對話中的該點給出回應。
使用追蹤功能來追蹤從使用者輸入到傳回回應的代理程式路徑。追蹤提供代理程式調用的動作群組輸入,及其查詢以回應使用者的知識庫相關資訊。此外,追蹤會提供動作群組和知識庫傳回之輸出的相關資訊。您可以檢視代理程式用來判斷所採取的動作或對知識庫進行查詢的推論。如果追蹤中的步驟失敗,追蹤會傳回失敗的原因。使用追蹤中的詳細資訊來疑難排解您的代理程式。您可以識別代理程式發生問題或產生意外行為的步驟。然後,您可以使用此資訊來思考改善代理程式的方式。
追蹤結構
如果您啟用追蹤,在 InvokeAgent 回應中,串流中的每個 chunk 都會伴隨一個映射到 TracePart 物件的 trace 欄位。tracePart 物件包含有關代理程式和工作階段的資訊,以及代理程式的推理程序和呼叫 API 函數的結果。
{ "agentId": "string", "agentName": "string", "collaboratorName": "string", "agentAliasId": "string", "sessionId": "string", "agentVersion": "string", "trace": { ...}, "callerChain": [{ "agentAliasArn": "agent alias arn" }] }
下列清單描述 TracePart 物件的欄位:
-
agentId– 代理程式的唯一識別碼。 -
agentName– 代理程式的名稱。 -
collaboratorName– 如果啟用多代理協同合作,則為協作者代理程式的名稱。 -
agentVersion– 代理程式的版本。 -
agentAliasId– 代理程式別名的唯一識別碼。 -
sessionId– 具有代理程式的工作階段其唯一識別碼。 -
trace– 包含代理程式的推理程序和呼叫 API 動作的結果。如需詳細資訊,請參閱下方。 -
callerChain– 發布此追蹤的代理程式與最終使用者之間的呼叫者清單。如果是單一代理程式,此欄位將包含發布追蹤的同一個代理程式其別名 Arn。
如果啟用多代理協同作業,此欄位會包含將最終使用者請求轉送給目前代理程式之所有代理程式的別名 Arn。
在 TracePart 內是映射到 Trace 物件的 trace 欄位。追蹤在主控台和 API 中會顯示為 JSON 物件。主控台中的每個步驟或 API 中的 Trace 會是下列其中一個追蹤:
-
PreProcessingTrace — 追蹤預先處理步驟的輸入和輸出,其中代理程式會對使用者輸入進行情境化和分類,並判斷其是否有效。
-
OrchestrationTrace — 追蹤協同運作步驟的輸入和輸出,代理程式會在其中解譯輸入、調用動作群組,及查詢資料庫。然後,代理程式會傳回輸出,以繼續協同運作或回應使用者。
-
PostProcessingTrace — 追蹤後置處理步驟的輸入與輸出,代理程式會在其中處理協同運作過程的最終輸出,並決定如何將回應傳回給使用者。
-
CustomOrchestrationTrace – 詳細介紹自訂協同運作步驟,代理程式使用這些步驟決定執行動作的順序。。
-
RoutingClassifierTrace – 追蹤路由分類器的輸入和輸出
-
FailureTrace — 追蹤步驟失敗的原因。
-
GuardrailTrace – 追蹤 Guardrail 的動作。
每個追蹤 (FailureTrace 除外) 都包含 ModelInvocationInput 物件。ModelInvocationInput 物件包含在步驟提示範本中設定的組態,以及在此步驟提供給代理程式的提示。如需如何修改提示範本的詳細資訊,請參閱使用 Amazon Bedrock 中的進階提示範本提高代理程式的準確性。ModelInvocationInput 物件的結構如下所示。
{ "traceId": "string", "text": "string", "type": "PRE_PROCESSING | ORCHESTRATION | ROUTING_CLASSIFIER | KNOWLEDGE_BASE_RESPONSE_GENERATION | POST_PROCESSING", "foundationModel":string", "inferenceConfiguration": { "maximumLength": number, "stopSequences": ["string"], "temperature": float, "topK": float, "topP": float }, "promptCreationMode": "DEFAULT | OVERRIDDEN", "parserMode": "DEFAULT | OVERRIDDEN", "overrideLambda": "string" }
下列清單描述 ModelInvocationInput 物件的欄位:
-
traceId– 追蹤的唯一識別符。 -
text— 此步驟中提供給代理程式的提示文字。 -
type— 代理程式處理程序中的目前步驟。 -
foundationModel– 多代理協同作業中協同合作者代理程式的基礎模型。只有在type為ROUTING_CLASSIFIER時,才會填入此欄位。如果用於路由提示的預設模型遭到覆寫,則此欄位會顯示用於路由提示的主管代理程式模型。 -
inferenceConfiguration– 影響回應生成的推論參數。如需詳細資訊,請參閱 使用推論參數影響回應生成。 -
promptCreationMode– 是否已為此步驟覆寫代理程式的預設基本提示範本。如需詳細資訊,請參閱 使用 Amazon Bedrock 中的進階提示範本提高代理程式的準確性。 -
parserMode– 是否已為此步驟覆寫代理程式的預設回應剖析器。如需詳細資訊,請參閱 使用 Amazon Bedrock 中的進階提示範本提高代理程式的準確性。 -
overrideLambda– 如果覆寫預設剖析器,則用剖析器 Lambda 函數的 Amazon Resource Name (ARN) 來剖析回應。如需詳細資訊,請參閱 使用 Amazon Bedrock 中的進階提示範本提高代理程式的準確性。
如需每個追蹤類型的詳細資訊,請參閱下列各節:
{ "modelInvocationInput": { // see above for details } "modelInvocationOutput": { "metadata": { "usage": { "inputToken":: int, "outputToken":: int }, "rawResponse": { "content": "string" } "parsedResponse": { "isValid": boolean, "rationale": "string" }, "traceId": "string" } }
PreProcessingTrace 包含 ModelInvocationInput 物件和 PreProcessingModelInvocationOutput 物件。PreProcessingModelInvocationOutput 包含下列欄位。
-
metadata– 包含有關基礎模型輸出的下列資訊。usage– 包含基礎模型用量的下列資訊。-
inputTokens– 包含來自基礎模型用量之輸入字符的相關資訊。 -
outputTokens– 包含來自基礎模型用量之輸出字符的相關資訊。
-
-
rawResponse– 包含基礎模型的原始輸出。-
content– 基礎模型的原始輸出內容。
-
-
parsedResponse— 包含有關已剖析使用者提示的下列詳細資訊。-
isValid– 指定使用者提示是否有效。 -
rationale— 指定代理程式的推論,以利於進行下一步。
-
-
traceId– 追蹤的唯一識別符。
OrchestrationTrace 包含 ModelInvocationInput 物件、OrchestrationModelInvocationOutput 物件,以及 Rationale、InvocationInput 和 Observation 物件的任何組合。OrchestrationModelInvocationOutput 包含下列欄位。如需 Rationale、InvocationInput 和 Observation 物件的詳細資訊,請選取下列索引標籤。
{ "modelInvocationInput": { // see above for details }, "modelInvocationOutput": { "metadata": { "usage": { "inputToken":: int, "outputToken":: int }, "rawResponse": { "content": "string" }, "rationale": { ... }, "invocationInput": { ... }, "observation": { ... } }
如果 type 是 AGENT_COLLABORATOR,且如果已為主管代理程式啟用路由,則 OrchestrationModelInvocationOutput 將包含下列結構:
routingClassifierModelInvocationOutput: { traceId: "string", rawResponse: "string", routerClassifierParsedResponse: {...} metadata: { inputTokens: "..." outputTokens: "..." } }
{ "modelInvocationInput": { // see above for details } "modelInvocationOutput": { "rawResponse": { "content": "string" }, "metadata": { "usage": { "inputToken": int, "outputToken": int } }, "parsedResponse": { "text": "string" }, "traceId": "string" } }
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_INTERVENED或NONE。 -
inputAssessments– 對使用者輸入的防護機制評估詳細資訊。 -
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" }] } }