Files
ALwrity/backend/services/llm_providers/routing_observability.py

23 lines
652 B
Python

"""Structured observability helpers for LLM routing decisions."""
from __future__ import annotations
import hashlib
import json
from typing import Any, Dict, Optional
def _mask_user_id(user_id: Optional[str]) -> str:
if not user_id:
return "anonymous"
return hashlib.sha256(str(user_id).encode("utf-8")).hexdigest()[:12]
def emit_routing_event(logger, event: str, *, user_id: Optional[str] = None, **fields: Any) -> None:
payload: Dict[str, Any] = {
"event": event,
"tenant": _mask_user_id(user_id),
**fields,
}
logger.info("[llm_routing] {}", json.dumps(payload, sort_keys=True, default=str))