From fa0b6602197ea875307df23ce11b719e0a74cc07 Mon Sep 17 00:00:00 2001 From: Hassieb Pakzad <68423100+hassiebp@users.noreply.github.com> Date: Thu, 14 Aug 2025 17:18:32 +0200 Subject: [PATCH 1/2] fix(client): skip string serialization in attribute values --- langfuse/_client/attributes.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/langfuse/_client/attributes.py b/langfuse/_client/attributes.py index 1c22b7518..0438b959a 100644 --- a/langfuse/_client/attributes.py +++ b/langfuse/_client/attributes.py @@ -152,7 +152,10 @@ def create_generation_attributes( def _serialize(obj: Any) -> Optional[str]: - return json.dumps(obj, cls=EventSerializer) if obj is not None else None + if obj is None or isinstance(obj, str): + return obj + + return json.dumps(obj, cls=EventSerializer) def _flatten_and_serialize_metadata( From 6e5d83ff0bff61f5e0559129d16ac014f63e31d4 Mon Sep 17 00:00:00 2001 From: Hassieb Pakzad <68423100+hassiebp@users.noreply.github.com> Date: Thu, 14 Aug 2025 18:26:41 +0200 Subject: [PATCH 2/2] push --- tests/test_decorators.py | 2 +- tests/test_openai.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/test_decorators.py b/tests/test_decorators.py index 6598bac55..fe0a7f4c3 100644 --- a/tests/test_decorators.py +++ b/tests/test_decorators.py @@ -905,7 +905,7 @@ async def level_1_function(*args, **kwargs): assert generation.usage.output is not None assert generation.usage.total is not None print(generation) - assert generation.output == "2" + assert generation.output == 2 def test_generator_as_function_input(): diff --git a/tests/test_openai.py b/tests/test_openai.py index 86b0f057c..85205db28 100644 --- a/tests/test_openai.py +++ b/tests/test_openai.py @@ -119,7 +119,7 @@ def test_openai_chat_completion_stream(openai): assert generation.data[0].usage.input is not None assert generation.data[0].usage.output is not None assert generation.data[0].usage.total is not None - assert generation.data[0].output == "2" + assert generation.data[0].output == 2 assert generation.data[0].completion_start_time is not None # Completion start time for time-to-first-token @@ -179,7 +179,7 @@ def test_openai_chat_completion_stream_with_next_iteration(openai): assert generation.data[0].usage.input is not None assert generation.data[0].usage.output is not None assert generation.data[0].usage.total is not None - assert generation.data[0].output == "2" + assert generation.data[0].output == 2 assert generation.data[0].completion_start_time is not None # Completion start time for time-to-first-token