目次
公式 DeepSeek API を思考モードかつツール呼び出しありで使うとき、素の 400 はツール定義の誤りより、履歴の欠落を疑う場面が多いです。DeepSeek の Thinking Mode ガイドは明確です。リクエストに tools があるとき、過去ターンの reasoning_content を後続のすべてのリクエストで完全に戻さなければなりません。意図的に削る場合も、content だけ残すストア/プロキシ/シリアライザ経由で落ちる場合も、API は呼び出しを拒否します。以下は北京時間 2026 年 10 月 26 日時点の同ガイドに沿った整理です。参考情報として;当サイトではこの失敗を実測再現しておらず、修正も検証していません。 フィードバックは、フッターのサイト管理者連絡先から送れます。
症状:思考モード+ tools で 400
DeepSeek の Chat Completions では思考モードが既定で有効です。モデルはまず思考過程を出し、その後に最終回答を出します。両者はアシスタントメッセージ上の兄弟フィールド、reasoning_content と content として届きます。
あわせて tools 配列を渡すと、DeepSeek はその思考過程が会話履歴に残ることを期待します。ドキュメントによれば、コードが reasoning_content を正しく戻さないと、API は 400 エラーを返します。本ノートが扱うのはその失敗です—認証失敗でもレート制限でも、見かけるあらゆる 400 の総称でもありません。
ルール:過去の reasoning_content をすべて戻す
tools を載せたリクエストでは:
- 過去すべてのターンの
reasoning_contentを戻す。 - それらの値はモデルのコンテキストに連結される。
- モデルがツールを呼ばなかったターンも含め、後続のすべてのリクエストで続けて戻す。
DeepSeek のサンプルでいちばん安全な既定は、SDK が返したアシスタントメッセージオブジェクトをそのまま追加することです。
messages.append(response.choices[0].message)このオブジェクトにはすでに content、reasoning_content、tool_calls が入っています。明示的に書くなら次と同等です。
messages.append({
"role": "assistant",
"content": response.choices[0].message.content,
"reasoning_content": response.choices[0].message.reasoning_content,
"tool_calls": response.choices[0].message.tool_calls,
})自前の履歴ビルダが role + content だけでアシスタントメッセージを組み立て直していると、reasoning_content は黙って落ちます—そして次の tools 付きリクエストが 400 になり得ます。
リクエストに tools が無いとき
tools が無い場合、ルールは反転します。
reasoning_contentを戻す必要はない。- 送っても API は無視し、コンテキストにも連結しない。
したがってツールを一度も付けないマルチターン会話は、content だけ残しても Multi-turn Conversation 節の説明どおり動きます。厳しい要件は、リクエストに tools が載った瞬間から始まります。
reasoning_content が落ちやすい場所
訪問者向けに多い剥離ポイント:
roleとcontentだけ永続化するクライアント側メッセージストアが、次コール用に履歴を組み直すとき。- OpenAI 形のフィールドだけを許可するプロキシ/ゲートウェイが、
reasoning_contentのような未知キーを捨てるとき。 content列はあるが思考過程用の列が無い履歴 DB/ORM。- 同じアシスタントターンの
tool_callsはコピーするが、兄弟のreasoning_contentを忘れる手書き JSON シリアライザ。
SDK の応答と次リクエストのあいだに自前レイヤがあるなら、ツール結果を足して次の completion を撃つ前後で、フィールドがラウンドトリップしているかを見てください。
これは何ではないか
境界をはっきりさせます。
- DeepSeek からのあらゆる HTTP 400 が、欠けた
reasoning_contentではない。 不正ペイロード、認証、その他の検証エラーも 400 になります。思考モードとtoolsが同時に絡むときの、ドキュメント上の一因として読んでください。 - DeepSeek Harness のインストール手順ではない。 コーディング harness の導入や配線は別トピックです—DeepSeek Harness のインストール方法:Windows・Linux・CLI・プラグイン を参照。本ページは思考モード+
toolsの API 履歴ルールだけを扱います。 - 公式 DeepSeek API の範囲。 上記は公式 API の Thinking Mode ドキュメントに沿っています。第三者中継は挙動が違うことがあるので、それぞれの文書を確認してください。
関連記事
当サイト上の近い DeepSeek/harness 文脈:
