ユーザーが収集したフィードバックへのアクセスと分析
v3.0.0 以降、デプロイダッシュボードはネストされたフィードバックスタックをデプロイします。これにより、ダッシュボードでデプロイされた Text および Bedrock エージェントユースケースは、LLM/エージェントが生成するレスポンスのフィードバック収集機能を利用できるようになります。特に、ユーザーはオプションのコメントとともに肯定的または否定的なフィードバックを提供できます。ユーザーが否定的なフィードバックを提供する場合、「不正確」、「不完全または不十分」、「有害」、および/または「その他」のいずれかの否定的なカテゴリをさらに選択できます。
ユーザーがフィードバックを提供すると、フィードバックはユースケース ID、年、月ごとにパーティション化された S3 バケットに保存されます。ユースケース ID はデプロイダッシュボードで確認でき、フィードバック S3 バケットはデプロイダッシュボードスタックのフィードバックネストスタックの出力で確認できます。
デプロイスタックの図解 - フィードバックバケット名の検索
ユーザーフィードバックは、最小限の情報を含む 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 によって処理されます。この設定は、ConversationTable の名前 (すべての会話と人間と AI メッセージシーケンスを含む) などのフィードバックの具体的な詳細を取得するために使用され、さらに実際の userInput と llmResponse を取得するために使用されます。このフィードバックレコードには、Bedrock エージェントユースケースの agentId や agentAliasId、この設定を使用する Text ユースケースの modelProvider、bedrockModelId などの追加の詳細もアタッチされます。この設定にアクセスする方法の詳細については、以下の「カスタムフィードバックマッピング」セクションを参照してください。各受信フィードバックリクエストは JSON オブジェクトとして保存され、Text ユースケースのサンプルフィードバックレコードは次のようになります。
{ "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 エージェントユースケースの場合は次のようになります。
{ "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 に保存されるフィードバックレコードを強化することもできます。
カスタムフィードバックマッピング
デプロイダッシュボードには、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 オブジェクトが含まれます。このオブジェクトには、フィードバック S3 バケットに保存されるフィードバック JSON レコードに追加されるすべての追加フィールドの JSONPath を指定できる CustomMappings オブジェクトが含まれます。例えば、上記のサンプルユースケース設定の場合、CustomMappings には、JSONPath のルートとして config で始まる CustomMappings オブジェクトに NumberOfDocs と ScoreThreshold JSONPath が追加で含まれています。この設定では、フィードバック S3 バケットに保存されている各 JSON レコードは、既に提供されているフィールドとは別に、これら 2 つの追加値の取得を開始します。
フィードバックデータの分析
フィードバックデータは JSON オブジェクトとして S3 に保存されます。このフィードバックデータをよりアクセスしやすく実用的なものにするためのアプローチをいくつか紹介します。
AWS Glue と Amazon Athena を使用する
AWS Glue
AWS Glue を使用すると、S3 バケット内のデータを検査してスキーマを推測し、関連するすべてのメタデータをカタログに記録する AWS Glue クローラーを作成できます。その後、Amazon Athena などのサービスを使用してデータをクエリできます。
AWS Glue データカタログを使用してフィードバック S3 バケットを Amazon Athena に接続する手順については、「AWS Amazon Athena ドキュメント」を参照してください。Glue のより強力な機能の一部を使用して、このデータに対して抽出、変換、ロード (ETL) ジョブを実行し、分析やモデルの再トレーニングのユースケースに適した形式に変換することもできます。Glue を使用すると、特定のフィードバックタイプのレコードのフィルタリング、不足している情報の入力などの操作を実行できます。また、このデータを別の S3 バケットや別の AWS データストアなどの別のストレージロケーションにロードすることもできます。
注記
ユースケースによっては、フィードバックデータがまばらである可能性があるため、コストを最適化するために、Glue クローラーを毎晩ではなく定期的に (例えば、毎週) 実行するようにスケジュールすることを検討してください。
ソリューションの CloudWatch ダッシュボードの使用
また、ソリューションにパッケージ化された CloudWatch ダッシュボードにアクセスして、肯定的なフィードバックと否定的なフィードバックの傾向、否定的なフィードバックの理由のカテゴリなどをユースケースごとに確認することもできます。このダッシュボードは、AWS CloudWatch コンソール内の [ダッシュボード] でユースケース名を使用して見つけることができます。
CloudWatch ダッシュボードのユースケースの図解
このダッシュボードに追加のウィジェットを構築したり、Amazon Quick Sight ダッシュボードを作成したりすることもできます。
フィードバックデータ分析のベストプラクティス
-
S3 バケットにデータライフサイクルポリシーを実装して、古いフィードバックデータを低コストのストレージ階層にアーカイブする
-
ユースケースごとに個別の分析を作成して、モデル固有の改善の機会を特定する
-
否定的なフィードバックが許容レベルを超えたときにアラートをトリガーするフィードバックしきい値を設定する
-
ステークホルダーやモデル改善チームと共有するための重要なインサイトを定期的にエクスポートする