사용자 프롬프트 로깅¶
Kiro 관리자는 사용자가 Kiro IDE에서 수행하는 모든 인라인 제안 및 채팅 대화의 로깅을 활성화할 수 있습니다. 이러한 로그는 감사, 디버깅, 분석 및 규정 준수 보장에 도움이 될 수 있습니다.
프롬프트 로그 정보¶
프롬프트 로깅이 활성화되면 Kiro는 사용자 프롬프트와 Kiro의 응답을 모두 기록합니다. Kiro는 자체 계정의 선택한 Amazon S3 버킷에 로그를 저장합니다. 로그 파일 내용의 예제 및 설명은 프롬프트 로그 예제를 참조하십시오.
프롬프트 로깅 기능에 대한 요금은 로그를 보관하는 데 사용되는 Amazon S3 버킷의 스토리지 비용과 버킷을 암호화하는 데 사용되는 선택적 KMS 키에 대한 소액의 수수료 외에는 없습니다.
프롬프트 로깅 활성화¶
전제 조건¶
-
프롬프트 로그를 보관할 Amazon S3 버킷을 생성합니다. 버킷은 다음을 충족해야 합니다:
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의 암호화로 데이터 보호를 참조하십시오.
프롬프트 로깅을 활성화하려면¶
- Kiro 콘솔을 엽니다.
- Settings를 선택합니다.
- Kiro Settings > Logging을 찾습니다.
- Log Kiro prompts with metadata 스위치를 토글합니다.
- 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입니다. |