workbench / tests /unit /test_minicpm_vision.py
GitHub Actions
Initial ZeroGPU deployment with spaces shim
7f9dfed
Raw
History Blame Contribute Delete
2.15 kB
from __future__ import annotations
import unittest
from typing import cast
from models.minicpm_vision import MiniCPMVisionConfig, MiniCPMVisionService
from models.model_catalog import load_model_catalog
class MiniCPMVisionServiceTest(unittest.TestCase):
def test_status_reports_transformers_availability(self) -> None:
status = MiniCPMVisionService.status()
self.assertEqual(status.name, "transformers-vision")
self.assertIsInstance(status.available, bool)
def test_unavailable_or_missing_image_path_does_not_load_weights(self) -> None:
catalog = load_model_catalog("config/models.yaml")
service = MiniCPMVisionService(catalog["minicpm_v46"])
response = service.vision_chat(False, "Describe it.")
self.assertIn("[MiniCPM vision unavailable]", response)
def test_generation_kwargs_are_explicit(self) -> None:
catalog = load_model_catalog("config/models.yaml")
service = MiniCPMVisionService(
catalog["minicpm_v46"],
MiniCPMVisionConfig(max_new_tokens=64, temperature=0.1, do_sample=False),
)
self.assertEqual(
service.generation_kwargs(),
{"max_new_tokens": 64, "temperature": 0.1, "do_sample": False},
)
def test_formats_image_text_prompt_with_thinking_instruction(self) -> None:
messages = MiniCPMVisionService.format_messages(
"Read the label.",
image="image-object",
thinking=True,
)
self.assertEqual(messages[0]["role"], "user")
self.assertEqual(messages[0]["content"][0]["type"], "image")
self.assertEqual(messages[0]["content"][1]["type"], "text")
self.assertIn("Think carefully", messages[0]["content"][1]["text"])
def test_video_support_plan_is_documented_but_not_enabled(self) -> None:
plan = MiniCPMVisionService.video_support_plan()
next_steps = cast(list[str], plan["next_steps"])
self.assertFalse(plan["implemented"])
self.assertTrue(any("Sample frames locally" in step for step in next_steps))
if __name__ == "__main__":
unittest.main()