Freunde einladen und kostenlose Tokens verdienen!Mehr erfahren

API-Dokumentation: Strukturierte Ausgaben erstellen

API-Beschreibung

Basierend auf einem gegebenen Prompt (Eingabeaufforderung) gibt das Modell eine oder mehrere vorhergesagte Vervollständigungen (Completions) zurück und unterstützt die Erzwingung, dass das Modell strukturierte Daten nach einem bestimmten JSON-Schema ausgibt.

Offizielle Referenzdokumentation: OpenAI Structured Outputs

Basisinformationen der API

  • HTTP-Methode: POST
  • Endpunkt (URL): https://api.codingplanx.ai/v1/chat/completions
  • Datenformat: application/json

Header der Anfrage (Request Headers)

ParameternameErforderlichTypBeispielwertBeschreibung
Content-TypeJastringapplication/jsonGibt den Medientyp des Anfragetextes an
AcceptJastringapplication/jsonGibt den vom Client akzeptierten Datentyp an
AuthorizationNeinstringBearer {{YOUR_API_KEY}}Authentifizierungsdaten (Credentials)

Anfragetext (Request Body)

ParameternameErforderlichTypBeschreibung
modelJastringDie ID des zu verwendenden Modells (z. B. gpt-4.1-2025-04-14).
messagesJaarrayEine Liste der Nachrichten, die bisher Teil der Konversation sind.
? messages[].roleJastringDie Rolle des Absenders der Nachricht, z. B. system, user, assistant.
? messages[].contentJastringDer eigentliche Inhalt der Nachricht.
toolsJaarrayEine Liste von Tools, die das Modell aufrufen kann. Derzeit werden nur Funktionen unterstützt. Dient zur Bereitstellung einer Liste von Funktionen, für die das Modell JSON-Eingaben generieren kann.
tool_choiceJaobjectSteuert, welche Funktion das Modell aufruft. none bedeutet keinen Aufruf, auto bedeutet automatische Auswahl. Die Erzwingung eines Aufrufs ist auch über {"type": "function", "function": {"name": "my_function"}} möglich.
temperatureNeinintegerSampling-Temperatur, zwischen 0 und 2. Höhere Werte (wie 0.8) machen die Ausgabe zufälliger, niedrigere Werte (wie 0.2) machen sie fokussierter und deterministischer. Es wird empfohlen, diesen Wert oder top_p zu ändern, aber nicht beide gleichzeitig.
top_pNeinintegerNucleus-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.
nNeinintegerWie viele Vervollständigungsoptionen für jede Eingabenachricht generiert werden sollen. Standard ist 1.
streamNeinbooleanOb Streaming-Ausgabe aktiviert werden soll. Wenn true, werden partielle Nachrichtendeltas als Server-Sent Events (SSE) gesendet und mit data: [DONE] beendet. Standard ist false.
stopNeinstringSequenzen (bis zu 4), bei denen die API die weitere Generierung von Tokens stoppt. Standard ist null.
max_tokensNeinintegerDie maximale Anzahl von Tokens, die in der Chat-Vervollständigung generiert werden sollen. Standard ist inf (unendlich).
presence_penaltyNeinnumberPräsenz-Strafe (-2.0 bis 2.0). Positive Werte bestrafen neue Tokens basierend darauf, ob sie im bisherigen Text erscheinen, was die Wahrscheinlichkeit erhöht, dass das Modell über neue Themen spricht.
frequency_penaltyNeinnumberFrequenz-Strafe (-2.0 bis 2.0). Positive Werte bestrafen neue Tokens basierend auf ihrer bisherigen Häufigkeit im Text, was die Wahrscheinlichkeit verringert, dass das Modell dieselben Zeilen wiederholt.
logit_biasNeinnull/objectAkzeptiert ein JSON-Objekt, das Token-IDs auf zugehörige Bias-Werte (-100 bis 100) abbildet, um die Wahrscheinlichkeit zu ändern, dass bestimmte Tokens in der Vervollständigung erscheinen.
userNeinstringEine eindeutige Kennung, die Ihren Endnutzer repräsentiert und dabei hilft, Missbrauch zu überwachen und zu erkennen.
response_formatNeinobjectEin Objekt, das das Format spezifiziert, das das Modell ausgeben muss. Durch Setzen von {"type": "json_schema", "json_schema": {...}} können strukturierte Ausgaben aktiviert werden, um sicherzustellen, dass das Modell ein gültiges JSON-Format generiert.
seed (seen)Neininteger(Beta-Funktion) Setzt den Zufalls-Seed. Das System wird sein Bestes tun, um deterministisch zu samplen. Wiederholte Anfragen mit demselben Seed und denselben Parametern sollten das gleiche Ergebnis liefern.

Anfragebeispiel (Request Example)

{
  "model": "gpt-4.1-2025-04-14",
  "messages": [
    {
      "role": "system",
      "content": "Determine if the user input violates specific guidelines and explain if they do."
    },
    {
      "role": "user",
      "content": "How do I prepare for a job interview?"
    }
  ],
  "response_format": {
    "type": "json_schema",
    "json_schema": {
      "name": "content_compliance",
      "description": "Determines if content is violating specific moderation rules",
      "schema": {
        "type": "object",
        "properties": {
          "is_violating": {
            "type": "boolean",
            "description": "Indicates if the content is violating guidelines"
          },
          "category": {
            "type": ["string", "null"],
            "description": "Type of violation, if the content is violating guidelines. Null otherwise.",
            "enum": ["violence", "sexual", "self_harm"]
          },
          "explanation_if_violating": {
            "type": ["string", "null"],
            "description": "Explanation of why the content is violating"
          }
        },
        "required": ["is_violating", "category", "explanation_if_violating"],
        "additionalProperties": false
      },
      "strict": true
    }
  }
}

Antwortkörper (Response Body)

ParameternameTypBeschreibung
idstringEindeutiger Bezeichner für die Vervollständigungsanfrage.
objectstringObjekttyp, immer chat.completion.
createdintegerDer Unix-Zeitstempel (in Sekunden) der Erstellung.
choicesarrayEine Liste der Vervollständigungsoptionen.
? choices[].indexintegerDer Index der Option in der Liste.
? choices[].messageobjectDas vom Modell generierte Nachrichtenobjekt.
? choices[].message.rolestringRollenname (normalerweise assistant).
? choices[].message.contentstringDer spezifische Inhalt der Nachricht.
? choices[].finish_reasonstringDer Grund, warum das Modell aufgehört hat zu generieren (z. B. stop, length).
usageobjectStatistiken zur Token-Nutzung.
? usage.prompt_tokensintegerAnzahl der Tokens im Prompt.
? usage.completion_tokensintegerAnzahl der Tokens in der generierten Vervollständigung (Completion).
? usage.total_tokensintegerGesamtzahl der verbrauchten Tokens.

Antwortbeispiel (Response Example)

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

1. Was ist response_format und wie kann eine strikte JSON-Ausgabe des Modells garantiert werden?

Der Parameter response_format ermöglicht es Ihnen, das Modell aufzufordern, Daten in einem bestimmten Format zurückzugeben. Wenn Sie "Strukturierte Ausgaben" (Structured Outputs) verwenden möchten, müssen Sie dies auf {"type": "json_schema"} setzen, Ihr JSON-Schema darin definieren und strict: true aktivieren. Dies stellt sicher, dass das Modell zu 100 % gemäß den von Ihnen definierten Feldern und Datentypen ausgibt, ohne dass Sie in Ihrem Code zusätzliche fehlertolerante JSON-Parsing-Schritte durchführen müssen.

2. Warum wurde meine JSON-Ausgabe abgeschnitten?

Wenn der Wert von choices[0].finish_reason in Ihren Antwortdaten length lautet, bedeutet dies, dass der generierte Text das Limit max_tokens erreicht hat oder das maximale Kontextlängenlimit des Modells überschritten hat. Es wird empfohlen, den Wert des Parameters max_tokens in der Anfrage zu erhöhen.

3. Was ist der Unterschied zwischen den Parametern temperature und top_p? Welchen sollte ich anpassen?

Beides sind Parameter zur Steuerung der Zufälligkeit der Modellausgabe:

  • temperature skaliert die Ausgabewahrscheinlichkeitsverteilung des Modells. Je niedriger der Wert, desto strikter und deterministischer ist die Ausgabe; je höher der Wert, desto divergenter ist die Ausgabe.
  • top_p (Nucleus Sampling) beschränkt das Modell darauf, nur aus den häufigsten Vokabeln auszuwählen, deren kumulative Wahrscheinlichkeit p erreicht. Offizielle Empfehlung: Passen Sie nur einen dieser Parameter an, ändern Sie nicht temperature und top_p gleichzeitig.

4. Was passiert, wenn stream: true aktiviert wird?

Wenn stream: true gesetzt ist, wartet die API nicht, bis die gesamte Antwort generiert ist, um sie zurückzugeben, sondern gibt Datenfragmente in Echtzeit als Stream zurück, ähnlich wie bei einer Schreibmaschine. Das zurückgegebene Datenformat ändert sich zu Server-Sent Events (SSE). Der Client muss den Datenstrom abhören, um delta.content zusammenzusetzen, bis das [DONE]-Zeichen empfangen wird, das das Ende signalisiert.

5. Wie garantiere ich, dass bei jedem Aufruf desselben Prompts exakt dieselbe Antwort zurückgegeben wird?

Obwohl große Sprachmodelle inhärent zufällig sind, können Sie eine maximale deterministische Ausgabe erreichen, indem Sie einen bestimmten seed-Parameter übergeben und die temperature auf 0 setzen. Wenn Sie feststellen, dass sich der system_fingerprint in den zurückgegebenen Ergebnissen ändert, bedeutet dies, dass die Konfiguration des Backend-Modells feinabgestimmt wurde. In diesem Fall kann das Ergebnis trotz desselben Seeds geringfügige Unterschiede aufweisen.