콘텐츠로 이동

사용자 프롬프트 로깅

Kiro 관리자는 사용자가 Kiro IDE에서 수행하는 모든 인라인 제안 및 채팅 대화의 로깅을 활성화할 수 있습니다. 이러한 로그는 감사, 디버깅, 분석 및 규정 준수 보장에 도움이 될 수 있습니다.

프롬프트 로그 정보

프롬프트 로깅이 활성화되면 Kiro는 사용자 프롬프트와 Kiro의 응답을 모두 기록합니다. Kiro는 자체 계정의 선택한 Amazon S3 버킷에 로그를 저장합니다. 로그 파일 내용의 예제 및 설명은 프롬프트 로그 예제를 참조하십시오.

프롬프트 로깅 기능에 대한 요금은 로그를 보관하는 데 사용되는 Amazon S3 버킷의 스토리지 비용과 버킷을 암호화하는 데 사용되는 선택적 KMS 키에 대한 소액의 수수료 외에는 없습니다.

프롬프트 로깅 활성화

전제 조건

  • 프롬프트 로그를 보관할 Amazon S3 버킷을 생성합니다. 버킷은 다음을 충족해야 합니다:

    • Kiro 프로필이 설치된 AWS 리전에 있어야 합니다. 이 프로필은 Kiro Pro에 사용자를 처음 구독할 때 설치되었습니다. 이 프로필 및 지원되는 리전에 대한 자세한 내용은 개념지원되는 리전을 참조하십시오.

    • 사용자가 구독된 AWS 계정에 있어야 합니다.

    • 다음과 같은 버킷 정책이 있어야 합니다. bucketName, Region, accountIdprefix를 자신의 정보로 교체하십시오.

json

{ "Version": "2012-10-17", "Statement": [ { "Sid": "KiroLogsWrite", "Effect": "Allow", "Principal": { "Service": "q.amazonaws.com" }, "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::bucketName/prefix/*" ], "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333" }, "ArnLike": { "aws:SourceArn": "arn:aws:codewhisperer:us-east-1:111122223333:*" } } } ] }

Amazon S3 버킷의 데이터를 보호하는 방법에 대해 알아보려면 Amazon Simple Storage Service User Guide암호화로 데이터 보호를 참조하십시오.

프롬프트 로깅을 활성화하려면

  1. Kiro 콘솔을 엽니다.
  2. Settings를 선택합니다.
  3. Kiro Settings > Logging을 찾습니다.
  4. Log Kiro prompts with metadata 스위치를 토글합니다.
  5. Amazon S3 location에서 로그를 받는 데 사용할 Amazon S3 URI를 입력합니다. 예: s3://amzn-s3-demo-bucket/kiro-prompt-logs/

프롬프트 로그 예제

이 섹션에서는 Kiro에서 생성된 프롬프트 로그의 예를 제공합니다.

각 예제 다음에는 로그 파일의 필드를 설명하는 표가 있습니다.

인라인 제안 로그 예제

다음 예제는 사용자가 인라인 제안을 수락할 때 생성되는 로그 파일을 보여줍니다.

json

{ "records": [ { "generateCompletionsEventRequest": { "leftContext": "import * cdk from 'aws-cdk-lib';\r\nimport * s3 from 'aws-cdk-lib/aws-s3';\r\nimport { Stack, StackProps } from 'constructs';\r\nexport class MyStack extends Stack {\r\n constructor(scope: cdk.App, id: string, props?: StackProps) {\r\n super(scope, id, props);\r\n\r\n new s3.Bucket(this, 'XXXXXXXX', {\r\n versioned: true\r\n });\r\n }\r\n ", "rightContext": "", "fileName": "cdk-modified.ts", "customizationArn": null, "userId": "d-92675051d5.b8f1f340-9081-70ad-5fc5-0f37151937a6", "timeStamp": "2025-01-06T15:09:16.412719Z" }, "generateCompletionsEventResponse": { "completions": ["synth() {\n return cdk.App.prototype.synth.apply(this, arguments);\n }"], "requestId": "797c70ee-abc9-4cc7-a148-b9df17f6ce48" } } ] }

다음 표는 인라인 제안에 대한 로그 파일의 필드를 설명합니다.

필드 이름 설명
records 인라인 완성이라고도 하는 인라인 제안 세트를 포함하는 최상위 필드입니다.
generateCompletionsEventRequest 인라인 코드 제안 요청을 설명합니다. 요청은 사용자를 대신하여 Kiro가 수행합니다.
leftContext Kiro가 인라인 제안을 생성하기 위해 컨텍스트로 사용하는 커서 앞의 코드를 나타냅니다.
rightContext Kiro가 인라인 제안을 생성하기 위해 컨텍스트로 사용하는 커서 뒤의 코드를 나타냅니다.
fileName 인라인 제안이 요청된 파일의 이름을 나타냅니다.
userId 인라인 제안을 요청한 사용자의 사용자 ID를 나타냅니다.
timeStamp 인라인 제안이 요청된 날짜와 시간을 나타냅니다. 타임스탬프는 협정 세계시(UTC)입니다.
generateCompletionsEventResponse Kiro가 생성한 인라인 제안을 설명합니다.
completions Kiro가 제공하고 사용자가 수락한 인라인 제안을 나타냅니다.
requestId 이벤트를 고유하게 식별하는 인라인 요청의 ID입니다.

채팅 로그 예제

다음 예제는 사용자가 IDE에서 Kiro를 사용하여 채팅할 때 생성되는 로그 파일을 보여줍니다.

json

{ "records": [ { "generateAssistantResponseEventRequest": { "prompt": "Can you explain how to set up object-level access control in an S3 bucket using AWS CDK?", "chatTriggerType": "MANUAL", "customizationArn": null, "userId": "d-92675051d5.b8f1f340-9081-70ad-5fc5-0f37151937a6", "timeStamp": "2025-01-06T15:05:56.313070Z" }, "generateAssistantResponseEventResponse": { "assistantResponse": "I'll explain how to set up object-level access control for an S3 bucket using AWS CDK...", "followupPrompts": "How can you implement multi-factor authentication for S3 bucket access using AWS CDK?", "messageMetadata": { "conversationId": "491bd3cd-d70d-40c0-a452-5ef3f0878422", "utteranceId": null }, "codeReferenceEvents": [], "supplementaryWebLinksEvent": [ { "uri": "https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_Scenario_ManageACLs_section.html", "title": "[1] Manage access control lists (ACLs) for Amazon S3 buckets using an AWS SDK", "snippet": "The following code example shows how to manage access control lists (ACLs) for Amazon S3 buckets..." } ], "requestId": "dad38fc0-815c-45f7-970a-db916cb7f131" } } ] }

필드 이름 설명
records 프롬프트 및 응답 세트를 포함하는 최상위 필드입니다.
generateAssistantResponseEventRequest 사용자가 IDE의 채팅 창에 입력한 프롬프트를 설명합니다.
prompt 사용자가 채팅 창에 입력한 프롬프트를 나타냅니다.
chatTriggerType MANUAL은 사용자가 채팅 창에 프롬프트를 입력했거나 채팅 창의 제안된 질문 중 하나를 클릭했음을 나타냅니다. INLINE_CHAT은 사용자가 메인 코딩 창의 작은 입력 화면에 프롬프트를 입력했음을 나타냅니다.
userId 프롬프트를 입력한 사용자의 사용자 ID를 나타냅니다.
timeStamp 사용자가 프롬프트를 입력한 날짜와 시간을 나타냅니다. 타임스탬프는 협정 세계시(UTC)입니다.
generateAssistantResponseEventResponse Kiro가 생성한 응답을 설명합니다.
assistantResponse Kiro가 사용자의 프롬프트에 제공한 응답을 나타냅니다.
followupPrompts 응답 끝에 사용자에게 표시된 후속 예제 프롬프트를 나타냅니다.
messageMetadata 응답과 관련된 메타데이터를 설명합니다.
conversationId 응답의 대화 ID를 나타냅니다. 대화 ID는 채팅 세션의 메시지를 그룹화합니다.
utteranceId 응답의 발화 ID를 나타냅니다. 발화 ID는 대화 또는 데이터 세트 내에서 하나의 프롬프트를 다른 프롬프트와 구별하는 레이블입니다.
codeReferenceEvents 응답에 포함된 코드 참조에 대한 링크를 설명합니다.
supplementaryWebLinksEvent 응답 끝에 사용자에게 표시된 링크를 나타냅니다.
requestId 이벤트를 고유하게 식별하는 응답의 ID입니다.