기록된 이벤트

GitLab Rails Monolith 인스턴스의 표준 로깅 외에도, 대형 언어 모델(LLM) 기반 기능에 대한 전문 로깅이 제공됩니다.

기록된 이벤트

유효성 검사로 인한 서비스 반환

  • 설명: 사용자가 작업을 수행할 수 없음
  • 클래스: Llm::BaseService
  • Ai_event_name: permission_denied
  • 레벨: info
  • Arguments:
    • 없음
  • 시스템의 일부: abstraction_layer
  • 확장된 로깅?: 아니요
  • Rails: 예
  • Sidekiq: 아니요

CompletionWorker를 예약

  • 설명: sidekiq에서 완료 워커 예약
  • 클래스: Llm::BaseService
  • Ai_event_name: worker_enqueued
  • 레벨: info
  • Arguments:
    • user_id: message.user.id
    • resource_id: message.resource&.id
    • resource_class: message.resource&.class&.name
    • request_id: message.request_id
    • action_name: message.ai_action
    • options: job_options
  • 시스템의 일부: abstraction_layer
  • 확장된 로깅?: 예
  • Rails: 예
  • Sidekiq: 아니요

중단: 리소스 누락

  • 설명: 슬래시 명령에 리소스가 없는 경우
  • 클래스: Llm::ChatService
  • Ai_event_name: missing_resource
  • 레벨: info
  • Arguments:
    • 없음
  • 시스템의 일부: duo_chat
  • 확장된 로깅?: 아니요
  • Rails: 예
  • Sidekiq: 아니요

CompletionService 수행

  • 설명: 완료 수행
  • 클래스: Llm::Internal::CompletionService
  • Ai_event_name: completion_service_performed
  • 레벨: info
  • Arguments:
    • user_id: prompt_message.user.to_gid
    • resource_id: prompt_message.resource&.to_gid
    • action_name: prompt_message.ai_action
    • request_id: prompt_message.request_id
    • client_subscription_id: prompt_message.client_subscription_id
    • completion_service_name: completion_class_name
  • 시스템의 일부: abstraction_layer
  • 확장된 로깅?: 예
  • Rails: 아니요
  • Sidekiq: 예

LLM 응답에서 답변

  • 설명: 응답에서 답변 가져오기
  • 클래스: Gitlab::Llm::Chain::Answer
  • Ai_event_name: answer_received
  • 레벨: info
  • Arguments:
    • llm_answer_content: content
  • 시스템의 일부: duo_chat
  • 확장된 로깅?: 예
  • Rails: 아니요
  • Sidekiq: 예

최종 답변

  • 설명: 응답에서 최종 답변 가져오기
  • 클래스: Gitlab::Llm::Chain::Answer
  • Ai_event_name: final_answer_received
  • 레벨: info
  • Arguments:
    • llm_answer_content: content
  • 시스템의 일부: duo_chat
  • 확장된 로깅?: 예
  • Rails: 아니요
  • Sidekiq: 예

기본 최종 답변

  • 설명: 기본 최종 답변: 죄송합니다. 시간 내에 응답하지 못했습니다. 더 구체적인 요청을 시도하거나 /clear를 입력하여 새 채팅을 시작하세요.
  • 클래스: Gitlab::Llm::Chain::Answer
  • Ai_event_name: default_final_answer_received
  • 레벨: info
  • Arguments:
    • error_code: “A6000”
  • 시스템의 일부: duo_chat
  • 확장된 로깅?: 예
  • Rails: 아니요
  • Sidekiq: 예

오류 메시지/ “오류”

  • 설명: 오류로 응답할 때
  • 클래스: Gitlab::Llm::Chain::Answer
  • Ai_event_name: error_returned
  • 레벨: error
  • Arguments:
    • error: content
    • error_code: error_code
    • source: source
  • 시스템의 일부: duo_chat
  • 확장된 로깅?: 아니요
  • Rails: 아니요
  • Sidekiq: 예

AI 게이트웨이로부터 응답 수신

  • 설명: AIGW에서 응답을 반환했을 때
  • 클래스: Gitlab::Llm::AiGateway::Client
  • Ai_event_name: response_received
  • 레벨: info
  • Arguments:
    • response_from_llm: response_body
  • 시스템의 일부: abstraction_layer
  • 확장된 로깅?: 예
  • Rails: 아니요
  • Sidekiq: 예

AI 게이트웨이로부터 오류 수신

  • 설명: 스트리밍 명령에 대한 AIGW에서 오류가 반환된 경우
  • 클래스: Gitlab::Llm::AiGateway::Client
  • Ai_event_name: error_response_received
  • 레벨: error
  • Arguments:
    • response_from_llm: parsed_response.dig(‘detail’
    • 0
    • ‘msg’)
  • 시스템의 일부: abstraction_layer
  • 확장된 로깅?: 아니요
  • Rails: 아니요
  • Sidekiq: 예

AI 게이트웨이에 요청 수행

  • 설명: AI 게이트웨이에 요청을 수행하기 전
  • 클래스: Gitlab::Llm::AiGateway::Client
  • Ai_event_name: performing_request
  • 레벨: info
  • Arguments:
    • url: url
    • body: body
    • timeout: timeout
    • stream: stream
  • 시스템의 일부: abstraction_layer
  • 확장된 로깅?: 예
  • Rails: 아니요
  • Sidekiq: 예

사용자 액세스 토큰 생성

  • 설명: AIGW에서 단기 토큰 생성
  • 클래스: Gitlab::Llm::AiGateway::CodeSuggestionsClient
  • Ai_event_name: user_token_created
  • 레벨: info
  • Arguments:
    • 없음
  • 시스템의 일부: code suggestions
  • 확장된 로깅?: 아니요
  • Rails: 예
  • Sidekiq: 아니요

Anthropic에서 응답 수신

  • 설명: 응답 수신
  • 클래스: Gitlab::Llm::Anthropic::Client
  • Ai_event_name: response_received
  • 레벨: info
  • Arguments:
    • ai_request_type: request_type
    • unit_primitive: unit_primitive
  • 시스템의 일부: abstraction_layer
  • 확장된 로깅?: 아니요
  • Rails: 아니요
  • Sidekiq: 예

응답 내용

  • 설명: 응답의 내용
  • 클래스: Gitlab::Llm::Anthropic::Client
  • Ai_event_name: response_received
  • 레벨: info
  • Arguments:
    • ai_request_type: request_type
    • unit_primitive: unit_primitive
    • response_from_llm: response_body
  • 시스템의 일부: abstraction_layer
  • 확장된 로깅?: 예
  • Rails: 아니요
  • Sidekiq: 예

Anthropic에 대한 요청 수행

  • 설명: 완료 요청 수행
  • 클래스: Gitlab::Llm::Anthropic::Client
  • Ai_event_name: performing_request
  • 레벨: info
  • Arguments:
    • options: options
    • ai_request_type: request_type
    • unit_primitive: unit_primitive
  • 시스템의 일부: abstraction_layer
  • 확장된 로깅?: no
  • Rails: no
  • Sidekiq: yes

AI Gateway에서 문서 검색

  • 설명: 문서 검색 요청 수행
  • 클래스: Gitlab::Llm::AiGateway::DocsClient
  • Ai_event_name: performing_request
  • 레벨: info
  • Arguments:
    • options: options
  • 시스템의 일부: duo_chat
  • 확장된 로깅?: no
  • Rails: no
  • Sidekiq: yes

AI Gateway에서 검색된 문서 콘텐츠

  • 설명: AIGW로부터 문서 응답 확인
  • 클래스: Gitlab::Llm::AiGateway::DocsClient
  • Ai_event_name: response_received
  • 레벨: info
  • Arguments:
    • response_from_llm: response
  • 시스템의 일부: duo_chat
  • 확장된 로깅?: yes
  • Rails: no
  • Sidekiq: yes

질문 분류 중 발생한 Json 파싱 오류

  • 설명: Json 파싱 불가시 로깅
  • 클래스: Gitlab::Llm::Anthropic::Completions::CategorizeQuestions
  • Ai_event_name: error
  • 레벨: error
  • Arguments:
    • none
  • 시스템의 일부: duo_chat
  • 확장된 로깅?: no
  • Rails: no
  • Sidekiq: yes

정의된 카테고리를 포함하지 않는 응답 수신

  • 설명: 정의된 카테고리 중 하나를 포함하지 않는 응답 로깅
  • 클래스: Gitlab::Llm::Anthropic::Completions::CategorizeQuestions
  • Ai_event_name: error
  • 레벨: error
  • Arguments:
    • none
  • 시스템의 일부: duo_chat
  • 확장된 로깅?: no
  • Rails: no
  • Sidekiq: yes

질문 분류 중 에러 응답 수신

  • 설명: 반환된 응답이 성공적이지 않을 때 로깅
  • 클래스: Gitlab::Llm::Anthropic::Completions::CategorizeQuestions
  • Ai_event_name: error
  • 레벨: error
  • Arguments:
    • error_type: response.dig(‘error’, ‘type’)
  • 시스템의 일부: duo_chat
  • 확장된 로깅?: no
  • Rails: no
  • Sidekiq: yes

도구 선택됨

  • 설명: 채팅에서 선택된 도구에 대한 정보
  • 클래스: Gitlab::Llm::Chain::Agents::ZeroShot::Executor
  • Ai_event_name: picked_tool
  • 레벨: info
  • Arguments:
    • duo_chat_tool: tool_class.to_s
  • 시스템의 일부: duo_chat
  • 확장된 로깅?: no
  • Rails: no
  • Sidekiq: yes

AI 클라이언트에 요청 수행

  • 설명: 채팅을 위한 요청 수행
  • 클래스: Gitlab::Llm::Chain::Requests::AiGateway
  • Ai_event_name: response_received
  • 레벨: info
  • Arguments:
    • prompt: prompt[:prompt]
    • response_from_llm: response
    • unit_primitive: unit_primitive
  • 시스템의 일부: duo_chat
  • 확장된 로깅?: yes
  • Rails: no
  • Sidekiq: yes

스트리밍 오류

  • 설명: 스트리밍 시 오류가 반환될 때
  • 클래스: Gitlab::Llm::Chain::Requests::Anthropic
  • Ai_event_name: error_response_received
  • 레벨: error
  • Arguments:
    • error: data&.dig(“error”)
  • 시스템의 일부: abstraction_layer
  • 확장된 로깅?: no
  • Rails: no
  • Sidekiq: yes

문서화 질문 콘텐츠에 대한 최종 결과 수신

  • 설명: 문서화 질문 - 내용에 대한 결과 수신
  • 클래스: Gitlab::Llm::Chain::Tools::EmbeddingsCompletion
  • Ai_event_name: response_received
  • 레벨: info
  • Arguments:
    • prompt: final_prompt[:prompt]
    • response_from_llm: final_prompt_result
  • 시스템의 일부: duo_chat
  • 확장된 로깅?: yes
  • Rails: no
  • Sidekiq: yes

스트리밍 명령어에서 AIGW로부터 반환된 오류

  • 설명: 문서 질문에서 스트리밍 명령어에 대한 AIGW로부터 오류가 반환될 때
  • 클래스: Gitlab::Llm::Chain::Tools::EmbeddingsCompletion
  • Ai_event_name: error_response_received
  • 레벨: error
  • Arguments:
    • error: error.message
  • 시스템의 일부: duo_chat
  • 확장된 로깅?: no
  • Rails: no
  • Sidekiq: yes

이미 도구로부터 응답을 받음

  • 설명: 도구가 이미 선택된 경우 (콘텐츠: #{self.class::NAME} 도구로부터 이미 답변을 받았습니다. 주의깊게 읽어보세요.)
  • 클래스: Gitlab::Llm::Chain::Tools::Tool
  • Ai_event_name: incorrect_response_received
  • 레벨: info
  • Arguments:
    • error_message: content
  • 시스템의 일부: duo_chat
  • 확장된 로깅?: yes
  • Rails: no
  • Sidekiq: yes

도구 순환 감지됨

  • 설명: 도구가 다시 선택된 경우
  • 클래스: Gitlab::Llm::Chain::Tools::Tool
  • Ai_event_name: incorrect_response_received
  • 레벨: info
  • Arguments:
    • picked_tool: cls.class.to_s
  • 시스템의 일부: duo_chat
  • 확장된 로깅?: no
  • Rails: no
  • Sidekiq: yes

TanukiBot 호출 중

  • 설명: 문서화 요청 수행
  • 클래스: Gitlab::Llm::Chain::Tools::GitlabDocumentation::Executor
  • Ai_event_name: documentation_question_initial_request
  • 레벨: info
  • Arguments:
    • none
  • 시스템의 일부: duo_chat
  • 확장된 로깅?: no
  • Rails: no
  • Sidekiq: yes

#{resource_name} 찾기 에러

  • 설명: 리소스 (이슈/에픽/MR)를 찾을 수 없는 경우 로깅
  • 클래스: Gitlab::Llm::Chain::Tools::Identifier
  • Ai_event_name: incorrect_response_received
  • 레벨: error
  • Arguments:
    • error_message: authorizer.message
  • 시스템의 일부: duo_chat
  • 확장된 로깅?: no
  • Rails: no
  • Sidekiq: yes

LLM에서 받은 답변

  • 설명: 식별자에서의 응답
  • Class: Gitlab::Llm::Chain::Tools::Identifier
  • Ai_event_name: response_received
  • Level: info
  • Arguments:
    • response_from_llm: content
  • 시스템의 일부: duo_chat
  • 확장 로깅?: yes
  • Rails: no
  • Sidekiq: yes

JSON 파싱 오류

  • 설명: JSON이 올바르지 않은 형식일 때 (관찰: JSON이 올바르지 않은 형식입니다. 다시 시도하세요)
  • Class: Gitlab::Llm::Chain::Tools::Identifier
  • Ai_event_name: error
  • Level: error
  • Arguments:
    • 없음
  • 시스템의 일부: duo_chat
  • 확장 로깅?: no
  • Rails: no
  • Sidekiq: yes

이미 식별된 리소스

  • 설명: 이미 식별된 리소스 (이미 식별된 #{resource_name} #{resource.to_global_id}를 확인하세요.)
  • Class: Gitlab::Llm::Chain::Tools::Identifier
  • Ai_event_name: incorrect_response_received
  • Level: info
  • Arguments:
    • error_message: content
  • 시스템의 일부: duo_chat
  • 확장 로깅?: yes
  • Rails: no
  • Sidekiq: yes

지원되는 이슈 가능한 타입

  • 설명: 이슈/에픽에 대한 능력 (정책.can?) 로깅
  • Class: Gitlab::Llm::Chain::Tools::SummarizeComments::Executor
  • Ai_event_name: permission
  • Level: info
  • Arguments:
    • allowed: ability
  • 시스템의 일부: feature
  • 확장 로깅?: yes
  • Rails: no
  • Sidekiq: yes

지원되는 이슈 가능한 타입

  • 설명: 이슈/에픽에 대한 능력 (정책.can?) 로깅
  • Class: Gitlab::Llm::Chain::Tools::SummarizeComments::ExecutorOld
  • Ai_event_name: permission
  • Level: info
  • Arguments:
    • allowed: ability
  • 시스템의 일부: feature
  • 확장 로깅?: yes
  • Rails: no
  • Sidekiq: yes

summarize_comments의 답변 내용

  • 설명: summarize_comments 기능에 대한 답변
  • Class: Gitlab::Llm::Chain::Tools::SummarizeComments::ExecutorOld
  • Ai_event_name: response_received
  • Level: info
  • Arguments:
    • response_from_llm: content
  • 시스템의 일부: feature
  • 확장 로깅?: yes
  • Rails: no
  • Sidekiq: yes

채팅 요청의 프롬프트 내용

  • 설명: 채팅 관련 요청
  • Class: Gitlab::Llm::Chain::Concerns::AiDependent
  • Ai_event_name: prompt_content
  • Level: info
  • Arguments:
    • prompt: prompt_text
  • 시스템의 일부: duo_chat
  • 확장 로깅?: yes
  • Rails: no
  • Sidekiq: yes

“너무 많은 요청, {delay} 초 후 다시 시도할 것”

  • 설명: 지수 백오프 루프에 들어갔을 때
  • Class: Gitlab::Llm::Chain::Concerns::ExponentialBackoff
  • Ai_event_name: retrying_request
  • Level: info
  • Arguments:
    • 없음
  • 시스템의 일부: abstraction_layer
  • 확장 로깅?: no
  • Rails: no
  • Sidekiq: yes

리소스를 찾을 수 없음

  • 설명: 리소스를 찾을 수 없음/권한 없음
  • Class: Gitlab::Llm::Utils::Authorizer
  • Ai_event_name: permission_denied
  • Level: info
  • Arguments:
    • error_code: “M3003”
  • 시스템의 일부: abstraction_layer
  • 확장 로깅?: no
  • Rails: no
  • Sidekiq: yes

이중 채팅에 대한 액세스 권한 없음

  • 설명: 이중 채팅에 대한 액세스 권한 없음
  • Class: Gitlab::Llm::Utils::Authorizer
  • Ai_event_name: permission_denied
  • Level: info
  • Arguments:
    • error_code: “M3004”
  • 시스템의 일부: abstraction_layer
  • 확장 로깅?: no
  • Rails: no
  • Sidekiq: yes

AI가 비활성화됨

  • 설명: 컨테이너에 대해 AI가 활성화되지 않음
  • Class: Gitlab::Llm::Utils::Authorizer
  • Ai_event_name: permission_denied
  • Level: info
  • Arguments:
    • error_code: “M3002”
  • 시스템의 일부: abstraction_layer
  • 확장 로깅?: no
  • Rails: no
  • Sidekiq: yes

Vertex로의 요청 수행 중

  • 설명: 요청 수행 중
  • Class: Gitlab::Llm::VertexAi::Client
  • Ai_event_name: performing_request
  • Level: info
  • Arguments:
    • unit_primitive: unit_primitive
    • options: config
  • 시스템의 일부: abstraction_layer
  • 확장 로깅?: no
  • Rails: no
  • Sidekiq: yes

응답 내용

  • 설명: aigw - vertex -content에서의 응답
  • Class: Gitlab::Llm::VertexAi::Client
  • Ai_event_name: response_received
  • Level: info
  • Arguments:
    • unit_primitive: unit_primitive
    • response_from_llm: response.to_json
  • 시스템의 일부: abstraction_layer
  • 확장 로깅?: yes
  • Rails: no
  • Sidekiq: yes

Vertex로부터의 응답 받음

  • 설명: aigw - vertex로부터의 응답
  • Class: Gitlab::Llm::VertexAi::Client
  • Ai_event_name: response_received
  • Level: info
  • Arguments:
    • unit_primitive: unit_primitive
  • 시스템의 일부: abstraction_layer
  • 확장 로깅?: no
  • Rails: no
  • Sidekiq: yes

Vertex로부터의 빈 응답

  • 설명: aigw - vertex로부터의 빈 응답
  • Class: Gitlab::Llm::VertexAi::Client
  • Ai_event_name: empty_response_received
  • Level: error
  • Arguments:
    • unit_primitive: unit_primitive
  • 시스템의 일부: abstraction_layer
  • 확장 로깅?: no
  • Rails: no
  • Sidekiq: yes

알 수 없는 이벤트를 최종 답변으로 표시

  • 설명: 알 수 없는 이벤트
  • 클래스: Gitlab::Llm::Chain::Agents::SingleActionExecutor
  • Ai_event_name: unknown_event
  • 레벨: warn
  • Arguments:
    • 없음
  • 시스템의 일부: duo_chat
  • 확장된 로깅?: 아니요
  • Rails: 아니요
  • Sidekiq: 예

GitLab Rails에서 도구를 찾지 못함

  • 설명: 도구를 찾지 못함
  • 클래스: Gitlab::Llm::Chain::Agents::SingleActionExecutor
  • Ai_event_name: tool_not_find
  • 레벨: error
  • Arguments:
    • tool_name: tool_name
  • 시스템의 일부: duo_chat
  • 확장된 로깅?: 아니요
  • Rails: 아니요
  • Sidekiq: 예

v2/chat/agent로부터 이벤트 수신함

  • 설명: 이벤트 수신함
  • 클래스: Gitlab::Duo::Chat::StepExecutor
  • Ai_event_name: event_received
  • 레벨: info
  • Arguments:
    • event: event
  • 시스템의 일부: duo_chat
  • 확장된 로깅?: 예
  • Rails: 아니요
  • Sidekiq: 예

관찰을 업데이트하지 못함

  • 설명: 관찰 업데이트 실패
  • 클래스: Gitlab::Duo::Chat::StepExecutor
  • Ai_event_name: agent_steps_empty
  • 레벨: error
  • Arguments:
    • 없음
  • 시스템의 일부: duo_chat
  • 확장된 로깅?: 아니요
  • Rails: 아니요
  • Sidekiq: 예

v2/chat/agent에 대한 요청

  • 설명: 요청
  • 클래스: Gitlab::Duo::Chat::StepExecutor
  • Ai_event_name: performing_request
  • 레벨: info
  • Arguments:
    • params: params
  • 시스템의 일부: duo_chat
  • 확장된 로깅?: 예
  • Rails: 아니요
  • Sidekiq: 예

v2/chat/agent로부터 스트리밍 완료

  • 설명: 스트리밍 완료
  • 클래스: Gitlab::Duo::Chat::StepExecutor
  • Ai_event_name: streaming_finished
  • 레벨: info
  • Arguments:
    • 없음
  • 시스템의 일부: duo_chat
  • 확장된 로깅?: 아니요
  • Rails: 아니요
  • Sidekiq: 예

Duo Chat 에이전트로부터 오류 수신함

  • 설명: 스트리밍 중에 오류가 반환됨
  • 클래스: Gitlab::Duo::Chat::StepExecutor
  • Ai_event_name: error_returned
  • 레벨: error
  • Arguments:
    • status: response.code
  • 시스템의 일부: duo_chat
  • 확장된 로깅?: 아니요
  • Rails: 아니요
  • Sidekiq: 예

Duo Chat 에이전트에서 청크를 해석하지 못함

  • 설명: 청크를 해석하지 못함
  • 클래스: Gitlab::Duo::Chat::AgentEventParser
  • Ai_event_name: parsing_error
  • 레벨: warn
  • Arguments:
    • event_json_size: event_json.length
  • 시스템의 일부: duo_chat
  • 확장된 로깅?: 아니요
  • Rails: 아니요
  • Sidekiq: 예

GitLab-Rails에서 이벤트 클래스를 찾지 못함

  • 설명: 이벤트 클래스를 찾지 못함
  • 클래스: Gitlab::Duo::Chat::AgentEventParser
  • Ai_event_name: parsing_error
  • 레벨: error
  • Arguments:
    • event_type: event[‘type’]
  • 시스템의 일부: duo_chat
  • 확장된 로깅?: 아니요
  • Rails: 아니요
  • Sidekiq: 예