DeepSeek in Whittl¶
DeepSeek is the cheapest tier-S option by a wide margin. Typical Whittl operations cost $0.005–$0.02 — about 1/10th of Claude Sonnet pricing for comparable code quality on Python-heavy work.
The catch: vision isn't available through the direct DeepSeek API backend, so screenshot-to-app workflows need to route through OpenRouter → DeepSeek-VL2 instead.
Getting a key¶
- Go to platform.deepseek.com.
- Sign up.
- Add credit — $5 minimum, lasts a long time on DeepSeek's pricing.
- API Keys → create a key (starts with
sk-).
Add it in Whittl via Edit → Preferences → API Keys → DeepSeek API Key.
Picking a model¶
DeepSeek V3.2¶
The latest. Best-quality DeepSeek available.
- Strong on: Python code generation, tool use, reasoning
- Context: 64K tokens
- Cost: approximately $0.27/M input + $1.10/M output (check api-docs.deepseek.com for current)
DeepSeek V3¶
Older but still solid. Slightly cheaper than V3.2.
DeepSeek-Coder¶
Fine-tuned specifically for code. Sometimes better than V3.2 on niche code tasks, usually same or slightly behind on general prompts. Not routed through Whittl by default — pick via the model dropdown if you want to experiment.
Prefix caching¶
DeepSeek automatically caches identical prompt prefixes and discounts them ~70-80% on subsequent requests. Similar to Gemini Flash's automatic caching but with different rules:
- DeepSeek caches by prefix hash. Identical 4KB+ blocks at the start of prompts get cached.
- Cache duration: short-lived (~5 minutes without use). Rapid iterations benefit most.
- Visible savings: Whittl's
[TOKENS]log showscached_tokens: Nwhen caching fires.
In practice: rapid iteration on one project gets cheap very fast.
Vision limitations¶
The DeepSeek direct API backend does not support vision. If you attach a screenshot while DeepSeek is selected, Whittl surfaces a warning and drops the image.
Workaround: use OpenRouter as the backend and pick deepseek/deepseek-vl2 explicitly. That's a separate DeepSeek vision model routed through OpenRouter. Slightly more expensive than text-only DeepSeek but cheaper than Claude Haiku for vision work.
Rate limits¶
DeepSeek's rate limits are generous but can fluctuate during peak hours:
- No-credit account: severely restricted
- Funded account ($5+): typical 30-60 requests/min
- Peak hours (US evening, China business hours): occasional 429 rate-limit errors
Whittl retries automatically with backoff. If peak-hour latency bothers you, keep a fallback backend configured (OpenRouter + Claude Haiku is a common pair).
Tool use¶
V3.2 handles Whittl's tool-use path cleanly — edit_code, syntax_check, create_file, run_code all fire correctly. Surgical edit mode works the same as on Claude, just faster and cheaper per round.
Agent Mode unbounded tool loops are supported on V3.2 (tier-S classification). V3 is tier-A (capped at 20 rounds in Agent Mode).
DeepSeek pricing¶
Lean on prefix caching¶
Work in short bursts on one project. Rapid-fire prompts within a 5-minute window benefit most from the cache. If you come back 15 minutes later, you've lost it.
V3 vs V3.2¶
V3 is cheaper than V3.2 per token. For small edits where V3 quality is fine, V3 saves a small percentage. For hard tasks, V3.2 is worth the premium.
Combine with free OpenRouter models for mixed work¶
Some users: DeepSeek V3.2 for hard code tasks, OpenRouter free-tier Qwen for throwaway experiments. Two backends, both budget-tier, covering different needs.
When NOT to use DeepSeek¶
- You need vision. Go via OpenRouter with a vision model, or use Gemini/Claude.
- You need the absolute highest code quality. Claude Sonnet remains a step ahead on complex architectural tasks.
- You need long context (100K+). DeepSeek tops out at 64K; use Gemini Pro for anything larger.
- You're concerned about hosting region. DeepSeek runs in China; if that's a compliance issue for you, pick another backend.
Troubleshooting¶
Unexpected response format from DeepSeek
Rare but real — sometimes DeepSeek's API returns a malformed response during heavy load. Whittl surfaces this as "DeepSeek: Unexpected response format." Retry the request; usually works on the second try.
Attached image was silently dropped
DeepSeek direct doesn't support vision. Switch to OpenRouter with deepseek/deepseek-vl2 or use a different backend.
Rate-limited despite having credit
Heavy load on DeepSeek's side. Wait a minute or switch backends temporarily.
Chinese-language output when I wrote English
Extremely rare, usually a transient API routing issue. Retry; if persistent, restart the Whittl session.
What's next¶
- Choosing a Backend — where DeepSeek fits in the comparison
- Screenshot to App — note that you'll route through OpenRouter for this
- OpenRouter — alternative path to DeepSeek + vision support