From 0aa72b952f29adaecdbe60a40966b761270f41e7 Mon Sep 17 00:00:00 2001 From: Sihao Li <111170255+GG-li@users.noreply.github.com> Date: Wed, 21 Jan 2026 17:44:17 +0800 Subject: [PATCH] [bugfix] support text + audio mixed output (#843) Signed-off-by: GG-li <3226868735@qq.com> --- vllm_omni/entrypoints/openai/serving_chat.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/vllm_omni/entrypoints/openai/serving_chat.py b/vllm_omni/entrypoints/openai/serving_chat.py index 6320cb73a..8a62fd16c 100644 --- a/vllm_omni/entrypoints/openai/serving_chat.py +++ b/vllm_omni/entrypoints/openai/serving_chat.py @@ -1324,11 +1324,21 @@ class OmniOpenAIServingChat(OpenAIServingChat, AudioMixin): prompt_token_ids = None kv_transfer_params = None + # Build requested modalities set for filtering + requested_modalities = ( + set(request.modalities) if hasattr(request, "modalities") and request.modalities else None + ) + for omni_outputs in final_outputs: choices_data = [] if omni_outputs.request_output is not None and not getattr(omni_outputs.request_output, "finished", False): continue + # Filter outputs based on requested modalites + if requested_modalities is not None and omni_outputs.final_output_type not in requested_modalities: + logger.warning(f"final output type: {omni_outputs.final_output_type} is not needed by the request") + continue + if omni_outputs.final_output_type == "text": ( choices_data,