From 6cf0a60087c2cec74b66e31bbce28f40eafcdd01 Mon Sep 17 00:00:00 2001 From: Roland Tannous Date: Mon, 30 Mar 2026 01:56:52 +0000 Subject: [PATCH] feat: add DeepSeek provider (deepseek-chat, deepseek-reasoner) --- studio/backend/core/inference/providers.py | 14 ++++++++++++++ studio/backend/tests/test_providers_api.py | 5 +++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/studio/backend/core/inference/providers.py b/studio/backend/core/inference/providers.py index 90d83bc441..654d9672c1 100644 --- a/studio/backend/core/inference/providers.py +++ b/studio/backend/core/inference/providers.py @@ -140,6 +140,20 @@ PROVIDER_REGISTRY: dict[str, dict[str, Any]] = { "openai_compatible": False, "notes": "Native Anthropic Messages API. Uses x-api-key header and /v1/messages endpoint with SSE translation.", }, + "deepseek": { + "display_name": "DeepSeek", + "base_url": "https://api.deepseek.com/v1", + "default_models": [ + "deepseek-chat", + "deepseek-reasoner", + ], + "supports_streaming": True, + "supports_vision": False, + "supports_tool_calling": True, + "auth_header": "Authorization", + "auth_prefix": "Bearer ", + "notes": "OpenAI-compatible API. deepseek-chat = V3, deepseek-reasoner = R1 thinking mode.", + }, "openrouter": { "display_name": "OpenRouter", "base_url": "https://openrouter.ai/api/v1", diff --git a/studio/backend/tests/test_providers_api.py b/studio/backend/tests/test_providers_api.py index 93bd363c92..9482c14c69 100644 --- a/studio/backend/tests/test_providers_api.py +++ b/studio/backend/tests/test_providers_api.py @@ -49,7 +49,8 @@ _PROVIDER_CONFIGS: dict[str, tuple[str, str]] = { "fireworks": ("FIREWORKS_API_KEY", "accounts/fireworks/models/llama4-maverick-instruct-basic"), "perplexity": ("PERPLEXITY_API_KEY", "sonar"), "openrouter": ("OPENROUTER_API_KEY", "openai/gpt-4o-mini"), - "anthropic": ("ANTHROPIC_API_KEY", "claude-haiku-4-5"), + "anthropic": ("ANTHROPIC_API_KEY", "claude-haiku-4-5"), + "deepseek": ("DEEPSEEK_API_KEY", "deepseek-chat"), } PROVIDER_KEYS: dict[str, str] = { @@ -241,7 +242,7 @@ class TestRegistry: ) assert resp.status_code == 200, f"Registry failed: {resp.text}" providers = resp.json() - assert len(providers) == 9, f"Expected 9 providers, got {len(providers)}: {providers}" + assert len(providers) == 10, f"Expected 10 providers, got {len(providers)}: {providers}" print(f"\n {'Provider':<12} {'Base URL'}") print(f" {'-'*12} {'-'*45}") for p in providers: