Nodig vrienden uit en verdien gratis tokens!Meer weten

Chat-completions maken (streaming)

Referentie naar officiële documentatie: OpenAI Chat Create

Beschrijving van de API

Gegeven een prompt retourneert het model één of meer voorspelde aanvullingen op het gesprek. Deze API ondersteunt zowel standaardantwoorden als streaming-antwoorden (SSE), en kan ook de waarschijnlijkheden van alternatieve tokens per positie retourneren.

Verzoekbeschrijving

  • HTTP-methode: POST
  • Request-URL: https://api.codingplanx.ai/v1/chat/completions

Requestheaders (Headers)

ParameternaamVerplichtTypeVoorbeeldBeschrijving
Content-TypeJastringapplication/jsonGegevensindeling
AcceptJastringapplication/jsonGewenste response-indeling
AuthorizationNee*stringBearer {{YOUR_API_KEY}}Authenticatietoken (bij daadwerkelijke aanroepen doorgaans verplicht)
X-Forwarded-HostNeestringlocalhost:5173Hostnaam van de proxy (meestal niet nodig om handmatig mee te sturen)

Requestbody (Request Body)

ParameternaamTypeVerplichtBeschrijving
modelstringJaDe model-ID die gebruikt moet worden. Zie de compatibiliteitstabel van het modellen-endpoint voor ondersteunde modellen.
messagesarrayJaDe lijst met berichten in het gesprek tot nu toe. Bevat de velden role en content.
toolsarrayJaEen lijst met tools die het model kan aanroepen. Momenteel worden alleen functies als tools ondersteund.
tool_choiceobjectJaBepaalt welke functie het model moet aanroepen, indien van toepassing. none betekent geen aanroep, auto betekent automatisch kiezen, of forceer een specifieke functie.
extra_bodyobjectJaExtra parameters. Bevat enable_thinking (boolean), waarmee de denkmodus wordt ingeschakeld indien het model dit ondersteunt.
temperatureinteger/floatNeeSamplingtemperatuur, tussen 0 en 2. Hogere waarden (zoals 0.8) maken de output willekeuriger; lagere waarden (zoals 0.2) maken de output geconcentreerder en consistenter. Het wordt aangeraden óf deze parameter óf top_p aan te passen, maar niet beide tegelijk.
top_pinteger/floatNeeParameter voor nucleus sampling. 0.1 betekent dat alleen tokens worden overwogen die samen de bovenste 10% van de waarschijnlijkheidsmassa vormen. Het wordt aangeraden óf deze parameter óf temperature aan te passen, maar niet beide tegelijk.
nintegerNeeHoeveel chat-completionkeuzes per invoerbericht moeten worden gegenereerd. Standaard is 1.
streambooleanNeeOf streaming-uitvoer wordt ingeschakeld. Als dit op true staat, worden gedeeltelijke bericht-incrementen verzonden via Server-Sent Events (SSE), en de stream eindigt met het bericht data: [DONE].
stopstring/arrayNeeEen reeks waarop de API stopt met het genereren van verdere tokens (maximaal 4). Standaard is null.
max_tokensintegerNeeHet maximale aantal tokens dat in de chat-completion mag worden gegenereerd. De totale lengte van invoer plus output is beperkt door de contextlengte van het model.
presence_penaltynumberNeeEen getal tussen -2.0 en 2.0. Positieve waarden straffen nieuwe tokens af op basis van of ze al in de tekst zijn voorgekomen, waardoor het model eerder nieuwe onderwerpen aansnijdt.
frequency_penaltynumberNeeEen getal tussen -2.0 en 2.0. Positieve waarden straffen nieuwe tokens af op basis van hun huidige frequentie in de tekst, waardoor herhaling afneemt.
logit_biasobjectNeeWijzigt de kans dat opgegeven tokens in de completion verschijnen. Accepteert een JSON-object dat token-ID’s koppelt aan biaswaarden (-100 tot 100).
userstringNeeEen unieke identifier voor de eindgebruiker, om misbruikmonitoring en -detectie te ondersteunen.
response_formatobjectNeeGeeft het uitvoerformaat van het model op. Stel in op { "type": "json_object" } om de JSON-modus in te schakelen. Let op: wanneer dit gebruikt wordt, moet in de berichten expliciet worden aangegeven dat het model JSON moet genereren, anders kan een eindeloze stroom van witruimte ontstaan.
seenintegerNeeStelt een seed in voor deterministische sampling (Beta-functionaliteit).

Voorbeeldrequest

{
  "model": "gpt-5-mini",
  "max_tokens": 1000,
  "messages": [
    {
      "role": "system",
      "content": "Je bent een behulpzame assistent."
    },
    {
      "role": "user",
      "content": "Hallo"
    }
  ],
  "temperature": 1.0,
  "stream": true,
  "stream_options": {
    "include_usage": true
  }
}

Beschrijving van de response

  • Content-Type: application/json (niet-streaming) of text/event-stream (bij streaming wanneer stream: true)

Responseparameters (niet-streamingstructuur)

ParameternaamTypeBeschrijving
idstringDe unieke identifier van de chat-completion.
objectstringHet objecttype, meestal chat.completion of chat.completion.chunk.
createdintegerTijdstempel van aanmaak (Unix-tijd).
choicesarrayLijst met completionkeuzes.
choices[].indexintegerDe index binnen de lijst met keuzes.
choices[].messageobjectHet door het model gegenereerde berichtobject, met role en content. Bij streaming is dit delta.
choices[].finish_reasonstringDe reden waarom de generatie is gestopt (zoals stop, length, enz.).
usageobjectStatistieken over tokenverbruik van de API.
usage.prompt_tokensintegerHet aantal tokens dat door de prompt is verbruikt.
usage.completion_tokensintegerHet aantal tokens dat door de modeloutput is verbruikt.
usage.total_tokensintegerHet totale aantal tokens dat bij deze aanvraag is verbruikt.

Voorbeeldresponse (niet-streaming / geaggregeerd streamingresultaat)

{
    "id": "chatcmpl-123",
    "object": "chat.completion",
    "created": 1677652288,
    "choices": [
        {
            "index": 0,
            "message": {
                "role": "assistant",
                "content": "\r
\r
Hallo, hoe kan ik je vandaag helpen?"
            },
            "finish_reason": "stop"
        }
    ],
    "usage": {
        "prompt_tokens": 9,
        "completion_tokens": 12,
        "total_tokens": 21
    }
}

(Opmerking: als in de aanvraag stream: true is opgegeven, bestaat de responsebody uit een SSE-eventstream gescheiden door regeleinden. Elke regel begint met data: {...}, en eindigt met data: [DONE].)


FAQs (veelgestelde vragen)

V1: Hoe parse ik een streaming-response wanneer stream: true is ingeschakeld?
A: Wanneer stream: true is ingeschakeld, retourneert de API gegevens via het Server-Sent Events (SSE)-protocol. De client moet de responsestream regel voor regel uitlezen, regels zoeken die beginnen met data: , en deze vervolgens als JSON parsen. Let erop dat het laatste bericht in de stream altijd data: [DONE] is; dit markeert het einde van de stream. Tijdens het parsen moet deze eindmarkering worden uitgefilterd.

V2: Waarom blijft mijn verzoek hangen of retourneert het een eindeloze stroom witruimte nadat ik response_format op JSON heb gezet?
A: Wanneer u { "type": "json_object" } gebruikt om de JSON-modus in te schakelen, moet u in de meegegeven messages (meestal in de system prompt) expliciet aangeven dat het model JSON moet genereren. Zonder zo’n instructie kan het model vastlopen en eindeloos witruimte genereren totdat de limiet van max_tokens wordt bereikt.

V3: Kunnen de parameters temperature en top_p tegelijk worden aangepast?
A: Officieel wordt sterk afgeraden om beide tegelijk aan te passen. Beide parameters regelen de mate van willekeur in de modeloutput. Als u stabielere en voorspelbaardere resultaten wilt, verlaag dan temperature of verklein top_p; als u creatievere antwoorden wilt, verhoog dan een van beide. Het gelijktijdig aanpassen van beide maakt het resultaat moeilijk voorspelbaar.

V4: Wat doet extra_body.enable_thinking?
A: Dit is een specifieke uitbreidingsparameter van deze API. Wanneer {"enable_thinking": true} wordt meegegeven, zal het model, indien ondersteund door de backend, de denkmodus inschakelen (Thinking Mode/CoT), zoals bij sommige redeneer-geoptimaliseerde grote modellen. Als het model dit niet ondersteunt, wordt deze parameter doorgaans genegeerd.

V5: Waarom is finish_reason in de response length in plaats van stop?
A: Wanneer finish_reason de waarde length heeft, betekent dit dat het model werd afgekapt voordat het een volledig antwoord kon genereren. Dit komt meestal doordat max_tokens te laag is ingesteld, of omdat de totale hoeveelheid invoer- en outputtokens de maximale contextwindow van het huidige model overschrijdt. Probeer max_tokens te verhogen.