ai newsMo., 19. Okt.
EilmeldungOne Repo, Two Rulebooks: Nested AGENTS.md for Codex, Subfolder CLAUDE.md for Claude Code

DeepSeek V4.1-Flash-1017 Is Live Under the Same Name: First Call, Ignored temperature, and the Nov 1 Search Bill

Attributed compile + two small offline scripts Primary sources (DeepSeek, 2026-10-17): DeepSeek-V4.1-Flash-1017: Wish-Driven Programming Made Real (and the Chinese version ); the Hugging Face model card ; DeepSeek API docs: Your First API Call , Models & Pricing , Thinking Mode , Search & Fetch . C

dev.toMontag 15:27 · 19.10.6 Min. Lesezeit
Bild: dev.to

Posted on Oct 19 • Originally published at yongboyu.hashnode.dev

Attributed compile + two small offline scripts Primary sources (DeepSeek, 2026-10-17): DeepSeek-V4.1-Flash-1017: Wish-Driven Programming Made Real (and the Chinese version ); the Hugging Face model card; DeepSeek API docs: Your First API Call, Models & Pricing, Thinking Mode, Search & Fetch. Community reports (Chinese, 2026-10-17 to 10-19): V2EX thread deepseek-v4.1-flash-1017 发布了 (started by ifpelset); 程序员天天困, DeepSeek-V4.1-Flash-1017 上手实测:3D 直出,效果到底如何 (Alibaba Cloud Developer Community); Ai学习的老章, 关于 DeepSeek-V4.1-Flash-1017 的 10 句大实话 (woshipm). I have not called the DeepSeek API (no key on this box) or run the weights. The scripts below check request settings and do price math using the published rules.

On October 17 DeepSeek swapped the model behind deepseek-flash to DeepSeek-V4.1-Flash-1017. Website, app and API all switched at once — same name, no opt-in. Weights are on Hugging Face under MIT (HF lists 763B params). The API has a 1M context, up to 384K output, vision, tool calls, JSON, and OpenAI- plus Anthropic-format endpoints.

DeepSeek's own table (harness-dependent): DeepSWE v1.1 74.2 → 77.0 (Mini-SWE-V2), Terminal-Bench 4.0 31.2 → 42.3 (Claude Code). They also claim shorter outputs and faster tasks. Chinese forums lit up. This post skips the leaderboard and covers what changes for code that already calls deepseek-flash.

A V2EX commenter asked how to tell whether they're on 1017 or a gradual rollout, given the shared name. Another replied it's officially out, so there's only one Flash. The docs agree: deepseek-flash "is now served by DeepSeek-V4.1-Flash-1017". Legacy names deepseek-v4-flash and deepseek-v4-flash-vision-exp still work but are retired — they hit 1017 at the Flash price.

import os from openai import OpenAI client = OpenAI ( api_key = os. environ [ " DEEPSEEK_API_KEY " ], base_url = " https://api.deepseek.com " ) r = client. chat. completions. create ( model = " deepseek-flash ", messages = [{ " role ": " user ", " content ": " Find the bug: def avg(xs): return sum(xs) / len(xs) " }], reasoning_effort = " high ", extra_body = { " thinking ": { " type ": " enabled " }}, ) print ( r. choices [ 0 ]. message. reasoning_content ) print ( r. choices [ 0 ]. message. content ) Enter fullscreen mode Exit fullscreen mode (I didn't run this. I don't have a key.)

The traps are in the Thinking Mode guide:

runs/21-deepseek-flash-1017/lint_request.py encodes those rules as an offline pre-flight check. Actual output:

[old eval config] WARN model 'deepseek-v4-flash' is retired; served by V4.1-Flash-1017 at Flash price. Use 'deepseek-flash'. WARN temperature is silently ignored in thinking mode. WARN top_p 0.9 is treated as 0.95 in thinking mode. [medium effort] INFO reasoning_effort 'medium' maps to 'high'. [agent loop, dropped CoT] ERROR messages assistant turn lacks reasoning_content; with tools this returns HTTP 400. [agent loop, CoT kept] OK [non-thinking classifier] WARN top_p is fixed at 1.0 in non-thinking mode on deepseek-flash. Enter fullscreen mode Exit fullscreen mode If you need a deterministic classifier, use {"thinking": {"type": "disabled"}} and don't rely on top_p. The simplest fix for the 400: append response.choices.message as-is (DeepSeek's own sample).

From Models & Pricing, Flash per 1M tokens at peak is $0.006 for cache hits, $0.30 for cache misses and $1.20 for output (Pro: $0.044 / $1.32 / $3.96). Off-peak is half. Peak hours are 01:00–04:00 and 06:00–10:00 UTC, Monday to Friday, and Chinese public holidays are off-peak all day.

Those windows are set around Beijing working hours. peak_cost.py converts them to Toronto time (it ignores holidays). Actual output:

Week of Mon 2026-10-19 (EDT, UTC-4) -> PEAK hours in Toronto local time Mon 10-19: 02:00-06:00, 21:00-00:00... Fri 10-23: 02:00-06:00 Sun 10-25: 21:00-00:00 Toronto Mon-Fri 09:00-17:00 hours at peak: 0/40 Week of Mon 2026-11-02 (EST, UTC-5) -> PEAK hours in Toronto local time Mon 11-02: 01:00-05:00, 20:00-23:00... Toronto Mon-Fri 09:00-17:00 hours at peak: 0/40 Enter fullscreen mode Exit fullscreen mode So for Eastern-time teams, the whole working day is off-peak. Peak hits your nightly batch jobs: weekday evenings from 9 PM (8 PM after the Nov 1 clock change), Sunday evening, and the early morning. Move your cron jobs, not your standups.

Cost per turn, using the same example agent turn as my Muse Spark Open post (60K input with 50K from cache, 4K output including reasoning):

model peak $/turn off $/turn peak $/1k off $/1k deepseek-flash 0.00810 0.00405 8.10 4.05 deepseek-v4-pro 0.03124 0.01562 31.24 15.62 deepseek-flash peak, zero cache hits: 0.02280/turn (22.80/1k) Enter fullscreen mode Exit fullscreen mode Cache hits matter more than the time of day: losing the cache costs ~2.8× at peak, while peak only doubles the bill. Keep the system prompt and tool schemas byte-stable at the front of the prompt.

The same release opened DeepSeek's Search ( POST /v1/tools/search ) and Fetch ( POST /v1/tools/fetch ) APIs to everyone, at $0.75 per 1,000 successful requests each. Billing rules from the guide: you only pay for HTTP 200 with a non-empty result, failed calls and timeouts are free, and count (1–50) doesn't change the price. Limits are 100 QPS for Search and 25 QPS for Fetch, per account.

The important detail: if you use the DeepSeek API through DeepSeek Harness, Claude Code or Codex, the server-side tool calls already hit these APIs, and they're free only until 00:00 Beijing time on Nov 1. peak_cost.py converts that: 2026-10-31 16:00 UTC = 2026-10-31 12:00 EDT (Toronto).

The per-task comparison is the surprise:

task with 3 search + 5 fetch: tools $0.00600 vs one off-peak flash turn $0.00405 -> tools = 1.5x the model turn task with 10 search + 20 fetch: tools $0.02250 vs one off-peak flash turn $0.00405 -> tools = 5.6x the model turn Enter fullscreen mode Exit fullscreen mode Tokens are so cheap that a research-heavy agent's web calls can cost more than the model. Before Nov 1, log Search/Fetch per task. Since price doesn't depend on count, one search with a larger count (and need_content: true when snippets aren't enough) may replace several narrow ones — I haven't verified the savings.

The model card says there's no Jinja chat template. Use the shipped encoding.py or deepseek-recipe Rust bindings, with temperature 1.0, top_p 1.0, and max_tokens ≥ 256K.

程序员天天困 had 1017 build four 3D projects that all ran and none fully met his bar — his rule is tests, a read of the diff, and a manual try before merge. 老章 likes it for coding/agents but also reports long runtimes and higher-than-expected cost on some tasks. I did not call the API, measure output length vs the old Flash, reproduce any benchmark, check whether a response reports the 1017 version, evaluate Search/Fetch quality, or run the weights.

When a model name is an alias, an upgrade is a deploy you didn't schedule. Lint request settings against the current docs, re-run evals when the alias moves, and price the tool calls as well as the tokens.

YongBo Yu is an AI engineer in Toronto building LLM workflows and agent systems. More at yongbo-yu.vercel.app and GitHub.

Quelle: dev.to (dev.to). Original öffnen