@@ -101,7 +101,8 @@ def set_content_tag(self, key: str, value: Any) -> None:
101
101
messages = [m .to_openai_dict_format () for m in value ["messages" ]]
102
102
self ._span .update (input = messages )
103
103
else :
104
- self ._span .update (input = value )
104
+ coerced_value = tracing_utils .coerce_tag_value (value )
105
+ self ._span .update (input = coerced_value )
105
106
elif key .endswith (".output" ):
106
107
if "replies" in value :
107
108
if all (isinstance (r , ChatMessage ) for r in value ["replies" ]):
@@ -110,7 +111,8 @@ def set_content_tag(self, key: str, value: Any) -> None:
110
111
replies = value ["replies" ]
111
112
self ._span .update (output = replies )
112
113
else :
113
- self ._span .update (output = value )
114
+ coerced_value = tracing_utils .coerce_tag_value (value )
115
+ self ._span .update (output = coerced_value )
114
116
115
117
self ._data [key ] = value
116
118
@@ -286,9 +288,9 @@ def handle(self, span: LangfuseSpan, component_type: Optional[str]) -> None:
286
288
# If the span is at the pipeline level, we add input and output keys to the span
287
289
at_pipeline_level = span .get_data ().get (_PIPELINE_INPUT_KEY ) is not None
288
290
if at_pipeline_level :
289
- span .raw_span ().update (
290
- input = span . get_data (). get ( _PIPELINE_INPUT_KEY ), output = span .get_data ().get (_PIPELINE_OUTPUT_KEY )
291
- )
291
+ coerced_input = tracing_utils . coerce_tag_value ( span .get_data ().get ( _PIPELINE_INPUT_KEY ))
292
+ coerced_output = tracing_utils . coerce_tag_value ( span .get_data ().get (_PIPELINE_OUTPUT_KEY ) )
293
+ span . raw_span (). update ( input = coerced_input , output = coerced_output )
292
294
293
295
if component_type in _SUPPORTED_GENERATORS :
294
296
meta = span .get_data ().get (_COMPONENT_OUTPUT_KEY , {}).get ("meta" )
0 commit comments