LLM 로깅
GitLab v19.1GitLab Rails Monolith 인스턴스의 표준 로깅 외에도, 대규모 언어 모델(LLM) 기반 기능을 위한 특화된 로깅이 제공됩니다. 관련 문서는 로깅된 이벤트를 참조하세요. LLM 특화 로깅을 구현하려면 Gitlab::Llm::Logger 클래스를 사용하세요.
GitLab Rails Monolith 인스턴스의 표준 로깅 외에도, 대규모 언어 모델(LLM) 기반 기능을 위한 특화된 로깅이 제공됩니다.
로깅된 이벤트#
관련 문서는 로깅된 이벤트를 참조하세요.
구현#
Logger 클래스#
LLM 특화 로깅을 구현하려면 Gitlab::Llm::Logger 클래스를 사용하세요.
개인 정보 보호 고려사항#
중요: 사용자 입력 및 사용자 데이터가 포함된 전체 프롬프트는 명시적으로 허용된 경우를 제외하고 로깅해서는 안 됩니다.
기능 플래그#
GitLab.com의 경우#
expanded_ai_logging이라는 기능 플래그가 민감한 데이터의 로깅을 제어합니다.
GitLab Self-Managed 인스턴스의 경우#
인스턴스 설정 ::Ai::Setting.instance.enabled_instance_verbose_ai_logs가 민감한 데이터의 로깅을 제어합니다.
기능 플래그 또는 인스턴스 설정 상태에 따른 조건부 로깅에는 conditional_info 헬퍼 메서드를 사용하세요:
-
현재 사용자에 대해 기능 플래그가 활성화되어 있거나 인스턴스 설정이 활성화된 경우, 해당 설정은
info레벨로 정보를 로깅합니다(로그는 Kibana에서 확인 가능). -
현재 사용자에 대해 기능 플래그가 비활성화되어 있거나 인스턴스 설정이 비활성화된 경우, 해당 설정은
info레벨로 정보를 로깅하지만 선택적 파라미터는 제외됩니다(로그는 Kibana에서 확인 가능하나, 필수 필드만 포함됨).
모범 사례#
LLM 기능에 대한 로깅을 구현할 때 다음 사항을 고려하세요:
-
디버깅 목적으로 중요한 정보를 식별합니다.
-
적절한 인가 없이 민감한 사용자 데이터를 로깅하지 않음으로써 개인 정보 보호 요건을 준수합니다.
-
expanded_ai_logging기능 플래그를 준수하기 위해conditional_info헬퍼 메서드를 사용합니다. -
트러블슈팅과 분석에 유의미한 인사이트를 제공할 수 있도록 로그를 구조화합니다.
사용 예시#
# 로깅을 처리하는 concern 포함
include Gitlab::Llm::Concerns::Logger
# 잠재적으로 민감한 정보 로깅
log_conditional_info(user, message:"User prompt processed", event_name: 'ai_event', ai_component: 'abstraction_layer', prompt: sanitized_prompt)
# 애플리케이션 오류 정보 로깅
log_error(user, message: "System application error", event_name: 'ai_event', ai_component: 'abstraction_layer', error_message: sanitized_error_message)
중요: 데이터 보존 정책을 숙지하고, 사용자 입력 및 LLM이 생성한 출력을 로깅하지 않도록 반드시 확인하세요.