From dd2e9a14c754971fc26f3d67ee0701dbac16520b Mon Sep 17 00:00:00 2001 From: ming1753 <61511741+ming1753@users.noreply.github.com> Date: Fri, 5 Dec 2025 11:05:21 +0800 Subject: [PATCH] [BugFix] Compatible with asynchronous functions (#5378) * [BugFix] fix data_processor asyn bug * fix bug --- .../entrypoints/openai/response_processors.py | 40 +++++++++++++------ 1 file changed, 28 insertions(+), 12 deletions(-) diff --git a/fastdeploy/entrypoints/openai/response_processors.py b/fastdeploy/entrypoints/openai/response_processors.py index 0ce67a00b..ad54d2030 100644 --- a/fastdeploy/entrypoints/openai/response_processors.py +++ b/fastdeploy/entrypoints/openai/response_processors.py @@ -150,12 +150,20 @@ class ChatResponseProcessor: image_output["outputs"]["num_image_tokens"] = count_tokens(all_tokens) yield image_output - self.data_processor.process_response_dict( - response_dict=request_output, - stream=stream, - enable_thinking=enable_thinking, - include_stop_str_in_output=include_stop_str_in_output, - ) + if inspect.iscoroutinefunction(self.data_processor.process_response_dict): + await self.data_processor.process_response_dict( + response_dict=request_output, + stream=stream, + enable_thinking=enable_thinking, + include_stop_str_in_output=include_stop_str_in_output, + ) + else: + self.data_processor.process_response_dict( + response_dict=request_output, + stream=stream, + enable_thinking=enable_thinking, + include_stop_str_in_output=include_stop_str_in_output, + ) text = {"type": "text", "text": request_output["outputs"]["text"]} request_output["outputs"]["multipart"] = [text] yield request_output @@ -171,12 +179,20 @@ class ChatResponseProcessor: num_image_tokens = 0 for part in self._multipart_buffer: if part["decode_type"] == 0: - self.data_processor.process_response_dict( - response_dict=part["request_output"], - stream=False, - enable_thinking=enable_thinking, - include_stop_str_in_output=include_stop_str_in_output, - ) + if inspect.iscoroutinefunction(self.data_processor.process_response_dict): + await self.data_processor.process_response_dict( + response_dict=part["request_output"], + stream=False, + enable_thinking=enable_thinking, + include_stop_str_in_output=include_stop_str_in_output, + ) + else: + self.data_processor.process_response_dict( + response_dict=request_output, + stream=stream, + enable_thinking=enable_thinking, + include_stop_str_in_output=include_stop_str_in_output, + ) text = {"type": "text", "text": part["request_output"]["outputs"]["text"]} multipart.append(text) elif part["decode_type"] == 1: