Chat Completion aanmaken - DeepSeek v3.1 controle van denkniveau (streaming)
Deze endpoint wordt gebruikt om een chatgesprek met het DeepSeek v3.1-model aan te maken. Ondersteunt streaming-uitvoer (SSE) en nauwkeurige controle over het diep nadenken van het model (Thinking).
Endpointdetails
- Status van de endpoint: Uitgebracht (Released)
- HTTP-methode:
POST - Request-URL:
https://api.codingplanx.ai/v1/chat/completions
Request-headers (Headers)
| Parameternaam | Verplicht | Type | Voorbeeldwaarde | Beschrijving |
|---|---|---|---|---|
Content-Type | Ja | String | application/json | Gegevensformaat |
Accept | Ja | String | application/json | Verwacht responsformaat |
Authorization | Nee | String | Bearer {{YOUR_API_KEY}} | Authenticatiegegevens (in de praktijk meestal verplicht) |
(Opmerking: de X-Forwarded-Host header is momenteel uitgeschakeld)
Request-body (Request Body)
Content-Type: application/json
| Parameternaam | Verplicht | Type | Beschrijving |
|---|---|---|---|
model | Ja | String | De ID van het te gebruiken model. Bijvoorbeeld: deepseek-v3-1-250821 |
messages | Ja | Array of Objects | De lijst met berichten in het gesprek. |
? role | Ja | String | De rol van de afzender van het bericht (zoals system, user, assistant). |
? content | Ja | String | De concrete inhoud van het bericht. |
max_tokens | Nee | Integer | Beperkt het maximale aantal completion-tokens dat het model in één request mag genereren. De totale lengte van input- en outputtokens blijft beperkt door de contextlimiet van het model. |
temperature | Nee | Number | Sampling-temperatuur, tussen 0 en 2. Hogere waarden (zoals 0.8) maken de uitvoer willekeuriger; lagere waarden (zoals 0.2) maken de uitvoer geconcentreerder en deterministischer. |
stream | Nee | Boolean | Als dit op true staat, worden berichtincrementen als SSE (server-sent events) gestreamd. De stream eindigt met data: [DONE]. |
stream_options | Nee | Object | Opties voor streaming-uitvoer. Deze parameter kan alleen worden ingesteld als stream op true staat. |
? include_usage | Nee | Boolean | Als dit op true staat, wordt vóór data: [DONE] een extra chunk verzonden. In deze chunk toont het veld usage de tokenverbruiksstatistieken van de volledige request. |
thinking | Nee | Object | Sommige modellen met diep-denkcapaciteit ondersteunen via dit veld controle over het in- of uitschakelen van diep nadenken. |
? type | Nee | String | enabled: diep nadenken geforceerd inschakelen.<br>disabled: geforceerd uitschakelen.<br>auto: het model beslist zelf. |
Voorbeeld van request
{
"model": "deepseek-v3-1-250821",
"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
},
"thinking": {
"type": "enabled"
}
}
Response-body (Response)
HTTP-statuscode: 200 OK
Content-Type: application/json
(Opmerking: wanneer stream: true is ingesteld, is het retourformaat een SSE-datastroom; elke data-chunk is een JSON-string met de onderstaande structuur. Hieronder staat de standaard JSON-structuur voor niet-streaming of voor een volledig samengevoegde streaming-respons.)
| Veldnaam | Type | Beschrijving |
|---|---|---|
id | String | Unieke identificatie van de request. |
object | String | Objecttype, meestal chat.completion of chat.completion.chunk. |
created | Integer | Tijdstempel van aanmaak (in seconden). |
choices | Array of Objects | Lijst met door het model gegenereerde antwoorden. |
? index | Integer | De index van dit antwoord in de lijst choices. |
? message | Object | Het gegenereerde antwoordbericht (bij streaming meestal delta). |
? role | String | Rol (meestal assistant). |
? content | String | De concrete inhoud van het antwoord. |
? finish_reason | String | De reden waarom de generatie stopte (zoals stop, length). |
usage | Object | Statistieken over tokengebruik. |
? prompt_tokens | Integer | Aantal tokens verbruikt door de prompt. |
? completion_tokens | Integer | Aantal tokens verbruikt door de gegenereerde inhoud. |
? total_tokens | Integer | Totaal aantal verbruikte tokens. |
Voorbeeld van response (JSON)
{
"id": "chatcmpl-123",
"object": "chat.completion",
"created": 1677652288,
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "\r
\r
Hallo, waarmee kan ik je vandaag helpen?"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 9,
"completion_tokens": 12,
"total_tokens": 21
}
}
Veelgestelde vragen (FAQs)
V1: Hoe krijg ik tokenverbruiksinformatie (usage) bij een streaming (SSE) request?
A1: Je moet in de request-body stream op true zetten en daarnaast stream_options: {"include_usage": true} configureren. Dan pusht de server vóór het einde van de SSE-stream (data: [DONE]) een extra data-chunk. In deze chunk is de array choices leeg, maar bevat het veld usage de volledige tokenstatistieken.
V2: Wat is het verschil tussen enabled en auto in de parameter thinking?
A2:
enabled: dwingt het model om vóór het geven van het definitieve antwoord “diep na te denken (Chain of Thought)”. Dit levert doorgaans betere redeneerresultaten op, maar kan ook de responstijd (tijd tot eerste token) en het aantal outputtokens verhogen.auto: laat de beslissing aan het model over. Het model beoordeelt op basis van de complexiteit van je vraag inmessagesautomatisch of diep nadenken nodig is.
V3: Waarom krijg ik een 401 Unauthorized-foutmelding?
A3: Dit betekent meestal dat de authenticatie is mislukt. Controleer of het veld Authorization in je request-header correct is ingevuld volgens het formaat Bearer {{YOUR_API_KEY}}, en of je API-sleutel geldig en niet verlopen is.
V4: Wordt de inhoud van het denkproces teruggegeven wanneer thinking is ingeschakeld?
A4: Volgens de standaard OpenAI-compatibele implementatie kan de inhoud van diep nadenken bij streaming-uitvoer worden teruggegeven binnen specifieke markeringen (zoals tags <think>...</think>) of via specifieke chunk-velden. Let er daarom bij het parseren van de front-end streamdata op dat je de denkprocesinhoud in content correct verwerkt, zodat je een “aan het nadenken”-UI-effect aan gebruikers kunt tonen.
V5: Wat betekent finish_reason: "length"?
A5: Dit betekent dat de uitvoer van het model de door jou ingestelde limiet max_tokens heeft bereikt, of dat de maximale contextwindow van het model zelf is geraakt, waardoor het antwoord is afgekapt. Als het antwoord onvolledig is, kun je proberen de waarde van max_tokens te verhogen.