fix(llm_translation): extract session_id from JSON-encoded user_id metadata for prompt_cache_key

This commit is contained in:
pylrn 2026-09-02 00:49:51 +05:30
parent 77813ae906
commit a1a9b2e2e0
2 changed files with 52 additions and 0 deletions

View file

@ -1,3 +1,4 @@
import json
import os
from collections.abc import Mapping
from types import MappingProxyType
@ -21,6 +22,23 @@ _THINKING_OFF: Final = "none"
def prompt_cache_key_from_user_id(user_id: object) -> str | None:
if user_id is None:
return None
if isinstance(user_id, dict):
if session_id := user_id.get("session_id"):
return str(session_id)[:OPENAI_MAX_PROMPT_CACHE_KEY_LENGTH] or None
if user_key := user_id.get("user_id"):
return str(user_key)[:OPENAI_MAX_PROMPT_CACHE_KEY_LENGTH] or None
elif isinstance(user_id, str):
trimmed = user_id.strip()
if trimmed.startswith("{") and trimmed.endswith("}"):
try:
parsed = json.loads(trimmed)
if isinstance(parsed, dict):
if session_id := parsed.get("session_id"):
return str(session_id)[:OPENAI_MAX_PROMPT_CACHE_KEY_LENGTH] or None
if user_key := parsed.get("user_id"):
return str(user_key)[:OPENAI_MAX_PROMPT_CACHE_KEY_LENGTH] or None
except Exception:
pass
return str(user_id)[:OPENAI_MAX_PROMPT_CACHE_KEY_LENGTH] or None

View file

@ -28,6 +28,40 @@ def test_build_responses_kwargs_derives_prompt_cache_key_from_user_id():
assert responses_kwargs["prompt_cache_key"] == "session-abc"
def test_build_responses_kwargs_derives_prompt_cache_key_from_json_user_id_metadata():
json_user_id = json.dumps(
{
"device_id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"account_uuid": "",
"session_id": "12345678-abcd-ef01-2345-6789abcdef01",
}
)
responses_kwargs = _build_responses_kwargs(
max_tokens=1024,
messages=MESSAGES,
model="openai/gpt-5.6-luna",
metadata={"user_id": json_user_id},
extra_kwargs={"custom_llm_provider": "openai"},
)
assert responses_kwargs["user"] == json_user_id[:64]
assert responses_kwargs["prompt_cache_key"] == "12345678-abcd-ef01-2345-6789abcdef01"
def test_build_responses_kwargs_derives_prompt_cache_key_from_dict_user_id():
dict_user_id = {
"device_id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"session_id": "sess-guid-999",
}
responses_kwargs = _build_responses_kwargs(
max_tokens=1024,
messages=MESSAGES,
model="openai/gpt-5.6-luna",
metadata={"user_id": dict_user_id},
extra_kwargs={"custom_llm_provider": "openai"},
)
assert responses_kwargs["prompt_cache_key"] == "sess-guid-999"
def test_build_responses_kwargs_prefers_explicit_prompt_cache_key_over_derived():
responses_kwargs = _build_responses_kwargs(
max_tokens=1024,