From df2be1cf1698a24baa85b7c83323b2d72f6eee8a Mon Sep 17 00:00:00 2001 From: kevin Date: Tue, 25 Nov 2025 19:28:18 +0800 Subject: [PATCH] [BugFix] fix mm_positions type error (#5182) * fix mm_positions type error * update code * update code * update code --------- Co-authored-by: Jiang-Jia-Jun <163579578+Jiang-Jia-Jun@users.noreply.github.com> --- fastdeploy/engine/request.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/fastdeploy/engine/request.py b/fastdeploy/engine/request.py index d46ec9582..acd0f7004 100644 --- a/fastdeploy/engine/request.py +++ b/fastdeploy/engine/request.py @@ -17,6 +17,7 @@ from __future__ import annotations import time +import traceback from dataclasses import asdict, dataclass, fields from enum import Enum from typing import Any, Dict, Generic, Optional, Union @@ -24,7 +25,6 @@ from typing import Any, Dict, Generic, Optional, Union import numpy as np from typing_extensions import TypeVar -from fastdeploy import envs from fastdeploy.engine.pooling_params import PoolingParams from fastdeploy.engine.sampling_params import SamplingParams from fastdeploy.entrypoints.openai.protocol import ToolCall @@ -190,6 +190,22 @@ class Request: pooling_params = PoolingParams.from_dict(d["pooling_params"]) else: sampling_params = SamplingParams.from_dict(d) + if ( + isinstance(d.get("multimodal_inputs"), dict) + and isinstance(d["multimodal_inputs"].get("mm_positions"), list) + and len(d["multimodal_inputs"]["mm_positions"]) > 0 + ): + # if mm_positions is not of type ImagePosition, convert to ImagePosition + try: + for i, mm_pos in enumerate(d["multimodal_inputs"]["mm_positions"]): + d["multimodal_inputs"]["mm_positions"][i] = ( + ImagePosition(**mm_pos) if not isinstance(mm_pos, ImagePosition) else mm_pos + ) + except Exception as e: + data_processor_logger.error( + f"Convert mm_positions to ImagePosition error: {e}, {str(traceback.format_exc())}" + ) + return cls( request_id=d["request_id"], prompt=d.get("prompt"),