2323from nat .observability .exporter .base_exporter import IsolatedAttribute
2424from nat .observability .exporter .span_exporter import SpanExporter
2525from nat .utils .log_utils import LogFilter
26+ from nat .utils .string_utils import truncate_string
2627from nat .utils .type_utils import override
2728from weave .trace .context import weave_client_context
2829from weave .trace .context .call_context import get_current_call
@@ -198,7 +199,7 @@ def _extract_output_message(self, output_data: Any, outputs: dict[str, Any]) ->
198199 # Handle direct "choices" attribute (non-streaming: output.choices[0].message.content)
199200 choices = getattr (output_data , 'choices' , None )
200201 if choices :
201- outputs ["output_message" ] = choices [0 ].message .content
202+ outputs ["output_message" ] = truncate_string ( choices [0 ].message .content )
202203 return
203204
204205 # Handle list-based output (streaming or websocket) – content may be in the following formats:
@@ -214,13 +215,13 @@ def _extract_output_message(self, output_data: Any, outputs: dict[str, Any]) ->
214215 delta = getattr (choices [0 ], 'delta' , None )
215216
216217 if message :
217- outputs ["output_message" ] = getattr (message , 'content' , None )
218+ outputs ["output_message" ] = truncate_string ( getattr (message , 'content' , None ) )
218219 elif delta :
219- outputs ["output_preview" ] = getattr (delta , 'content' , None )
220+ outputs ["output_preview" ] = truncate_string ( getattr (delta , 'content' , None ) )
220221 else :
221222 value = getattr (output_data [0 ], 'value' , None )
222223 if value :
223- outputs ["output_preview" ] = value
224+ outputs ["output_preview" ] = truncate_string ( str ( value ))
224225
225226 def _finish_weave_call (self , step : IntermediateStep ) -> None :
226227 """
0 commit comments