Skip to content

Commit ff97409

Browse files
committed
fix: pass user email for all chats
1 parent 1bf4859 commit ff97409

File tree

1 file changed

+12
-7
lines changed

1 file changed

+12
-7
lines changed

src/api/routers/chat.py

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,13 @@ def extract_langfuse_metadata(chat_request: ChatRequest, headers: dict) -> dict:
2121
2222
Metadata can be provided via:
2323
1. extra_body.langfuse_metadata dict in the request
24-
2. HTTP headers: X-Chat-Id, X-User-Id, X-Session-Id, X-Message-Id
25-
3. user field in the request (for user_id)
24+
2. user field in the request (PRIORITIZED for user_id - ensures consistent email usage)
25+
3. HTTP headers: X-Chat-Id, X-User-Id, X-Session-Id, X-Message-Id
2626
2727
Returns a dict with: user_id, session_id, chat_id, message_id, and any custom metadata
28+
29+
Note: The 'user' field is prioritized for user_id to ensure email addresses
30+
are consistently used across all messages instead of generated IDs from headers.
2831
"""
2932
metadata = {}
3033

@@ -34,6 +37,11 @@ def extract_langfuse_metadata(chat_request: ChatRequest, headers: dict) -> dict:
3437
if isinstance(langfuse_meta, dict):
3538
metadata.update(langfuse_meta)
3639

40+
# PRIORITY: Set user_id from the 'user' field FIRST
41+
# This ensures we always use the email address when available
42+
if chat_request.user:
43+
metadata["user_id"] = chat_request.user
44+
3745
# Extract from headers
3846
headers_lower = {k.lower(): v for k, v in headers.items()}
3947

@@ -51,14 +59,11 @@ def extract_langfuse_metadata(chat_request: ChatRequest, headers: dict) -> dict:
5159

5260
for header_key, meta_key in header_mapping.items():
5361
if header_key in headers_lower and headers_lower[header_key]:
54-
# Don't override if already set (standard headers take precedence)
62+
# Don't override if already set
63+
# (chat_request.user takes precedence for user_id)
5564
if meta_key not in metadata:
5665
metadata[meta_key] = headers_lower[header_key]
5766

58-
# Use the 'user' field from request as user_id if not already set
59-
if "user_id" not in metadata and chat_request.user:
60-
metadata["user_id"] = chat_request.user
61-
6267
return metadata
6368

6469

0 commit comments

Comments
 (0)