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( 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