45 lines
1.3 KiB
Python
45 lines
1.3 KiB
Python
|
|
# SPDX-License-Identifier: Apache-2.0
|
||
|
|
# SPDX-FileCopyrightText: Copyright contributors to the vLLM project
|
||
|
|
|
||
|
|
import pytest
|
||
|
|
|
||
|
|
from vllm.multimodal import MULTIMODAL_REGISTRY
|
||
|
|
|
||
|
|
from ....conftest import ImageTestAssets
|
||
|
|
from ...utils import build_model_context
|
||
|
|
|
||
|
|
# TODO: to be updated to "google/gemma-4-e2b-it" once the models are available
|
||
|
|
GEMMA4_MODEL_ID = "google/gemma-4-E2B-it"
|
||
|
|
|
||
|
|
|
||
|
|
@pytest.mark.parametrize("model_id", [GEMMA4_MODEL_ID])
|
||
|
|
def test_limit_mm_per_prompt(
|
||
|
|
image_assets: ImageTestAssets,
|
||
|
|
model_id: str,
|
||
|
|
):
|
||
|
|
"""Test that limit_mm_per_prompt accurately restricts multiple images."""
|
||
|
|
# We only allow 1 image
|
||
|
|
ctx = build_model_context(
|
||
|
|
model_id,
|
||
|
|
mm_processor_kwargs={},
|
||
|
|
limit_mm_per_prompt={"image": 1},
|
||
|
|
)
|
||
|
|
processor = MULTIMODAL_REGISTRY.create_processor(ctx.model_config)
|
||
|
|
|
||
|
|
# Provide 2 images in the prompt
|
||
|
|
prompt = "<image><image>"
|
||
|
|
# image_assets usually has multiple images
|
||
|
|
images = [asset.pil_image for asset in image_assets][:2]
|
||
|
|
if len(images) < 2:
|
||
|
|
images = [images[0], images[0]]
|
||
|
|
|
||
|
|
mm_data = {"image": images}
|
||
|
|
|
||
|
|
# Expect ValueError when exceeding limit
|
||
|
|
with pytest.raises(ValueError, match="At most 1 image"):
|
||
|
|
processor(
|
||
|
|
prompt,
|
||
|
|
mm_items=processor.info.parse_mm_data(mm_data),
|
||
|
|
hf_processor_mm_kwargs={},
|
||
|
|
)
|