mirror of
https://github.com/BerriAI/litellm.git
synced 2026-11-15 09:12:18 +00:00
fix(llm_translation): extract session_id from JSON-encoded user_id metadata for prompt_cache_key
This commit is contained in:
parent
77813ae906
commit
a1a9b2e2e0
2 changed files with 52 additions and 0 deletions
|
|
@ -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
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue