Freunde einladen und kostenlose Tokens verdienen!Mehr erfahren

Chat-Vervollständigung erstellen (Streaming)

Offizielle Dokumentation als Referenz: OpenAI Chat Create

Schnittstellenbeschreibung

Bei Vorgabe eines Prompts gibt das Modell eine oder mehrere vorhergesagte Vervollständigungen der Konversation zurück. Diese Schnittstelle unterstützt sowohl Standard-Antworten als auch Streaming-Antworten (SSE) und kann die Wahrscheinlichkeiten alternativer Tokens an jeder Position zurückgeben.

Anfrage-Spezifikationen

  • Anfragemethode: POST
  • Anfrage-URL: https://api.codingplanx.ai/v1/chat/completions

Anfrage-Header (Headers)

ParameterErforderlichTypBeispielBeschreibung
Content-TypeJastringapplication/jsonDatenformat
AcceptJastringapplication/jsonAkzeptiertes Datenformat
AuthorizationNein*stringBearer {{YOUR_API_KEY}}Authentifizierungs-Token (bei tatsächlichen Aufrufen meist erforderlich)
X-Forwarded-HostNeinstringlocalhost:5173Proxy-Hostname (muss in der Regel nicht manuell übergeben werden)

Anfrage-Body (Request Body)

ParameterTypErforderlichBeschreibung
modelstringJaZu verwendende Modell-ID. Siehe Kompatibilitätstabelle für Modelle für eine Liste kompatibler Modelle.
messagesarrayJaListe der bisherigen Nachrichten der Konversation. Enthält die Felder role und content.
toolsarrayJaEine Liste von Tools, die das Modell aufrufen kann. Derzeit werden nur Funktionen als Tools unterstützt.
tool_choiceobjectJaSteuert, welche Funktion das Modell aufruft (falls vorhanden). none bedeutet kein Aufruf, auto bedeutet automatische Auswahl, oder es wird der Aufruf einer bestimmten Funktion erzwungen.
extra_bodyobjectJaZusätzliche Parameter. Enthält enable_thinking (boolean), um den Denkmodus zu aktivieren (sofern vom Modell unterstützt).
temperatureinteger/floatNeinSampling-Temperatur, zwischen 0 und 2. Höhere Werte (z. B. 0.8) machen die Ausgabe zufälliger, niedrigere Werte (z. B. 0.2) fokussierter und deterministischer. Es wird empfohlen, diesen Wert ODER top_p zu ändern, aber nicht beide gleichzeitig.
top_pinteger/floatNeinNucleus-Sampling-Parameter. 0.1 bedeutet, dass nur die Tokens berücksichtigt werden, die die obersten 10 % der Wahrscheinlichkeitsmasse ausmachen. Es wird empfohlen, diesen Wert ODER temperature zu ändern, aber nicht beide gleichzeitig.
nintegerNeinWie viele Chat-Vervollständigungsoptionen pro Eingabenachricht generiert werden sollen. Standardwert ist 1.
streambooleanNeinOb Streaming-Ausgabe aktiviert wird. Wenn auf true gesetzt, werden partielle Nachrichten-Deltas als Server-Sent Events (SSE) gesendet. Der Stream wird mit der Nachricht data: [DONE] beendet.
stopstring/arrayNeinDie API stoppt die Generierung weiterer Tokens bei diesen Sequenzen (max. 4). Standardwert ist null.
max_tokensintegerNeinMaximale Anzahl der zu generierenden Tokens in der Chat-Vervollständigung. Die Gesamtlänge aus Eingabe- und generierten Tokens wird durch das Kontextlimit des Modells begrenzt.
presence_penaltynumberNeinZahl zwischen -2.0 und 2.0. Positive Werte bestrafen neue Tokens basierend darauf, ob sie bisher im Text aufgetreten sind, und erhöhen die Wahrscheinlichkeit, dass das Modell über neue Themen spricht.
frequency_penaltynumberNeinZahl zwischen -2.0 und 2.0. Positive Werte bestrafen neue Tokens basierend auf ihrer bisherigen Häufigkeit im Text und verringern die Wahrscheinlichkeit, dass das Modell dieselben Inhalte wiederholt.
logit_biasobjectNeinVerändert die Wahrscheinlichkeit, dass bestimmte Tokens in der Vervollständigung erscheinen. Akzeptiert ein JSON-Objekt, das Token-IDs auf Bias-Werte (-100 bis 100) abbildet.
userstringNeinEindeutiger Identifikator für den Endnutzer, hilft bei der Überwachung und Erkennung von Missbrauch.
response_formatobjectNeinLegt das Ausgabeformat des Modells fest. Setzen Sie dies auf { "type": "json_object" }, um den JSON-Modus zu aktivieren. Wichtig: Bei Verwendung muss das Modell in der Nachricht zwingend angewiesen werden, JSON zu generieren, da dies sonst zu einem endlosen Strom von Leerzeichen führen kann.
seenintegerNeinSeed festlegen für deterministisches Sampling (Beta-Funktion).

Anfrage-Beispiel

{
  "model": "gpt-5-mini",
  "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
  }
}

Antwort-Spezifikationen

  • Content-Type: application/json (Nicht-Streaming) oder text/event-stream (bei Streaming mit stream: true)

Antwort-Parameter (Nicht-Streaming-Struktur)

ParameterTypBeschreibung
idstringEindeutiger Identifikator für die Chat-Vervollständigung.
objectstringObjekttyp, normalerweise chat.completion oder chat.completion.chunk.
createdintegerZeitstempel der Erstellung (Unix-Zeit).
choicesarrayListe der Vervollständigungsoptionen.
choices[].indexintegerIndex in der Auswahlliste.
choices[].messageobjectVom Modell generiertes Nachrichtenobjekt, enthält role und content. Beim Streaming ist dies delta.
choices[].finish_reasonstringGrund für das Stoppen der Generierung (z. B. stop, length etc.).
usageobjectStatistiken zur API-Token-Nutzung.
usage.prompt_tokensintegerVom Prompt verbrauchte Token-Anzahl.
usage.completion_tokensintegerVom Modell generierte Token-Anzahl.
usage.total_tokensintegerGesamte bei dieser Anfrage verbrauchte Token-Anzahl.

Antwort-Beispiel (Nicht-Streaming / Aggregierte Streaming-Ergebnisse)

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

(Hinweis: Wenn stream: true in der Anfrage angegeben wurde, ist der Antwort-Body ein durch Zeilenumbrüche getrennter SSE-Event-Stream, bei dem jede Zeile mit data: {...} beginnt und der Stream mit data: [DONE] endet.)


FAQs (Häufig gestellte Fragen)

Q1: Wie parse ich eine Streaming-Antwort, bei der stream: true aktiviert ist? A: Wenn stream: true aktiviert ist, gibt die API Daten über das Protokoll Server-Sent Events (SSE) zurück. Der Client muss den Antwort-Stream zeilenweise lesen, nach Strings suchen, die mit dem Präfix data: beginnen, und diese als JSON parsen. Bitte beachten Sie, dass die letzte Nachricht des Datenstroms immer data: [DONE] ist, was das Ende des Streams markiert. Diese Abschlussmarkierung muss beim Parsen herausgefiltert werden.

Q2: Warum bleibt meine Anfrage hängen oder gibt einen endlosen Leerzeichen-Stream zurück, nachdem ich response_format auf JSON gesetzt habe? A: Wenn Sie den JSON-Modus mit { "type": "json_object" } aktivieren, müssen Sie das Modell in den übergebenen messages (meistens im System-Prompt) ausdrücklich anweisen: „Bitte generiere JSON“. Fehlt ein entsprechender Text-Prompt, kann das Modell stecken bleiben und endlos Leerzeichen generieren, bis das Limit von max_tokens erreicht ist.

Q3: Können die Parameter temperature und top_p gleichzeitig angepasst werden? A: Offiziell wird dringend davon abgeraten, beide Parameter gleichzeitig anzupassen. Beide Mechanismen dienen dazu, die Zufälligkeit der Modellausgabe zu steuern. Wenn Sie eine stabilere und vorhersehbarere Ausgabe wünschen, verringern Sie die temperature ODER senken Sie top_p. Wenn Sie kreativere Antworten möchten, erhöhen Sie einen von beiden. Das gleichzeitige Ändern beider Parameter führt zu unvorhersehbaren Ergebnissen.

Q4: Welche Funktion hat der Parameter extra_body.enable_thinking? A: Dies ist ein spezieller Erweiterungsparameter dieser Schnittstelle. Wenn Sie {"enable_thinking": true} übergeben und das vom Backend verwendete Modell den „Denkmodus (Thinking Mode / Chain of Thought)“ (wie einige LLMs mit verbesserter Logik) unterstützt, startet das Modell einen tiefgehenden Denkprozess. Wenn das Modell dies nicht unterstützt, wird dieser Parameter in der Regel einfach ignoriert.

Q5: Warum ist der finish_reason in der Antwort length und nicht stop? A: Ein finish_reason mit dem Wert length zeigt an, dass die Modellantwort zwangsweise abgeschnitten wurde, bevor sie vollständig generiert werden konnte. Dies liegt meist daran, dass Ihr max_tokens-Parameter zu klein eingestellt ist oder die Gesamtzahl der Eingabe- und Ausgabe-Tokens das maximal zulässige Kontextfenster-Limit des aktuellen Modells überschreitet. Bitte versuchen Sie, den Wert für max_tokens zu erhöhen.