프롬프트 로깅
Kiro 사용자가 Kiro IDE에 입력하는 프롬프트를 관리자가 파악할 수 있도록 돕는 문서입니다.
Kiro 관리자는 사용자가 Kiro IDE에서 주고받는 모든 인라인 제안과 채팅 대화의 로깅을 활성화할 수 있습니다. 이 로그는 감사, 디버깅, 분석, 컴플라이언스 준수에 활용할 수 있습니다.
프롬프트 로그 정보
프롬프트 로깅을 활성화하면 Kiro는 사용자 프롬프트와 Kiro의 응답을 모두 기록합니다. Kiro는 이 로그를 여러분 계정 내의 지정한 Amazon S3 버킷에 저장합니다. 로그 파일 내용에 대한 예시와 설명은 프롬프트 로그 예시를 참고하세요.
프롬프트 로깅 기능 자체에는 요금이 부과되지 않으며, 로그를 보관하는 Amazon S3 버킷의 스토리지 비용과 버킷 암호화에 사용하는 선택적 KMS 키에 대한 소액의 요금만 발생합니다.
프롬프트 로깅 활성화
사전 요구사항
- 프롬프트 로그를 보관할 Amazon S3 버킷을 생성합니다. 이 버킷은 다음 조건을 충족해야 합니다.
{
"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 사용 설명서의 암호화로 데이터 보호를 참고하세요.
프롬프트 로깅 활성화하기
- 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가 생성하는 프롬프트 로그의 예시를 제공합니다.
각 예시 다음에는 로그 파일의 필드를 설명하는 표가 이어집니다.
인라인 제안 로그 예시
다음 예시는 사용자가 인라인 제안을 수락했을 때 생성되는 로그 파일을 보여줍니다.
{
"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와 채팅할 때 생성되는 로그 파일을 보여줍니다.
{
"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 | 응답의 발화(utterance) ID를 나타냅니다. 발화 ID는 대화나 데이터 세트 내에서 하나의 프롬프트를 다른 프롬프트와 구분하는 레이블입니다. |
codeReferenceEvents | 응답에 포함된 코드 참조 링크를 설명합니다. |
supplementaryWebLinksEvent | 응답 끝에 사용자에게 표시된 링크를 나타냅니다. |
requestId | 해당 이벤트를 고유하게 식별하는 응답의 ID입니다. |