友人を招待して無料トークンを獲得!詳細を見る

チャット補完の作成 - DeepSeek v3.1 思考レベル制御 (ストリーミング)

本エンドポイントは、DeepSeek v3.1 モデルとのチャット対話を作成するために使用されます。ストリーミング出力(SSE)およびモデルの深い思考能力(Thinking)の詳細な制御をサポートしています。

エンドポイント詳細

  • ステータス: リリース済み (Released)
  • HTTPメソッド: POST
  • エンドポイントURL: https://api.codingplanx.ai/v1/chat/completions

リクエストヘッダー (Headers)

パラメータ名必須型サンプル値説明
Content-TypeはいStringapplication/jsonデータフォーマット
AcceptはいStringapplication/jsonレスポンスフォーマット
AuthorizationいいえStringBearer {{YOUR_API_KEY}}認証情報(実際の呼び出し時は通常必須です)

(注:現在 X-Forwarded-Host ヘッダーは無効化されています)


リクエストボディ (Request Body)

Content-Type: application/json

パラメータ名必須型説明
modelはいString使用するモデルのID。例: deepseek-v3-1-250821
messagesはいArray of Objects対話のメッセージリスト。
? roleはいStringメッセージ送信者の役割(例: system, user, assistant)。
? contentはいStringメッセージの具体的な内容。
max_tokensいいえInteger1回のリクエストでモデルが生成する補完(completion)の最大トークン数。入力と出力の合計トークン数はモデルのコンテキスト制限を受けます。
temperatureいいえNumberサンプリング温度。0から2の間で指定します。高い値(例: 0.8)は出力をよりランダムにし、低い値(例: 0.2)は出力をより決定的で集中したものにします。
streamいいえBooleantrue に設定した場合、SSE(Server-Sent Events)形式でメッセージの差分をストリーミング送信します。メッセージストリームは data: [DONE] で終了します。
stream_optionsいいえObjectストリーミング出力に関するオプション。stream パラメータが true の場合のみ設定可能です。
? include_usageいいえBooleantrue に設定した場合、ストリーミングメッセージの最後にある data: [DONE] の前に、追加のチャンク(データブロック)が送信されます。このチャンクの usage フィールドには、リクエスト全体のトークン使用量統計が含まれます。
thinkingいいえObject深い思考能力をサポートする一部のモデルにおいて、このフィールドを通じて思考能力のオン/オフを制御します。
? typeいいえStringenabled:深い思考能力を強制的に有効化します。<br>disabled:強制的に無効化します。<br>auto:モデルの自動判断に委ねます。

リクエスト例

{
  "model": "deepseek-v3-1-250821",
  "max_tokens": 1000,
  "messages": [
    {
      "role": "system",
      "content": "You are a helpful assistant."
    },
    {
      "role": "user",
      "content": "你好"
    }
  ],
  "temperature": 1.0,
  "stream": true,
  "stream_options": {
    "include_usage": true
  },
  "thinking": {
    "type": "enabled"
  }
}

レスポンス (Response)

HTTP ステータスコード: 200 OK Content-Type: application/json

(注:stream: true の場合、戻り値のフォーマットは SSE データストリームとなり、各データチャンクは以下の構造を持つ JSON 文字列になります。以下は非ストリーミング、またはストリーミングを組み立てた後の標準的な JSON 構造です)

フィールド名型説明
idStringリクエストの一意の識別子。
objectStringオブジェクトタイプ。通常は chat.completion または chat.completion.chunk。
createdInteger作成日時のタイムスタンプ(秒)。
choicesArray of Objectsモデルが生成した回答リスト。
? indexIntegerchoices リストにおけるこの回答のインデックス。
? messageObject生成された回答メッセージオブジェクト(ストリーミングリクエストでは通常 delta となります)。
   ? roleString役割(通常は assistant)。
   ? contentString回答の具体的な内容。
? finish_reasonString生成を停止した理由(例: stop, length)。
usageObjectトークン使用量の統計。
? prompt_tokensIntegerプロンプトで消費されたトークン数。
? completion_tokensInteger生成されたコンテンツで消費されたトークン数。
? total_tokensInteger消費された合計トークン数。

レスポンス例 (JSON)

{
    "id": "chatcmpl-123",
    "object": "chat.completion",
    "created": 1677652288,
    "choices": [
        {
            "index": 0,
            "message": {
                "role": "assistant",
                "content": "\r
\r
Hello there, how may I assist you today?"
            },
            "finish_reason": "stop"
        }
    ],
    "usage": {
        "prompt_tokens": 9,
        "completion_tokens": 12,
        "total_tokens": 21
    }
}

よくある質問 (FAQ)

Q1: ストリーミング (SSE) リクエストでトークンの消費量(Usage)を取得するにはどうすればよいですか? A1: リクエストボディで stream を true に設定し、同時に stream_options: {"include_usage": true} を構成する必要があります。これにより、SSE ストリームの終了マーカー data: [DONE] が送信される前に、サーバーが追加のデータチャンクをプッシュします。このデータチャンクの choices 配列は空ですが、usage フィールドには完全なトークン統計情報が含まれます。

Q2: thinking パラメータの enabled と auto の違いは何ですか? A2:

  • enabled: 最終的な回答を返す前に、モデルに「深い思考(Chain of Thought)」を行うことを強制します。これにより通常、より高品質な推論結果が得られますが、応答時間(初回トークン生成までの遅延)や出力トークンの消費量が増加する可能性があります。
  • auto: 決定権をモデルに委ねます。モデルは messages 内の質問の複雑さに応じて、深い思考が必要かどうかを自動的に判断します。

Q3: リクエストが 401 Unauthorized エラーを返したのはなぜですか? A3: これは通常、認証の失敗が原因です。リクエストヘッダーの Authorization フィールドが Bearer {{YOUR_API_KEY}} の形式で正しく入力されているか確認し、APIキーが有効であり、期限切れでないことを確認してください。

Q4: thinking(深い思考)を有効にした後、思考プロセスの内容は返されますか? A4: OpenAI 互換フォーマットの標準的な実装によれば、ストリーミング出力の場合、深い思考の内容は特定の識別子(例: <think>...</think> タグ)内に含まれて返されるか、あるいは特定のチャンクフィールドを通じて返される可能性があります。フロントエンドでストリーミングデータを解析する際は、ユーザーに「思考中」のUIエフェクトを表示できるように、content 内の思考プロセスの内容を適切に処理することに留意してください。

Q5: finish_reason: "length" が返された場合、どういう意味ですか? A5: これは、モデルの出力が設定した max_tokens の制限に達したか、モデル自体の最大コンテキストウィンドウの制限に触れたため、回答が切り捨てられたことを意味します。回答が不完全な場合は、max_tokens の値を大きくして再試行してください。