diff --git a/backend/agent/llm/openai_provider.py b/backend/agent/llm/openai_provider.py index 49f0538..139d840 100644 --- a/backend/agent/llm/openai_provider.py +++ b/backend/agent/llm/openai_provider.py @@ -540,6 +540,14 @@ class DeepSeekProvider(OpenAIProvider): _is_deepseek: bool = True + def supports_vision(self) -> bool: + """Return whether the selected DeepSeek model accepts image blocks.""" + return self.model.lower() in { + "deepseek-flash", + "deepseek-v4-flash", + "deepseek-v4-flash-vision-exp", + } + def __init__(self, model: str = "deepseek-flash", api_key: str | None = None, **kwargs) -> None: super().__init__(model=model, api_key=api_key, base_url="https://api.deepseek.com", **kwargs) diff --git a/tests/test_deepseek_vision.py b/tests/test_deepseek_vision.py new file mode 100644 index 0000000..0fc3d0b --- /dev/null +++ b/tests/test_deepseek_vision.py @@ -0,0 +1,19 @@ +"""Vision capability checks for DeepSeek models.""" + +from backend.agent.llm.openai_provider import DeepSeekProvider + + +def test_deepseek_flash_supports_vision(): + provider = DeepSeekProvider(model="deepseek-flash", api_key="test-key") + assert provider.supports_vision() is True + + +def test_legacy_deepseek_flash_aliases_support_vision(): + for model in ("deepseek-v4-flash", "deepseek-v4-flash-vision-exp"): + provider = DeepSeekProvider(model=model, api_key="test-key") + assert provider.supports_vision() is True + + +def test_deepseek_pro_does_not_claim_vision_support(): + provider = DeepSeekProvider(model="deepseek-v4-pro", api_key="test-key") + assert provider.supports_vision() is False