feat(providers): DeepSeek provider#937
Conversation
|
Caution Review failedPull request was closed or merged during review No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (5)
📝 WalkthroughWalkthroughDeepSeek is added as a recognized cloud provider in both the backend and frontend. The backend registers it in provider type sets, the LiteLLM backend map, the ChangesDeepSeek Cloud Provider Integration
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~5 minutes Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
| "deepseek": [ | ||
| {"id": "deepseek-v4-pro"}, | ||
| {"id": "deepseek-v4-flash"}, | ||
| {"id": "deepseek-chat"}, | ||
| {"id": "deepseek-reasoner"}, | ||
| ], |
There was a problem hiding this comment.
💡 Edge Case: Seed model ids may not be routable until live discovery succeeds
The seed list registers deepseek-v4-pro and deepseek-v4-flash as routable models for any DeepSeek provider added without a working API key (the /models probe needs auth, so these seeds persist until a valid key enables live discovery). If those exact ids are not yet served by https://api.deepseek.com, they will appear selectable in the picker but fail at request time with a model-not-found error, since LiteLLM emits deepseek/<id> verbatim. The deepseek-chat/deepseek-reasoner aliases are known-good; please double-check the V4 ids match DeepSeek's current public catalog (and note deepseek-chat/deepseek-reasoner are flagged deprecated 2026/07/24, so the seed will need maintenance). Consider seeding only ids you can confirm route today, or documenting that the V4 ids are placeholders pending live discovery.
Reorder to lead with confirmed-routable ids and flag the V4 ids for verification.:
"deepseek": [
# Confirmed routable today via deepseek/<id>:
{"id": "deepseek-chat"},
{"id": "deepseek-reasoner"},
# V4 generation — keep only after confirming they are served by
# https://api.deepseek.com (otherwise they 404 at request time).
{"id": "deepseek-v4-pro"},
{"id": "deepseek-v4-flash"},
],
Was this helpful? React with 👍 / 👎
Code Review 👍 Approved with suggestions 0 resolved / 1 findingsIntegrates DeepSeek as a first-class cloud model provider with native LiteLLM support and UI configuration. Consider that seed model IDs may remain unroutable until a valid API key enables live discovery via the /models endpoint. 💡 Edge Case: Seed model ids may not be routable until live discovery succeeds📄 tinyagentos/routes/providers.py:43-48 The seed list registers Reorder to lead with confirmed-routable ids and flag the V4 ids for verification.🤖 Prompt for agentsOptionsAuto-apply is off → Gitar will not commit updates to this branch. Comment with these commands to change:
Was this helpful? React with 👍 / 👎 | Gitar |
Qodo reviews are paused for this user.Troubleshooting steps vary by plan Learn more → On a Teams plan? Using GitHub Enterprise Server, GitLab Self-Managed, or Bitbucket Data Center? |
|
Re gitar's note on V4 model id routability: verified against DeepSeek's official API docs. |
Adds DeepSeek as a first-class cloud model provider.
Base URL: the official https://api.deepseek.com (no /v1 suffix; DeepSeek serves the OpenAI-compatible API at the bare host). This is the official-DeepSeek path, not the ark/Volcengine gateway that Hermes happens to use locally.
Model ids seeded: deepseek-v4-pro and deepseek-v4-flash (the V4 generation), plus deepseek-chat and deepseek-reasoner (compatibility aliases, scheduled for deprecation 2026/07/24). DeepSeek's /models endpoint requires an API key, so a fresh add without a working key will not auto-discover; the seed list guarantees the provider registers routable models. With a valid key, live /models discovery replaces the seed as it does for every other cloud provider.
API key: no key is hardcoded. The provider references the user-supplied key the same way every other cloud provider does, through api_key_secret resolved to os.environ/<secret_name> in the LiteLLM config and injected from the taOS secrets store on reload. The conventional env var name is DEEPSEEK_API_KEY.
Registration: deepseek is a native LiteLLM provider, so it maps to the deepseek/ prefix in BACKEND_TYPE_MAP / CHAT_BACKEND_TYPE_MAP and LiteLLM emits deepseek/ entries with api_base set to the official base. Changes mirror the existing openrouter/kilocode entries exactly:
Verification: create_app() imports clean; provider test suites (test_routes_providers, test_provider_refresh, test_provider_lifecycle_api) pass 39/39.
Summary by CodeRabbit
Release Notes