Skip to content

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

  1. Go to platform.deepseek.com.
  2. Sign up.
  3. Add credit — $5 minimum, lasts a long time on DeepSeek's pricing.
  4. API Keys → create a key (starts with sk-).

Add it in Whittl via Edit → Preferences → API KeysDeepSeek 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 shows cached_tokens: N when 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