From 3a53bf2d109876cba637bd8caf9327c731fd5c7b Mon Sep 17 00:00:00 2001 From: Jeff Cook Date: Tue, 10 Mar 2026 01:22:03 -0600 Subject: [PATCH] Add a `base_model_paths` property to `_DiffusionServingModels`. ... Get a 500 Error with pure diffusion models without this. Signed-off-by: Jeff Cook --- .../openai_api/test_image_server.py | 26 +++++++++++++++++++ vllm_omni/entrypoints/openai/api_server.py | 4 +++ 2 files changed, 30 insertions(+) diff --git a/tests/entrypoints/openai_api/test_image_server.py b/tests/entrypoints/openai_api/test_image_server.py index 36c58b3d821..b263ed4c573 100644 --- a/tests/entrypoints/openai_api/test_image_server.py +++ b/tests/entrypoints/openai_api/test_image_server.py @@ -10,12 +10,14 @@ import base64 import io from argparse import Namespace +from types import SimpleNamespace import pytest from fastapi.testclient import TestClient from PIL import Image from pytest_mock import MockerFixture from vllm import SamplingParams +from vllm.entrypoints.openai.models.protocol import BaseModelPath from vllm_omni.entrypoints.openai.image_api_utils import ( encode_image_base64, @@ -243,6 +245,30 @@ def test_models_endpoint_no_engine(): assert len(data["data"]) == 0 +def test_get_engine_and_model_reads_base_model_paths_in_diffusion_mode(): + """Regression test for pure diffusion servers exposing base_model_paths.""" + from vllm_omni.entrypoints.openai.api_server import ( + _DiffusionServingModels, + _get_engine_and_model, + ) + + engine_client = SimpleNamespace(stage_list=["diffusion"]) + state = SimpleNamespace( + engine_client=engine_client, + stage_configs=[{"stage_type": "diffusion"}], + openai_serving_models=_DiffusionServingModels( + [BaseModelPath(name="tencent/HunyuanImage-3.0-Instruct", model_path="/models/hunyuan")] + ), + ) + raw_request = SimpleNamespace(app=SimpleNamespace(state=state)) + + returned_engine, model_name, stage_types = _get_engine_and_model(raw_request) + + assert returned_engine is engine_client + assert model_name == "tencent/HunyuanImage-3.0-Instruct" + assert stage_types == ["diffusion"] + + def test_generate_single_image(test_client): """Test generating a single image""" response = test_client.post( diff --git a/vllm_omni/entrypoints/openai/api_server.py b/vllm_omni/entrypoints/openai/api_server.py index 84a81a86139..9f2b720db45 100644 --- a/vllm_omni/entrypoints/openai/api_server.py +++ b/vllm_omni/entrypoints/openai/api_server.py @@ -178,6 +178,10 @@ class _DiffusionServingModels: def __init__(self, base_model_paths: list[BaseModelPath]) -> None: self._base_model_paths = base_model_paths + @property + def base_model_paths(self) -> list[BaseModelPath]: + return self._base_model_paths + async def show_available_models(self) -> ModelList: return ModelList( data=[