Models & Research

DeepSeek-V4.1-Flash-1017: Terminal-Bench 4.0 climbs from 31.2 to 42.3, at 763 billion parameters under MIT

3 min read AI-generated

The release ships no Jinja-format chat template. In its place come a Python reference implementation and a set of Rust libraries with Python bindings.

Featured image for "DeepSeek-V4.1-Flash-1017: Terminal-Bench 4.0 climbs from 31.2 to 42.3, at 763 billion parameters under MIT"

DeepSeek shipped V4.1-Flash-1017 on Saturday afternoon, an interim release of its Flash model. It was announced in a series of posts on X, with the claim that the update brings stronger benchmark performance, faster task completion and shorter outputs than the previous version. The model is live on the web, in DeepSeek’s app and on its developer platform. The weights sit on Hugging Face under the MIT license, the model has 763 billion parameters and a one-million-token context window.

The numbers from the model card

The biggest jump is on agentic work. Terminal-Bench 4.0 goes from 31.2 to 42.3, ProgramBench from 20.3 to 29.1, Apex Bench v1.1 from 64.6 to 72.1. Humanity’s Last Exam without tools rises from 36.8 to 42.6. DeepSWE v1.1 climbs from 74.2 to 77.0, which puts it above the figure DeepSeek lists for Claude Opus 5 (74.0). Opus 5 stays ahead on NL2Repo-Bench at 75.3 against 68.2, on ProgramBench at 37.0 against 29.1, and on Terminal-Bench 4.0 at 51.8 against 42.3.

What the numbers were measured with is worth a line of its own. DeepSeek took its Terminal-Bench score inside the Claude Code harness and its DeepSWE score in the Mini-SWE-V2 harness. The previous release, V4.1-Flash, had squeezed the KV cache down to 890 bytes per token, and the citation block on the new card still carries the title “Pushing the Limits of KV Cache Compression.”

No chat template, but a Rust library

For integration DeepSeek did something unusual. The release ships no Jinja-format chat template. Instead the encoding folder holds a self-contained Python reference implementation with test cases for multi-turn conversations, tool calling, thinking mode, numeric reasoning effort, mid-conversation system messages and interleaved images.

For production use there is deepseek-recipe, a set of Rust libraries with Python bindings. It takes requests in Messages API, Chat Completions and Responses API shapes, converts them into one Conversation format, and encodes them into V4 and V4.1 prompts or token IDs. It parses output back, complete or streamed, covering thinking, tool calls, images and generation settings. Inference, tool execution and HTTP transport stay with the caller. For sampling, DeepSeek recommends temperature 1.0, top_p 1.0 and at least 256K output tokens.

Measured in a competitor’s harness

A Chinese lab taking its agent scores inside the Claude Code harness, and writing that into the model card, is the real subordinate clause of this release. The harness is the yardstick now, not just a tool, and anyone who benchmarks there has accepted a competitor’s working environment as the standard.

Practically, the picture is the familiar one for Flash models: on repository work from a task description it gets close to Opus 5 and passes it on one benchmark, while long terminal chains still leave a gap of nearly ten points. All of it under the MIT license, which matters to anyone who can run 763 billion parameters themselves.

Sources

DeepSeekModelsOpen WeightsBenchmarksCoding