Fix TEXTGEN_AI_MODELS full-name mapping and unify model resolution
This commit is contained in:
22
backend/services/llm_providers/routing_observability.py
Normal file
22
backend/services/llm_providers/routing_observability.py
Normal file
@@ -0,0 +1,22 @@
|
||||
"""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))
|
||||
Reference in New Issue
Block a user