Files
llm/core/observability/trace.py
T

27 lines
728 B
Python

from __future__ import annotations
import uuid
from typing import Mapping
def next_trace_id() -> str:
return uuid.uuid4().hex
def _header_value(headers: Mapping[str, str], *names: str) -> str:
for name in names:
value = headers.get(name)
if value:
return str(value).strip()
return ""
def resolve_trace_id(headers: Mapping[str, str]) -> str:
trace_id = _header_value(headers, "x-trace-id", "X-Trace-Id", "x-request-id", "X-Request-Id")
return trace_id or next_trace_id()
def resolve_request_id(headers: Mapping[str, str], *, fallback_trace_id: str) -> str:
request_id = _header_value(headers, "x-request-id", "X-Request-Id")
return request_id or fallback_trace_id