1616
1717from __future__ import annotations
1818
19+ import copy
1920import time
2021import traceback
2122from dataclasses import asdict , dataclass , fields
@@ -269,6 +270,21 @@ def __eq__(self, other):
269270
270271 def to_dict (self ) -> dict :
271272 """convert Request into a serializable dict"""
273+ multimodal_inputs = copy .deepcopy (self .multimodal_inputs )
274+ if (
275+ isinstance (multimodal_inputs , dict )
276+ and isinstance (multimodal_inputs .get ("mm_positions" ), list )
277+ and len (multimodal_inputs ["mm_positions" ]) > 0
278+ ):
279+ # if mm_positions is ImagePosition, convert to dict
280+ try :
281+ for i , mm_pos in enumerate (multimodal_inputs ["mm_positions" ]):
282+ multimodal_inputs ["mm_positions" ][i ] = (
283+ asdict (mm_pos ) if isinstance (mm_pos , ImagePosition ) else mm_pos
284+ )
285+ except Exception as e :
286+ data_processor_logger .error (f"Convert ImagePosition to dict error: { e } , { str (traceback .format_exc ())} " )
287+
272288 data = {
273289 "request_id" : self .request_id ,
274290 "prompt" : self .prompt ,
@@ -282,7 +298,7 @@ def to_dict(self) -> dict:
282298 "arrival_time" : self .arrival_time ,
283299 "preprocess_start_time" : self .preprocess_start_time ,
284300 "preprocess_end_time" : self .preprocess_end_time ,
285- "multimodal_inputs" : self . multimodal_inputs ,
301+ "multimodal_inputs" : multimodal_inputs ,
286302 "multimodal_data" : self .multimodal_data ,
287303 "disable_chat_template" : self .disable_chat_template ,
288304 "disaggregate_info" : self .disaggregate_info ,
0 commit comments