Migration auf DeepSeek V4.1 Flash 1017: Der reasoning_content-400-Fehler, der stille Alias-Wechsel und die Peak-Hour-Abrechnung

AIHubMix9 Min. Lesezeit
Migration auf DeepSeek V4.1 Flash 1017: Der reasoning_content-400-Fehler, der stille Alias-Wechsel und die Peak-Hour-Abrechnung

Bei den meisten Migrationen ändert man zuerst den Modellnamen. DeepSeek V4.1 Flash 1017 ging den umgekehrten Weg: Am 17. Oktober 2026 behielt DeepSeek den Namen deepseek-flash bei und tauschte das Modell dahinter aus. Wer deepseek-flash, deepseek-v4-flash oder deepseek-v4-flash-vision-exp über die API von DeepSeek aufruft, wurde ohne Änderung einer einzigen Codezeile auf das neue Modell umgestellt.

Auf AIHubMix hat der neue Checkpoint eine eigene ID, deepseek-v4.1-flash-1017, sodass du selbst entscheiden kannst, wann du umstellst. In jedem Fall solltest du diese Probleme prüfen:

Problem Auswirkung Wo du es bemerkst
reasoning_content wird nicht zurückgesendet Laut 400 nach dem ersten Tool-Aufruf
Modell unter demselben Namen ausgetauscht Still Ausgabelänge, Formate, Eval-Werte
Preise zur Spitzenzeit Still Rechnung verdoppelt sich in den Spitzenzeiten werktags
Effort standardmäßig auf max gesetzt Still Agent-Läufe dauern 1,6–1,8× länger
Thinking zählt zu max_tokens Beides Abgeschnittene Antworten
Abrechnung für Search und Fetch Still Ab 31. Okt., 16:00 UTC

AIHubMix hat am 19. Oktober 2026 (03:02 UTC) eine kurze Reihe von Testanfragen an deepseek-v4.1-flash-1017 gesendet. Die Ergebnisse dieses Durchlaufs sind unten entsprechend gekennzeichnet.

1. Der 400-Fehler, der Tool-Schleifen unterbricht

Was du siehst. Die zweite Anfrage nach einem Tool-Aufruf schlägt mit HTTP 400 und dieser Meldung fehl, wie in einem GitHub-Issue zu opencodex für V4.1 Flash vom 15. Oktober berichtet wurde:

[invalid_request_error] The `reasoning_content` in the thinking mode must be passed back to the API.

Derselbe Text taucht in früheren Berichten zu opencode, LangChain und claude-code-router für V4 Pro und V4 Flash auf.

Warum. Der Leitfaden zum Thinking-Modus von DeepSeek besagt, dass bei einer Anfrage mit tools das reasoning_content jeder früheren Assistenten-Antwort zurückgesendet werden muss, „auch für Antworten, bei denen das Modell keinen Tool-Aufruf ausgeführt hat“. Andernfalls „gibt die API einen 400-Fehler zurück“. Ohne Tools ist das Zurücksenden optional und wird ignoriert. Clients stolpern meist deshalb, weil ihr Nachrichten-Serializer content und tool_calls beibehält, das zusätzliche Feld aber verwirft.

Die Anfrage, die den Fehler auslöst. Zweiter Schritt einer Tool-Schleife, wobei die Assistenten-Nachricht ohne reasoning_content gesendet wird:

curl -s https://aihubmix.com/v1/chat/completions \
  -H "Authorization: Bearer $AIHUBMIX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-v4.1-flash-1017",
    "tools": [{"type": "function", "function": {"name": "get_weather",
      "parameters": {"type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"]}}}],
    "messages": [
      {"role": "user", "content": "What is the temperature in Hangzhou? Use the tool."},
      {"role": "assistant", "content": null, "tool_calls": [{"id": "call_00_example", "type": "function",
        "function": {"name": "get_weather", "arguments": "{\"city\": \"Hangzhou\"}"}}]},
      {"role": "tool", "tool_call_id": "call_00_example", "content": "{\"celsius\": 18}"}
    ]
  }'

Bei der eigenen API von DeepSeek ist dies die Form, die in den öffentlichen Berichten den 400-Fehler auslöst. Über AIHubMix lieferte dieselbe Form im Testdurchlauf vom 19. Oktober HTTP 200 und eine normale Antwort. Das war ein einzelner Durchlauf, also verlass dich nicht darauf als Garantie.

So behebst du es. Behalte das Feld bei, egal welchen Weg du nutzt:

msg = resp.choices[0].message
messages.append(msg)  # carries content, reasoning_content, and tool_calls over
  • Hänge in deinem eigenen Code die gesamte Assistenten-Nachricht an, nicht eine selbst gebaute Kopie davon.
  • Bei Frameworks hilft ein Update: opencode hat den Roundtrip in späteren Versionen behoben, und opencodex hat seine Korrektur am 16. Oktober zusammengeführt.
  • Als letzte Möglichkeit kannst du für Tool-Schleifen {"thinking": {"type": "disabled"}} setzen. Das vermeidet den Fehler, verzichtet aber auf das Reasoning, das das Modell bei Agent-Aufgaben stark macht.

2. Derselbe Name, ein anderes Modell

Das Changelog von DeepSeek vom 17. Oktober sagt es klar: „Die Art des API-Aufrufs und die Preise bleiben unverändert – verwende einfach deepseek-flash, um auf das neueste Modell zuzugreifen.“ Für den September-Checkpoint gibt es keinen festen Namen, und die beiden älteren Flash-Namen laufen jetzt ebenfalls auf 1017.

Es gibt keine Fehlermeldung, aber drei Dinge können sich verschieben:

  • Ausgabelänge. 1017 wurde darauf trainiert, kürzere Ausgaben zu erzeugen. Parser, UI-Layouts und Prompts, die die langen Erklärungen des September-Modells erwarteten, erhalten unter Umständen weniger Text als zuvor.
  • Evaluations-Baselines. Ergebnisse und Kosten, die du für den September-Checkpoint erfasst hast, beschreiben nicht mehr, was deepseek-flash zurückliefert.
  • Verhalten. DeepSeek hat 1017 für End-to-End-Projektarbeit nachtrainiert. Agenten gehen unter Umständen andere Wege zum selben Ergebnis.

Was zu tun ist. Erfasse Modell und Datum bei jedem Evaluationslauf und führe jetzt deinen Regressionstest erneut aus. Die Antwort zeigt, welcher Checkpoint geantwortet hat: Im Test vom 19. Oktober enthielt jede Antwort über AIHubMix "model": "deepseek-v4-1-flash-261017". Protokolliere dieses Feld, dann wird ein unangekündigter Tausch an dem Tag sichtbar, an dem er passiert.

3. Abrechnungsregeln, die leicht übersehen werden

Spitzen- und Nebenzeiten. DeepSeek berechnet werktags von 01:00–04:00 und 06:00–10:00 UTC den vollen Preis und zu allen anderen Zeiten, an Wochenenden und an chinesischen Feiertagen den halben Preis. AIHubMix folgt denselben Zeitfenstern und berechnet jede Anfrage zum Zeitpunkt ihrer Absendung. Ein langer Streaming-Request, der außerhalb der Spitzenzeit beginnt, bleibt also außerhalb der Spitzenzeit.

Posten Spitze Nebenzeit
Input, Cache-Miss $0.3098 $0.155
Input, Cache-Hit $0.0062 $0.0031
Output $1.2392 $0.62

AIHubMix-Listenpreise pro 1 Mio. Tokens für deepseek-v4.1-flash-1017. Zusätzlich läuft ein zeitlich begrenzter Rabatt von 30%.

Cache-Hits sind 50-mal günstiger als Misses. Agenten senden bei jedem Aufruf denselben System-Prompt, dieselben Tool-Definitionen und denselben Verlauf erneut. Halte dieses Präfix stabil, setze alles, was sich pro Aufruf ändert, ans Ende, und den größten Teil jeder Anfrage rechnest du zum Cache-Hit-Preis ab.

Thinking wird als Output berechnet. Thinking ist standardmäßig aktiviert, und Reasoning-Tokens zählen sowohl zur Rechnung als auch zu max_tokens.

Search und Fetch. DeepSeek hat am 17. Oktober seine neuen Search- und Fetch-APIs mit je 0,75 $ pro 1.000 erfolgreichen Aufrufen eröffnet. Serverseitige Aufrufe über DeepSeek Harness, Claude Code oder Codex auf der API von DeepSeek sind bis zum 31. Oktober 2026, 16:00 UTC, kostenlos. Danach kommen bei einem Agenten, der in jedem Schritt sucht, zusätzlich zu den Tokens Kosten pro Aufruf hinzu.

Was es in Summe ausmacht. Unter den genannten Annahmen (40 Aufrufe, 1,2 Mio. Input-Tokens mit 90% Cache-Hits, 60.000 Output-Tokens) kostet eine Agent-Sitzung zu AIHubMix-Listenpreisen 0,118 $ zur Spitzenzeit und 0,059 $ zur Nebenzeit. Batch-Läufe in die Nebenzeit zu verlegen, bringt die mit Abstand größte Einsparung.

4. Einstellungen, die mehr kosten, als sie bringen

Effort. Die API bietet low, high (Standard) und max. DeepSeeks Paper zu V4.1 Flash ordnet diesen Stufen interne Effort-Werte von 50, 75 und 100 zu und berichtet, dass der Schritt zu max „Agent-Trajektorien nur für geringfügige Verbesserungen um das 1,6–1,8-Fache verlängert“. Der eigene Einrichtungsleitfaden von DeepSeek für Claude Code setzt weiterhin CLAUDE_CODE_EFFORT_LEVEL=max. Für die alltägliche Agent-Arbeit ist high der bessere Standard.

DeepSeek bildet außerdem andere Effort-Namen auf seine drei Stufen ab: minimal wird zu low, während medium und xhigh beide zu high werden. Ein Tool, das fünf Stufen anbietet, liefert dir damit faktisch zwei oder drei. Im Test vom 19. Oktober akzeptierte AIHubMix low, high und max bei Chat Completions.

max_tokens. Die Model Card empfiehlt mindestens 256K für lange Agent-Läufe, weil Thinking das Ausgabebudget mit nutzt. Bei einem kleinen Limit kann ein schwieriger Schritt das gesamte Budget für das Nachdenken verbrauchen. Prüfe auf finish_reason: "length".

Sampling-Parameter. Im Thinking-Modus werden temperature, presence_penalty und frequency_penalty ohne Fehler akzeptiert, haben aber keine Wirkung. top_p wird auf 0,95–1,0 begrenzt. Wenn eine Pipeline für deterministische Ausgaben auf eine niedrige Temperature angewiesen war, bekommt sie diese nun nicht mehr.

5. Agenten mit echten Berechtigungen

1017 wurde mit Reinforcement Learning auf ganze Projekte trainiert, daher neigt es dazu, weiterzuarbeiten, bis die Aufgabe fertig aussieht. Seine Antworten sind außerdem kürzer, was weniger Erläuterung darüber bedeutet, was es geändert hat. Zwei Gewohnheiten helfen:

  • Prüfe Diffs und Befehlsprotokolle, nicht die Zusammenfassung des Modells davon.
  • Lass es in einer Sandbox mit einer Allowlist für Befehle laufen und verlange eine Freigabe für alles Destruktive (Löschen, Force-Pushes, Migrationen, ausgehende Netzwerkaufrufe).

DeepSeek selbst weist auf die Stärke der Flash-Linie bei Sicherheitsaufgaben hin; der September-Checkpoint erreichte in DeepSeeks eigener Tabelle 88,1 bei CyberGym. Das ist nützlich für defensive Arbeit und ein weiterer Grund, seine Berechtigungen eng zu begrenzen.

6. Coding-Tools

AIHubMix stellt deepseek-v4.1-flash-1017 über alle drei Protokolle bereit, die die Coding-Tools benötigen. Im Test vom 19. Oktober lieferten Chat Completions, Anthropic Messages (einschließlich eines Tool-Aufrufs über zwei Runden) und die Responses API jeweils 200.

Claude Code (Anthropic Messages). Richte es wie im Claude-Code-Leitfaden auf AIHubMix aus und setze das Modell:

export ANTHROPIC_BASE_URL="https://aihubmix.com"
export ANTHROPIC_AUTH_TOKEN="$AIHUBMIX_API_KEY"
export ANTHROPIC_MODEL="deepseek-v4.1-flash-1017"
export ANTHROPIC_DEFAULT_HAIKU_MODEL="deepseek-v4.1-flash-1017"
export CLAUDE_CODE_SUBAGENT_MODEL="deepseek-v4.1-flash-1017"
export CLAUDE_CODE_EFFORT_LEVEL="high"
  • Thinking: Im Test kam eine Messages-Anfrage ohne Effort-Einstellung ohne Thinking-Block zurück, während eine mit output_config.effort Thinking lieferte. Setze deshalb immer eine Effort-Stufe, damit 1017 nachdenkt, und prüfe die Request-Protokolle.
  • Kontext: Der Leitfaden von DeepSeek hängt für den eigenen Endpunkt das Suffix [1m] an den Modellnamen an; dieses Suffix wurde über AIHubMix nicht getestet.
  • Bekanntes Problem: Über manche Router hat Claude Code Thinking-Inhalte verworfen und den oben genannten 400-Fehler ausgelöst (claude-code-router Issue 1378). Der Zwei-Runden-Tool-Test über den Messages-Endpunkt von AIHubMix ist darauf nicht gestoßen.

Codex (Responses API). Folge dem Codex-CLI-Leitfaden: ein Provider aihubmix mit base_url = "https://aihubmix.com/v1" und wire_api = "responses" sowie model = "deepseek-v4.1-flash-1017". Damit du es über /model auswählen kannst, füge es einer Datei model_catalog_json hinzu, bei der context_window auf 1.000.000 gesetzt ist.

  • Effort: Das Katalog-Skript des Leitfadens bietet low, medium und high an. Nach DeepSeeks Zuordnung landen medium und high beide auf DeepSeeks high, sodass du tatsächlich nur zwei echte Stufen hast.
  • Bekanntes Problem: Neuere Codex-Versionen verwerfen den gesamten Katalog, wenn ein einziges Pflichtfeld fehlt. Das Skript des Leitfadens verhindert das.

DeepSeek Harness (Chat Completions). DeepSeek sagt, dass 1017 am besten mit Harness 0.2.1-rc.1 oder neuer funktioniert. Füge AIHubMix nach dem Leitfaden zu DeepSeek Harness als OpenAI-kompatiblen Provider hinzu und ergänze deepseek-v4.1-flash-1017 als Modell. Dieser Leitfaden wurde für eine frühere Harness-Version geschrieben, prüfe also die Feldnamen, falls sich die Oberfläche geändert hat.

Ein 15-minütiger Smoke-Test. Erstelle ein kleines Repository mit einem fehlschlagenden Test:

mkdir flash-smoke && cd flash-smoke && git init -q
printf 'def mean(xs):\n    return sum(xs) / len(xs)\n' > stats.py
printf 'from stats import mean\n\ndef test_mean():\n    assert mean([1, 2, 3]) == 2\n\ndef test_empty():\n    assert mean([]) == 0\n' > test_stats.py

Starte dein Tool in diesem Ordner und frag: „Führe pytest aus, behebe den fehlschlagenden Test, indem du nur stats.py änderst, und führe danach pytest erneut aus.“ Der Test gilt als bestanden, wenn:

  • der Agent mindestens zwei Tool-Aufrufe ausführt (Tests laufen lassen, Datei bearbeiten), ohne dass ein 400-Fehler auftritt;
  • am Ende beide Tests bestehen;
  • Das AIHubMix-Anfrageprotokoll zeigt deepseek-v4.1-flash-1017, und die Sitzung kostet höchstens ein paar Cent.

Migrations-Checkliste

  • Modell-ID festlegen: deepseek-v4.1-flash-1017 auf AIHubMix.
  • Bei Tool-Schleifen ganze Assistant-Nachrichten anhängen, damit reasoning_content in jedem Durchlauf zurückgesendet wird.
  • Regressions- und Evaluierungssatz erneut ausführen; Modell, Datum und das Feld response model festhalten.
  • Parser und UIs auf kürzere Ausgaben prüfen.
  • Effort standardmäßig auf high setzen; max für die schwierigsten Aufgaben reservieren.
  • max_tokens für Agent-Durchläufe erhöhen und bei finish_reason length eine Warnung auslösen.
  • Annahmen zu temperaturbasierter Determinismus im Thinking-Modus entfernen.
  • Batch- und nächtliche Agent-Läufe außerhalb der Spitzenzeiten planen.
  • Prompt-Präfixe stabil halten, damit Cache-Treffer entstehen.
  • Search- und Fetch-Aufrufe ab dem 31. Oktober einplanen, falls du die serverseitigen Tools von DeepSeek nutzt.
  • Agenten mit echten Berechtigungen in einer Sandbox betreiben und Diffs statt Zusammenfassungen prüfen.
  • Den 15-minütigen Smoke-Test in jedem Coding-Tool durchführen, das du nutzt.

FAQ

Muss ich Code ändern, um DeepSeek V4.1 Flash 1017 zu nutzen?
Über die API von DeepSeek nicht: deepseek-flash verweist bereits auf 1017. Auf AIHubMix ändere den Modellnamen in deepseek-v4.1-flash-1017.

Warum erhalte ich einen 400-Fehler zu reasoning_content?
DeepSeek verlangt, dass das reasoning_content jeder früheren Assistant-Nachricht zurückgesendet wird, wenn eine Anfrage Tools enthält. Clients, die dieses Feld weglassen, scheitern beim Aufruf nach dem ersten Tool-Aufruf.

Tritt der 400-Fehler zu reasoning_content auch über AIHubMix auf?
Bei AIHubMix trat er im Testlauf vom 19. Oktober 2026 nicht auf: Eine Runde ohne reasoning_content lieferte 200. Sende das Feld trotzdem weiterhin, denn es ist die dokumentierte Regel von DeepSeek.

Kann ich das September-V4.1-Flash weiterhin über die API von DeepSeek nutzen?
Nein. DeepSeek hat deepseek-flash und die älteren Flash-Namen auf 1017 umgestellt und bietet keinen festen Namen für den September-Checkpoint an.

Wann ist DeepSeek V4.1 Flash günstiger?
Außerhalb von 01:00 bis 04:00 und 06:00 bis 10:00 UTC an Werktagen. Zu allen anderen Zeiten, an Wochenenden und an chinesischen Feiertagen kostet es die Hälfte.

Welche Effort-Stufe sollten Coding-Agents verwenden?
High, die Standardeinstellung. Laut dem eigenen Paper von DeepSeek verlängert max die Agent-Läufe um das 1,6- bis 1,8-Fache, bringt aber nur geringe Verbesserungen.

Funktioniert 1017 über AIHubMix in Claude Code und Codex?
Ja. AIHubMix stellt es über die Anthropic-Messages- und Responses-Protokolle bereit, die diese Tools verwenden, und beide haben am 19. Oktober 2026 einen grundlegenden Test bestanden.

Weiterlesen: die Reihe zu DeepSeek V4.1 Flash 1017

Quellen