OpenTelemetry GenAI Semantic Conventions: LLM 트레이싱 표준화

OpenTelemetry가 LLM 트레이싱 표준을 공식 발표. 기존의 파편화된 트레이싱 형식을 통합.

문제: 와일드 웨스트

기존 LLM 트레이싱은 도구마다 서로 다른 형식 사용:

  • Langfuse, Helicone, Arize, 자체 구현 모두 각자 방식
  • 모니터링 도구 변경 시 전체 재설정 필요
  • 벤더 락인이 코드에 내장됨
// 기존 방식 (비표준)
span.setAttribute("llm.provider", "openai");
span.setAttribute("llm.model", "gpt-4o");
span.setAttribute("llm.tokens.input", 150);

→ 다른 백엔드에서 인식 못함

GenAI Semantic Conventions

스팬 이름 형식

{operation} {name}

세 가지 스팬 타입

타입예시설명
chatchat gpt-4o모델 호출
invoke_agentinvoke_agent orchestrator에이전트 실행
execute_toolexecute_tool web_search툴 실행

에이전트 속성

// 올바른 형식
span.setAttribute("gen_ai.agent.name", "weather-bot");
span.setAttribute("gen_ai.agent.id", "agent-001");
span.setAttribute("gen_ai.tool.name", "search");
span.setAttribute("gen_ai.tool.type", "function");
 
// 잘못된 형식 (중첩 경로)
span.setAttribute("gen_ai.agent.tool.name", "search"); // ❌

콘텐츠 기록 (PII 보호)

기본 원칙: 프롬프트와 완성을 기본적으로 기록하지 않음

패턴설명
기본기록 안 함 (프라이버시 우선)
옵트인gen_ai.input.messages, gen_ai.output.messages 속성 사용
외부 저장콘텐츠는 별도 저장, 스팬에는 참조만

현재 상태

  • 실험적 단계 (Experimental)
  • 실제 구현 사례 거의 없음
  • 구현 가이드 문서 부족

의미

LLM 에이전트가 프로덕션에 올라가는 팀이 늘면서 관측가능성 표준화는 선택이 아닌 필수. 이 표준을 따르면:

  • 모니터링 도구 교체 비용 0
  • 모든 GenAI 인식 백엔드에서 작동
  • PII 노출 방지 가이드라인 준수