추적을 사용하여 에이전트의 step-by-step 추론 프로세스 추적 - Amazon Bedrock

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

추적을 사용하여 에이전트의 step-by-step 추론 프로세스 추적

Amazon Bedrock 에이전트의 각 응답에는 에이전트가 오케스트레이션하는 단계를 자세히 설명하는 트레이스가 수반됩니다. 추적은 대화의 해당 시점에서 응답으로 이어지는 에이전트의 추론 프로세스를 추적하는 데 도움이 됩니다.

추적을 사용하면 사용자 입력부터 반환되는 응답까지 에이전트의 경로를 추적할 수 있습니다. 추적은 에이전트가 호출하는 작업 그룹에 대한 입력과 사용자에게 응답하기 위해 쿼리하는 지식 기반에 대한 정보를 제공합니다. 또한 추적은 작업 그룹 및 지식 기반이 반환하는 출력에 대한 정보를 제공합니다. 에이전트가 수행하는 조치 또는 지식 기반에 적용하는 쿼리를 결정하는 데 사용하는 추론을 볼 수 있습니다. 추적의 어떤 단계가 실패할 경우, 추적에서는 실패 사유를 반환합니다. 추적의 세부 정보를 사용하여 에이전트 문제를 해결합니다. 에이전트에 문제가 있거나 예기치 않은 동작이 발생하는 단계를 식별할 수 있습니다. 그런 다음 이 정보를 사용하여 에이전트의 동작을 개선할 수 있는 방법을 고려할 수 있습니다.

트레이스의 구조

추적은 콘솔과 모두에서 JSON 객체로 표시됩니다API. 콘솔의 각 단계 또는 Trace 의 는 다음 추적 중 하나일 API 수 있습니다.

  • PreProcessingTrace - 에이전트가 사용자 입력을 컨텍스트화하고 분류하여 유효한지 확인하는 사전 처리 단계의 입력 및 출력을 추적합니다.

  • OrchestrationTrace - 에이전트가 입력을 해석하고 작업 그룹을 호출하며 지식 기반을 쿼리하는 오케스트레이션 단계의 입력 및 출력을 추적합니다. 그런 다음 에이전트는 오케스트레이션을 계속하거나 사용자에게 응답하기 위해 출력을 반환합니다.

  • PostProcessingTrace - 에이전트가 오케스트레이션의 최종 출력을 처리하고 사용자에게 응답을 반환하는 방법을 결정하는 사후 처리 단계의 입력 및 출력을 추적합니다.

  • FailureTrace - 단계가 실패한 이유를 추적합니다.

  • GuardrailTrace - Guardrail의 작업을 추적합니다.

각 트레이스( 제외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" } }

는 로 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

이론적 근거 객체에는 사용자 입력이 지정된 에이전트의 추론이 포함되어 있습니다. 구조는 다음과 같습니다.

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

다음 목록은 이론적 근거 객체의 필드를 설명합니다.

  • 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

관찰 객체에는 작업 그룹 또는 지식 기반 또는 사용자에 대한 응답의 결과 또는 출력이 포함됩니다. 구조는 다음과 같습니다.

{ "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 JSON- 작업 그룹에서 호출한 API 작업에서 반환한 형식이 지정된 문자열을 포함합니다. typeACTION_GROUP이면 표시됩니다. 자세한 내용은 정의 OpenAPI Amazon Bedrock에서 에이전트의 작업 그룹에 대한 스키마 단원을 참조하십시오.

  • knowledgeBaseLookupOutput - 데이터 소스의 Amazon S3 위치와 함께 프롬프트에 응답하는 것과 관련된 지식 기반에서 검색된 텍스트를 포함합니다. typeKNOWLEDGE_BASE이면 표시됩니다. 자세한 내용은 지식 베이스로 데이터 검색 및 AI 응답 생성 단원을 참조하십시오. 의 목록에 있는 각 객체에는 다음 필드가 retrievedReferences 포함됩니다.

    • content - 지식 기반 쿼리에서 반환되는 지식 기반의 text가 포함됩니다.

    • location - 반환된 텍스트를 찾은 데이터 소스URI의 Amazon S3를 포함합니다.

  • repromptResponse - typeREPROMPT이면 표시됩니다. 에이전트가 프롬프트를 다시 요청해야 하는 이유에 대한 source와 함께 다시 프롬프트를 요청하는 text가 포함됩니다.

  • finalResponse - typeASK_USER 또는 FINISH이면 표시됩니다. 사용자에게 자세한 정보를 요청하거나 사용자에 대한 응답인 text가 들어 있습니다.

{ "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 - 사용자 입력에 대한 Guardrail 평가의 세부 정보입니다.

  • outputAssessments - 응답에 대한 Guardrail 평가의 세부 정보입니다.

GuardrailAssessment 객체 및 Guardrail 테스트에 대한 자세한 내용은 섹션을 참조하세요가드레일 테스트.

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