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}
세 가지 스팬 타입
| 타입 | 예시 | 설명 |
|---|---|---|
chat | chat gpt-4o | 모델 호출 |
invoke_agent | invoke_agent orchestrator | 에이전트 실행 |
execute_tool | execute_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 노출 방지 가이드라인 준수