@@ -191,15 +191,31 @@ def _process_response(self, response):
191
191
Returns:
192
192
List of processed outputs
193
193
"""
194
+ def _to_dict (obj ):
195
+ """Convert object-like values into plain dicts when possible."""
196
+ if obj is None :
197
+ return None
198
+ if isinstance (obj , dict ):
199
+ return obj
200
+ if hasattr (obj , "model_dump" ):
201
+ return obj .model_dump ()
202
+ if hasattr (obj , "__dict__" ) and not isinstance (obj , dict ):
203
+ return {k : v for k , v in obj .__dict__ .items () if not k .startswith ("_" )}
204
+ return obj
205
+
194
206
outputs = []
195
207
tool_calls = []
196
208
for output_item in response .output :
197
- if output_item .type == "message" :
198
- for content_item in output_item .content :
199
- outputs .append (content_item .text )
200
- elif output_item .type == "function_call" :
201
- tool_calls .append (output_item .model_dump ())
202
-
209
+ output_dict = _to_dict (output_item )
210
+ item_type = output_dict .get ("type" )
211
+ if item_type == "message" :
212
+ content = output_dict .get ("content" , [])
213
+ for content_item in content :
214
+ content_dict = _to_dict (content_item )
215
+ text = content_dict .get ("text" )
216
+ outputs .append (text )
217
+ elif item_type == "function_call" :
218
+ tool_calls .append (output_dict )
203
219
if tool_calls :
204
220
outputs .append ({"tool_calls" : tool_calls })
205
221
return outputs
0 commit comments