Repository navigation
fix: default model deepseek/deepseek-v4.1-flash-1017 (deepseek-reasoner is not on NanoGPT) - #24
Merged
Merged
Conversation
mikkel
marked this pull request as ready for review
October 22, 2026 00:17
This was referenced Oct 22, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Bug
This is the companion to 255BITS/patchling#11, where the JS 0.3.0 default
xiaomi/mimo-v2.5-pro-ultraspeedis retired and returns HTTP 410. That retired id doesn't appear anywhere in this repo. But the Python default,DEFAULT_MODEL = "deepseek-reasoner", has the same failure mode: it is not listed on NanoGPT, which is the defaultGPTDIFF_LLM_BASE_URL. Sogenerate_diff/smartapply/the CLI break wheneverGPTDIFF_MODELis unset and no model is passed.Fix
The default is now
deepseek/deepseek-v4.1-flash-1017, the same id as the JS PR.Why this model: Mikkel asked for DeepSeek V4.1, the 1017 release. In NanoGPT's free
GET https://nano-gpt.com/api/v1/models?detailed=truelisting (fetched 2026-10-21 13:03 MT):deepseek/deepseek-v4.1-flash-1017("DeepSeek V4.1 Flash 1017", the October 17, 2026 snapshot) is listed at $0.10 / $0.60 per 1M input/output tokens, with a 1,048,576 context and 393,216 max output tokens. It is the only id that names the 1017 release with standard serving.deepseek/deepseek-v4.1-flash-1017:thinking(same price, thinking always on) and asTEE/deepseek-v4.1-flash(secure-enclave serving, $0.65 / $1.45). The undateddeepseek/deepseek-v4.1-flashis a rate-limited beta.xiaomi/mimo-v2.5-pro-ultraspeed(JS) anddeepseek-reasoner(Python).An earlier commit on this branch used
xiaomi/mimo-v2.6-pro. The latest commit replaces it everywhere.Changes
patchling/env.py:DEFAULT_MODELand its comment. The old comment said the JS default differed; now they match.gemini-3-pro-preview),docs/api.md×2,docs/cli.md×2, and thecore.pydocstring.bench/relevance/run.pyfallback diff model follows the new default.tests/test_default_model.py: the default isdeepseek/deepseek-v4.1-flash-1017, neither retired id is the default, andresolve_model(None)withGPTDIFF_MODELunset returns it.tests/test_public_api.pyis updated to the new id.CHANGELOG.mdwith an Unreleased note. The repo had no changelog.Unchanged on purpose:
filter_relevant's default,xiaomi/mimo-v2.6-flash, is still listed."deepseek-reasoner"as an arbitrary model string are left as is.--model deepseek-reasonerexplicitly (docs/examples/*) are left alone, though those examples would also fail on NanoGPT. Same for the model-recommendation tables and the quickstart, which still recommendgemini-3-pro-preview(and the quickstart still calls it the default). These are worth a separate docs pass.No version bump, tag, or publish.
Tests (local)
pytest, offline with a cold tiktoken cache and the
fake_tiktokenstub: 207 passed, 2 skipped. Main has 204 passed, 2 skipped, so the difference is the 3 new tests.mkdocs build --strictpasses.Live smoke (one call, authorized by Mikkel)
One tiny
generate_diffcall through the default path: nomodelargument,GPTDIFF_MODELunset, the default NanoGPT base URL, andmax_tokens400. The task was a one-line edit (hello→hi).deepseek/deepseek-v4.1-flash-1017, HTTP 200.-hello/+hi).