Chat Completions erstellen (Nicht-Streaming)
Dieser Endpunkt generiert anhand eines vorgegebenen Prompts eine oder mehrere Vorhersagen zur Vervollständigung durch das Modell. Bei der Nicht-Streaming-Schnittstelle wird das Ergebnis auf einmal zurückgegeben, nachdem die vollständige Antwort generiert wurde.
- API-Endpunkt:
https://api.codingplanx.ai/v1/chat/completions - Methode:
POST - Content-Type:
application/json
Anfrageparameter (Request)
Anfrage-Header (Headers)
| Parameter | Typ | Erforderlich | Beispielwert | Beschreibung |
|---|---|---|---|---|
| Content-Type | string | Ja | application/json | Format des Request-Bodys |
| Accept | string | Ja | application/json | Format des Response-Bodys |
| Authorization | string | Nein | Bearer {{YOUR_API_KEY}} | Authentifizierungs-Token (API-Schlüssel) |
Anfrage-Body (Body)
| Parameter | Typ | Erforderlich | Standardwert | Beschreibung |
|---|---|---|---|---|
| model | string | Ja | - | Die ID des zu verwendenden Modells (z. B. gpt-4o, gpt-3.5-turbo). |
| messages | array | Ja | - | Liste der Dialog-Nachrichten. Jedes Objekt enthält eine role (system/user/assistant) und den content. |
| temperature | number | Nein | 1 | Sampling-Temperatur (0 bis 2). Höhere Werte machen die Ausgabe zufälliger, niedrigere Werte deterministischer. |
| top_p | number | Nein | 1 | Nucleus-Sampling. Berücksichtigt nur Tokens mit einer Wahrscheinlichkeitsmasse der besten top_p. Es wird empfohlen, entweder diesen Wert oder temperature anzupassen, nicht beides. |
| n | integer | Nein | 1 | Anzahl der zu generierenden Vervollständigungen pro Eingabenachricht. |
| stream | boolean | Nein | false | Gibt an, ob die Ausgabe gestreamt werden soll. Hier sollte der Wert auf false gesetzt werden. |
| stop | string/array | Nein | null | Sequenz von bis zu 4 Tokens, bei denen die API aufhört, weitere Tokens zu generieren. |
| max_tokens | integer | Nein | inf | Die maximale Anzahl der zu generierenden Tokens, begrenzt durch die maximale Kontextlänge des Modells. |
| presence_penalty | number | Nein | 0 | Wert zwischen -2.0 und 2.0. Positive Werte erhöhen die Wahrscheinlichkeit, dass das Modell über neue Themen spricht. |
| frequency_penalty | number | Nein | 0 | Wert zwischen -2.0 und 2.0. Positive Werte verringern die Wahrscheinlichkeit, dass das Modell dieselben Wörter wiederholt. |
| logit_bias | object | Nein | null | Modifiziert die Wahrscheinlichkeit, dass bestimmte Tokens in der Vervollständigung erscheinen. |
| user | string | Nein | - | Eine eindeutige Kennung für den Endbenutzer zur Missbrauchserkennung. |
| response_format | object | Nein | - | Legt das Ausgabeformat fest, z. B. { "type": "json_object" }, um den JSON-Modus zu aktivieren. |
| tools | array | Nein | - | Liste der vom Modell aufrufbaren Werkzeuge (derzeit wird nur function unterstützt). |
| tool_choice | string/obj | Nein | auto | Steuert, welche Funktion das Modell aufruft (none / auto / spezifische Funktion). |
Antwortparameter (Response)
Antwort-Body (Response Body)
| Parameter | Typ | Beschreibung |
|---|---|---|
| id | string | Eindeutige Kennung für diese Anfrage. |
| object | string | Objekttyp, immer chat.completion. |
| created | integer | Unix-Zeitstempel (in Sekunden). |
| choices | array | Liste der Vervollständigungsergebnisse. |
| ├─ index | integer | Index dieses Ergebnisses in der Liste. |
| ├─ message | object | Die vom Modell generierte Nachricht. |
| │ ├─ role | string | Rolle, in der Regel assistant. |
| │ └─ content | string | Der eigentliche Textinhalt der Nachricht. |
| └─ finish_reason | string | Grund für die Beendigung (z. B. stop, length, tool_calls). |
| usage | object | Statistiken zur Token-Nutzung. |
| ├─ prompt_tokens | integer | Anzahl der Tokens in der Eingabeaufforderung (Prompt). |
| ├─ completion_tokens | integer | Anzahl der generierten Tokens in der Antwort. |
| └─ total_tokens | integer | Gesamtanzahl der verbrauchten Tokens. |
Beispiele
Anfrage-Beispiel (cURL)
curl --location --request POST 'https://api.codingplanx.ai/v1/chat/completions' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data-raw '{
"model": "gpt-4o",
"messages": [
{
"role": "user",
"content": "Hallo, bitte stelle dich kurz vor."
}
],
"max_tokens": 1000
}'
Antwort-Beispiel
{
"id": "chatcmpl-123",
"object": "chat.completion",
"created": 1677652288,
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Hallo! Ich bin der KI-Assistent von CodingPlanX. Es freut mich, dir helfen zu können."
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 15,
"completion_tokens": 25,
"total_tokens": 40
}
}
FAQs (Häufig gestellte Fragen)
Q1: Wie aktiviere ich den JSON-Modus?
A1: Lege im Request-Body den Parameter "response_format": { "type": "json_object" } fest. Hinweis: Wenn du den JSON-Modus verwendest, musst du das Modell in der system- oder user-Nachricht ausdrücklich anweisen, JSON auszugeben. Andernfalls kann das Modell in eine Endlosschleife geraten und leere Inhalte generieren.
Q2: Wie sollte ich temperature und top_p auswählen?
A2: Wir empfehlen in der Regel, nur einen dieser beiden Parameter anzupassen. Wenn das Modell kreativer antworten soll, erhöhe die temperature (z. B. auf 0.8). Wenn du präzisere, deterministischere Antworten benötigst, senke den Wert (z. B. auf 0.2).
Q3: Warum ist der finish_reason auf length gesetzt?
A3: Dies bedeutet, dass die generierte Antwort abgeschnitten wurde, weil das von dir festgelegte Limit für max_tokens erreicht oder die maximale Kontextlänge des Modells überschritten wurde.
Q4: Was sind Tokens? A4: Tokens sind die Grundeinheiten, in denen das Modell Text verarbeitet. Im Deutschen entspricht ein Token oft einem Wortteil oder einem kurzen Wort (ca. 4 Zeichen). Die API-Abrechnung und die Kontextlimits basieren auf der Anzahl der verwendeten Tokens.
Q5: Was ist der Unterschied zwischen presence_penalty und frequency_penalty?
A5: presence_penalty fokussiert sich darauf, ob "über neue Themen gesprochen" wird (bestraft das Modell, sobald ein Wort überhaupt im Text vorkommt). frequency_penalty bezieht sich auf die "Worthäufigkeit" (je öfter ein Wort wiederholt wird, desto höher fällt die Strafe aus).
Q6: Wie kann ich Text in Echtzeit (Streaming) generieren lassen?
A6: Setze den Parameter stream auf true. Beachte bitte, dass sich das Format der Streaming-Antwort von der in diesem Dokument beschriebenen Struktur (Nicht-Streaming) unterscheidet, da es auf Server-Sent Events (SSE) basiert.