

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

# 사용자 수집 피드백 액세스 및 분석
<a name="accessing-and-analyzing-user-collected-feedback"></a>

v3.0.0부터 배포 대시보드는 중첩된 피드백 스택을 배포하여 대시보드와 함께 배포된 텍스트 및 Bedrock 에이전트 사용 사례가 LLM/에이전트가 생성하는 응답에 대한 피드백 수집 기능을 갖도록 합니다. 특히 사용자는 선택적 설명과 함께 긍정적 또는 부정적 피드백을 제공할 수 있습니다. 사용자가 부정적인 피드백을 제공하는 경우 '부정확', '미완료 또는 부족', '유해' 및/또는 '기타'와 같은 부정적인 범주 중 하나를 추가로 선택할 수 있습니다.

사용자가 피드백을 제공하면 피드백은 사용 사례 ID, 연도 및 월로 분할된 S3 버킷에 저장됩니다. 사용 사례 ID는 배포 대시보드에서 찾을 수 있으며 피드백 S3 버킷은 배포 대시보드 스택의 피드백 중첩 스택 출력에서 찾을 수 있습니다.

 **배포 스택 그림 - 피드백 버킷 이름 찾기** 

![피드백 버킷 출력](http://docs.aws.amazon.com/ko_kr/solutions/latest/generative-ai-application-builder-on-aws/images/feedback-bucket-output.png)


사용자 피드백은 최소한의 정보가 포함된 API 요청으로 전송됩니다.

```
{
  "useCaseRecordKey": "a1b2c3d4-e5f6g7h8",
  "conversationId": "12345678-1234-1234-1234-123456789012",
  "messageId": "87654321-4321-4321-4321-210987654321",
  "rephrasedQuery": "What are the key features of the Generative AI Application Builder on AWS?",
  "sourceDocuments": [
    "s3://bucket-name/document1.pdf",
    "s3://bucket-name/document2.pdf"
  ],
  "feedback": "positive",
  "feedbackReason": [
    "Incomplete or insufficient"
  ],
  "comment": "The response was helpful but could include more details about important features."
}
```

그런 다음이 페이로드는 배포 시 사용 사례의 올바른 구성을 `useCaseRecordKey` 식별하는를 사용하여 Lambda에 의해 처리됩니다. 이 구성은 실제 `userInput` 및를 검색하는 데 추가로 사용되는 ConversationTable 이름(모든 대화 및 인적 및 AI 메시지 시퀀스 포함)과 같은 피드백에 대한 특정 세부 정보를 가져오는 데 사용됩니다`llmResponse`. Bedrock Agent 사용 사례의 `agentAliasId` 경우 `agentId` 및 ,이 구성을 사용하는 텍스트 사용 사례의 경우 `modelProvider``bedrockModelId`, 등과 같은 추가 세부 정보도이 피드백 레코드에 연결됩니다. 이 구성에 액세스하는 방법에 대한 자세한 내용은 아래의 [사용자 지정 피드백 매핑 섹션을 참조하세요](#custom-feedback-mappings). 수신되는 각 피드백 요청은 JSON 객체로 저장되며 텍스트 사용 사례의 경우 샘플 피드백 레코드는 다음과 같을 수 있습니다.

```
{
   "useCaseId": "12345678-1234-1234-1234-123456789012",
   "useCaseRecordKey": "c07a2e3b-2f31b1e0",
   "userId": "22345678-1234-1234-1234-123456789012",
   "conversationId": "dd51de5d-5af1-4ec6-91d2-aadf14352109",
   "messageId": "32345678-1234-1234-1234-123456789012",
   "userInput": "What are its key features?",
   "rephrasedQuery": "What are the key features of the Generative AI Application Builder on AWS?",
   "llmResponse": "Generative AI Application Builder on AWS can help you build production ready enterprise chatbots rapidly.",
   "feedback": "negative",
   "feedbackReason": [
      "Incomplete or insufficient"
   ],
   "comment": "The response was helpful but could include more details about important features.",
   "timestamp": "2025-05-22T18:48:08.340Z",
   "feedbackId": "42345678-1234-1234-1234-123456789012",
   "useCaseType": "Text",
   "modelProvider": "Bedrock",
   "bedrockModelId": "amazon.nova-lite-v1:0",
   "ragEnabled": "false"
}
```

또는 Bedrock Agent 사용 사례의 경우 다음과 같습니다.

```
{
   "useCaseId": "12345678-1234-1234-1234-123456789012",
   "useCaseRecordKey": "c07a2e3b-2f31b1e0",
   "userId": "22345678-1234-1234-1234-123456789012",
   "conversationId": "dd51de5d-5af1-4ec6-91d2-aadf14352109",
   "messageId": "32345678-1234-1234-1234-123456789012",
   "userInput": "What are its key features?",
   "llmResponse": "Generative AI Application Builder on AWS can help you build production ready enterprise chatbots rapidly.",
   "feedback": "negative",
   "feedbackReason": [
      "Incomplete or insufficient"
   ],
   "comment": "The response was helpful but could include more details about important features.",
   "timestamp": "2025-05-22T18:48:08.340Z",
   "feedbackId": "42345678-1234-1234-1234-123456789012",
   "useCaseType": "Agent",
   "agentId": "AHFXUJCAK1",
   "agentAliasId": "KSEDKOS0BL"
}
```

그런 다음이 피드백을 추가 처리, 분석 및 모델 재훈련/피드백 루프에 사용할 수 있습니다. 사용자 지정 매핑을 추가하여 피드백 lambda에 저장되는 피드백 레코드를 개선할 수도 있습니다.

## 사용자 지정 피드백 매핑
<a name="custom-feedback-mappings"></a>

배포 대시보드에는 키를 사용하여 배포 대시보드 스택의 스택 출력에서 찾을 수 `LLMConfigTable` 있는가 포함되어 있습니다`LLMConfigTableName`. `LLMConfigTable`에는 배포 대시보드 마법사를 통해 사용 사례를 배포하는 동안 관리자가 선택한 설정에 따라 각 사용 사례에 대한 구성이 포함되어 있습니다. 각 사용 사례 구성은 로 식별됩니다`useCaseRecordKey`. 다음은의 샘플 사용 사례 구성 레코드입니다`LLMConfigTable`.

```
{
   "key": "2dd76cfa-bc1a14da",
   "config": {
      "ConversationMemoryParams": {
        ...
      },
      "FeedbackParams": {
         "CustomMappings": {
            "NumberOfDocs": "$.KnowledgeBaseParams.NumberOfDocs",
            "ScoreThreshold": "$.KnowledgeBaseParams.ScoreThreshold"
         },
         "FeedbackEnabled": true
      },
      "IsInternalUser": "true",
      "KnowledgeBaseParams": {
         "KendraKnowledgeBaseParams": {
            "ExistingKendraIndexId": "d2831033-667f-4539-ab28-e6c7c7c5988b",
            "RoleBasedAccessControlEnabled": false
         },
         "KnowledgeBaseType": "Kendra",
         "NumberOfDocs": 5,
         "ReturnSourceDocs": false,
         "ScoreThreshold": 0.3
      },
      "LlmParams": {
         "BedrockLlmParams": {
            "BedrockInferenceType": "QUICK_START",
            "ModelId": "amazon.nova-lite-v1:0"
         },
         "ModelParams": {},
         "ModelProvider": "Bedrock",
         "PromptParams": {
            ...
         },
         "RAGEnabled": true,
         "Streaming": false,
         "Temperature": 0.1,
         "Verbose": false
      },
      "UseCaseName": "test-rag-usecase",
      "UseCaseType": "Text"
   }
}
```

사용 사례에 대해 피드백이 활성화된 경우이 구성에는 `FeedbackParams` 모든 추가 필드의 JSONPaths를 피드백 S3 버킷에 저장된 피드백 JSON 레코드에 추가할 수 있는 `CustomMappings` 객체가 포함됩니다. 예를 들어 위의 샘플 사용 사례 구성의 경우 CustomMappings에는 `ScoreThreshold` JSONPaths의 루트`config`로 로 시작하는 `CustomMappings` 객체에 `NumberOfDocs` 및 JSONPaths가 추가로 포함되어 있습니다. 이 구성을 사용하면 피드백 S3 버킷에 저장된 각 JSON 레코드가 이미 제공된 필드를 제외하고 이러한 2개의 추가 값을 가져오기 시작합니다.

## 피드백 데이터 분석
<a name="analyzing-feedback-data"></a>

피드백 데이터는 S3에 JSON 객체로 저장됩니다. 다음은이 피드백 데이터에 대한 액세스와 실행 가능성을 높이기 위한 몇 가지 접근 방식입니다.

### AWS Glue 및 Amazon Athena 사용
<a name="using-aws-glue-and-amazon-athena"></a>

 [AWS Glue](https://aws.amazon.com/glue)와 [Amazon Athena](https://aws.amazon.com/athena)는 피드백 데이터를 카탈로그화, 쿼리 및 분석할 수 있는 서버리스 방법을 제공합니다.

AWS Glue를 사용하면 S3 버킷의 데이터를 검사하고, 스키마를 추론하고, 카탈로그에 모든 관련 메타데이터를 기록하는 [AWS Glue 크롤러](https://docs.aws.amazon.com/glue/latest/dg/add-crawler.html)를 생성할 수 있습니다. 그런 다음 Amazon Athena와 같은 서비스를 사용하여 데이터를 쿼리할 수 있습니다.

[AWS Glue 데이터 카탈로그를 사용하여 피드백 S3 버킷을 Amazon Athena와 연결하는 단계는 AWS Athena 설명서를](https://docs.aws.amazon.com/athena/latest/ug/data-sources-glue.html) 참조할 수 있습니다. S3 Amazon Athena AWS Glue 또한 Glue의 보다 강력한 기능 중 일부를 사용하여이 데이터에 대해 ETL(Extract Transform & Load) 작업을 수행하고 이를 분석 또는 모델 재훈련 사용 사례에 적합한 형식으로 변환할 수 있습니다. Glue를 사용하면 특정 피드백 유형으로 레코드를 필터링하고, 누락된 정보를 채우고,이 데이터를 다른 S3 버킷 또는 다른 AWS 데이터 스토어와 같은 다른 스토리지 위치에 로드하는 등의 작업을 수행할 수 있습니다.

**참고**  
사용 사례에 따라 피드백 데이터가 희소할 수 있으므로 비용을 최적화하기 위해 매일 밤이 아닌 주기적으로(예: 매주) 실행되도록 Glue 크롤러를 예약하는 것이 좋습니다.

### 솔루션의 CloudWatch 대시보드 사용
<a name="using-the-solutions-cloudwatch-dashboards"></a>

또한 사용 사례별로 긍정적 및 부정적 피드백, 부정적 피드백 이유 범주 등에 대한 추세를 제공할 수 있는 솔루션과 함께 패키징된 **CloudWatch 대시보드**에 액세스할 수 있습니다. AWS CloudWatch 콘솔의 대시보드에서 사용 사례 이름을 사용하여이 *대시보드*를 찾을 수 있습니다.

 **사용 사례 CloudWatch 대시보드를 보여줍니다.**

![cloudwatch 사용 사례 대시보드](http://docs.aws.amazon.com/ko_kr/solutions/latest/generative-ai-application-builder-on-aws/images/cloudwatch-usecase-dashboard.png)


이 대시보드에서 추가 위젯을 빌드하거나 Amazon Quick Sight 대시보드를 생성할 수도 있습니다.

### 피드백 데이터 분석 모범 사례
<a name="best-practices-for-feedback-data-analysis"></a>
+  S3 버킷에 **데이터 수명 주기 정책을 구현**하여 이전 피드백 데이터를 저렴한 스토리지 계층에 아카이브
+  **각 사용 사례에 대해 별도의 분석을 생성**하여 모델별 개선 기회를 식별합니다.
+  부정적인 **피드백이 허용 수준을 초과할 때 알림을 트리거하는 피드백 임계값 설정** 
+  이해관계자 및 모델 개선 팀과 공유하기 위해 **중요한 인사이트를 주기적으로 내보내기** 