Freunde einladen und kostenlose Tokens verdienen!Mehr erfahren

Chat-Vervollständigung erstellen - DeepSeek v3.1 Thinking-Kontrolle (Streaming)

Diese Schnittstelle (API) dient zur Erstellung von Chat-Dialogen mit dem DeepSeek v3.1 Modell. Sie unterstützt Streaming-Ausgaben (SSE) sowie die präzise Steuerung der tiefen Denkfähigkeit (Thinking) des Modells.

API-Details

  • Status: Veröffentlicht (Released)
  • Methode: POST
  • Endpunkt: https://api.codingplanx.ai/v1/chat/completions

Request-Header

ParameterErforderlichTypBeispielwertBeschreibung
Content-TypeJaStringapplication/jsonDatenformat
AcceptJaStringapplication/jsonAkzeptiertes Format
AuthorizationNeinStringBearer {{YOUR_API_KEY}}Authentifizierungsnachweis (bei tatsächlichen Aufrufen in der Regel erforderlich)

(Hinweis: Der Header X-Forwarded-Host ist derzeit deaktiviert)


Request-Body

Content-Type: application/json

ParameterErforderlichTypBeschreibung
modelJaStringDie ID des zu verwendenden Modells. Beispiel: deepseek-v3-1-250821
messagesJaArray von ObjektenDie Liste der Nachrichten des Dialogs.
? roleJaStringDie Rolle des Absenders der Nachricht (z. B. system, user, assistant).
? contentJaStringDer eigentliche Inhalt der Nachricht.
max_tokensNeinIntegerBegrenzt die maximale Anzahl von Tokens, die das Modell in einer einzigen Anfrage generieren kann. Die Gesamtlänge von Eingabe- und Ausgabe-Tokens ist durch das Kontextfenster des Modells begrenzt.
temperatureNeinNumberSampling-Temperatur zwischen 0 und 2. Höhere Werte (z. B. 0.8) machen die Ausgabe zufälliger, niedrigere Werte (z. B. 0.2) machen die Ausgabe fokussierter und deterministischer.
streamNeinBooleanWenn auf true gesetzt, werden Nachrichteninkremente als Stream über SSE (Server-Sent Events) gesendet. Der Stream endet mit data: [DONE].
stream_optionsNeinObjectOptionen für die Streaming-Ausgabe. Kann nur gesetzt werden, wenn der Parameter stream auf true steht.
? include_usageNeinBooleanWenn auf true gesetzt, wird vor dem abschließenden data: [DONE] ein zusätzlicher Block (Chunk) übertragen. Das Feld usage in diesem Block zeigt die Token-Nutzungsstatistiken der gesamten Anfrage an.
thinkingNeinObjectEinige Modelle mit tiefer Denkfähigkeit unterstützen die Steuerung dieser Funktion über dieses Feld.
? typeNeinStringenabled: Erzwingt die Aktivierung von Deep Thinking.<br>disabled: Erzwingt die Deaktivierung.<br>auto: Das Modell entscheidet selbstständig.

Request-Beispiel

{
  "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-Body

HTTP-Statuscode: 200 OK Content-Type: application/json

(Hinweis: Wenn stream: true gesetzt ist, ist das Rückgabeformat ein SSE-Datenstream, wobei jeder Data-Chunk ein JSON-String mit der folgenden Struktur ist. Das Folgende zeigt die Standard-JSON-Struktur für nicht-gestreamte oder vollständig zusammengesetzte gestreamte Anfragen.)

FeldnameTypBeschreibung
idStringDie eindeutige Kennung der Anfrage.
objectStringObjekttyp, normalerweise chat.completion oder chat.completion.chunk.
createdIntegerZeitstempel der Erstellung (in Sekunden).
choicesArray von ObjektenListe der vom Modell generierten Antworten.
? indexIntegerDer Index dieser Antwort in der Choices-Liste.
? messageObjectDas generierte Nachrichtenobjekt (bei Streaming-Anfragen normalerweise delta).
   ? roleStringRolle (normalerweise assistant).
   ? contentStringDer spezifische Inhalt der Antwort.
? finish_reasonStringGrund für den Stopp der Generierung (z. B. stop, length).
usageObjectStatistiken zur Token-Nutzung.
? prompt_tokensIntegerAnzahl der vom Prompt (Eingabe) verbrauchten Tokens.
? completion_tokensIntegerAnzahl der von der generierten Antwort verbrauchten Tokens.
? total_tokensIntegerGesamtanzahl der verbrauchten Tokens.

Response-Beispiel (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
    }
}

Häufig gestellte Fragen (FAQs)

F1: Wie erhalte ich Informationen zum Token-Verbrauch (Usage) in einer Streaming (SSE) Anfrage? A1: Sie müssen im Request-Body stream auf true setzen und gleichzeitig stream_options: {"include_usage": true} konfigurieren. Dadurch pusht der Server einen zusätzlichen Datenblock, bevor die SSE-Stream-Endemarkierung data: [DONE] gesendet wird. Das choices-Array dieses Datenblocks ist leer, aber das usage-Feld enthält die vollständigen Token-Statistiken.

F2: Was ist der Unterschied zwischen enabled und auto im Parameter thinking? A2:

  • enabled: Erzwingt, dass das Modell vor der Rückgabe der endgültigen Antwort ein "tiefes Denken (Chain of Thought)" durchführt. Dies führt in der Regel zu qualitativ hochwertigeren Schlussfolgerungen, kann aber die Reaktionszeit (Verzögerung bis zum ersten Zeichen) und den Verbrauch von Ausgabe-Tokens erhöhen.
  • auto: Überlässt die Entscheidung dem Modell. Das Modell beurteilt automatisch basierend auf der Komplexität der Fragen in Ihren messages, ob ein tiefes Denken erforderlich ist.

F3: Warum gibt die Anfrage den Fehler 401 Unauthorized zurück? A3: Dies liegt in der Regel an einer fehlgeschlagenen Authentifizierung. Bitte überprüfen Sie, ob das Feld Authorization in Ihrem Request-Header korrekt im Format Bearer {{YOUR_API_KEY}} ausgefüllt ist und stellen Sie sicher, dass Ihr API-Key gültig und nicht abgelaufen ist.

F4: Werden die Inhalte des Denkprozesses zurückgegeben, wenn das tiefe Denken (thinking) aktiviert ist? A4: Gemäß der Standardimplementierung des OpenAI-kompatiblen Formats können die Inhalte des tiefen Denkens bei Streaming-Ausgaben innerhalb spezifischer Tags (wie <think>...</think>) oder über ein spezielles Chunk-Feld zurückgegeben werden. Bitte achten Sie beim Parsen der Streaming-Daten im Frontend darauf, die Inhalte des Denkprozesses im content entsprechend zu verarbeiten, um dem Benutzer einen "Denkt nach..."-UI-Effekt anzuzeigen.

F5: Was bedeutet es, wenn ich finish_reason: "length" erhalte? A5: Dies bedeutet, dass die Ausgabe des Modells das von Ihnen festgelegte Limit für max_tokens erreicht hat oder an die Grenze des maximalen Kontextfensters des Modells selbst gestoßen ist, was dazu führt, dass die Antwort abgeschnitten wurde. Wenn die Antwort unvollständig ist, können Sie versuchen, den Wert von max_tokens zu erhöhen.