{"id":108788,"date":"2026-07-25T10:20:09","date_gmt":"2026-07-25T10:20:09","guid":{"rendered":"https:\/\/www.europesays.com\/be-nl\/108788\/"},"modified":"2026-07-25T10:20:09","modified_gmt":"2026-07-25T10:20:09","slug":"deepseek-api-gebruiken-python-en-javascript-handleiding","status":"publish","type":"post","link":"https:\/\/www.europesays.com\/be-nl\/108788\/","title":{"rendered":"DeepSeek API gebruiken: Python- en JavaScript-handleiding"},"content":{"rendered":"<p>Met de <a href=\"https:\/\/aiwereld.nl\/deepseek\" title=\"DeepSeek\" rel=\"nofollow noopener\" target=\"_blank\">DeepSeek<\/a> API kun je V4 Flash en V4 Pro integreren in een website, applicatie, programmeerassistent of geautomatiseerde workflow.<\/p>\n<p>De API is compatibel met veel onderdelen van het OpenAI-formaat. Daarnaast biedt DeepSeek een afzonderlijk, gedeeltelijk compatibel Anthropic-endpoint. Daardoor kun je bestaande software vaak met beperkte wijzigingen migreren.<\/p>\n<p>Deze handleiding richt zich uitsluitend op de technische API. Voor het volledige productoverzicht lees je onze <a href=\"https:\/\/aiwereld.nl\/blog\/wat-is-deepseek-ai-de-nieuwe-concurrent-van-chatgpt-en-claude\" target=\"_blank\" rel=\"nofollow noopener\">centrale DeepSeek-gids<\/a>.Wat heb je nodig?een DeepSeek-platformaccount;API-tegoed;een API-sleutel;Python of Node.js;een veilige manier om geheime sleutels op te slaan.<\/p>\n<p>Het ontwikkelaarsplatform staat op:<\/p>\n<p><a href=\"https:\/\/platform.deepseek.com\/\" target=\"_blank\" rel=\"nofollow noopener\">https:\/\/platform.deepseek.com\/<\/a><\/p>\n<p>De documentatie staat op:<\/p>\n<p><a href=\"https:\/\/api-docs.deepseek.com\/\" target=\"_blank\" rel=\"nofollow noopener\">https:\/\/api-docs.deepseek.com\/<\/a>Een DeepSeek API-key makenLog in op het DeepSeek-platform.Open het onderdeel voor API-sleutels.Maak een nieuwe sleutel.Kopieer deze direct naar een veilige wachtwoord- of secretmanager.Voeg voldoende saldo toe.Gebruik verschillende sleutels voor ontwikkeling en productie.<\/p>\n<p>Plaats een API-sleutel nooit:<\/p>\n<p>in openbare broncode;in een browserbundle;in screenshots;in een Git-repository;rechtstreeks in een mobiele app;in foutmeldingen of onbeveiligde logs.<\/p>\n<p>Laat je eigen server de API-aanroep uitvoeren.<\/p>\n<p>Actuele model-ID\u2019s<\/p>\n<p>Gebruik voor nieuwe implementaties:<\/p>\n<p>deepseek-v4-flash<br \/>\ndeepseek-v4-pro<\/p>\n<p>De oude modelnamen:<\/p>\n<p>deepseek-chat<br \/>\ndeepseek-reasoner<\/p>\n<p>zijn sinds 24 juli 2026 om 15:59 UTC uitgefaseerd. Controleer bestaande configuratiebestanden, environment variables, testfixtures en fallbacklogica.<\/p>\n<p>De verschillen tussen de modellen staan in ons <a href=\"https:\/\/aiwereld.nl\/blog\/deepseek-modellen-v4-pro-v4-flash-r1-v3\" rel=\"nofollow noopener\" target=\"_blank\">DeepSeek-modellenoverzicht<\/a>.DeepSeek API gebruiken met Python<\/p>\n<p>Installeer eerst de OpenAI-SDK:<\/p>\n<p>pip install openai<\/p>\n<p>Sla je sleutel op als omgevingsvariabele:<\/p>\n<p>export DEEPSEEK_API_KEY=&#8221;jouw_api_sleutel&#8221;<\/p>\n<p>Gebruik daarna:<\/p>\n<p>import os<br \/>\nfrom openai import OpenAI<\/p>\n<p>client = OpenAI(<br \/>\n    api_key=os.environ[&#8220;DEEPSEEK_API_KEY&#8221;],<br \/>\n    base_url=&#8221;https:\/\/api.deepseek.com&#8221;,<br \/>\n)<\/p>\n<p>response = client.chat.completions.create(<br \/>\n    model=&#8221;deepseek-v4-flash&#8221;,<br \/>\n    messages=[<br \/>\n        {<br \/>\n            &#8220;role&#8221;: &#8220;system&#8221;,<br \/>\n            &#8220;content&#8221;: &#8220;Je bent een nauwkeurige Nederlandstalige assistent.&#8221;,<br \/>\n        },<br \/>\n        {<br \/>\n            &#8220;role&#8221;: &#8220;user&#8221;,<br \/>\n            &#8220;content&#8221;: &#8220;Leg context caching uit in maximaal 150 woorden.&#8221;,<br \/>\n        },<br \/>\n    ],<br \/>\n    stream=False,<br \/>\n    extra_body={&#8220;thinking&#8221;: {&#8220;type&#8221;: &#8220;disabled&#8221;}},<br \/>\n)<\/p>\n<p>print(response.choices[0].message.content)<\/p>\n<p>Vang in productie ontbrekende environment variables en API-fouten af. Print geen volledige responsobjecten wanneer deze persoonsgegevens of vertrouwelijke invoer kunnen bevatten.<\/p>\n<p>DeepSeek API gebruiken met JavaScript<\/p>\n<p>Installeer de SDK:<\/p>\n<p>npm install openai<\/p>\n<p>Sla de sleutel op in je serveromgeving en gebruik:<\/p>\n<p>import OpenAI from &#8220;openai&#8221;;<\/p>\n<p>const client = new OpenAI({<br \/>\n  apiKey: process.env.DEEPSEEK_API_KEY,<br \/>\n  baseURL: &#8220;https:\/\/api.deepseek.com&#8221;,<br \/>\n});<\/p>\n<p>async function main() {<br \/>\n  const response = await client.chat.completions.create({<br \/>\n    model: &#8220;deepseek-v4-flash&#8221;,<br \/>\n    messages: [<br \/>\n      {<br \/>\n        role: &#8220;system&#8221;,<br \/>\n        content: &#8220;Je bent een nauwkeurige Nederlandstalige assistent.&#8221;,<br \/>\n      },<br \/>\n      {<br \/>\n        role: &#8220;user&#8221;,<br \/>\n        content: &#8220;Geef drie praktische toepassingen van een AI-API.&#8221;,<br \/>\n      },<br \/>\n    ],<br \/>\n    thinking: { type: &#8220;disabled&#8221; },<br \/>\n    stream: false,<br \/>\n  });<\/p>\n<p>  console.log(response.choices[0].message.content);<br \/>\n}<\/p>\n<p>main().catch((error) =&gt; {<br \/>\n  console.error(&#8220;DeepSeek-aanroep mislukt:&#8221;, error.status ?? &#8220;onbekend&#8221;);<br \/>\n  process.exitCode = 1;<br \/>\n});<\/p>\n<p>Stuur de sleutel nooit vanuit client-side JavaScript naar DeepSeek.<\/p>\n<p>Thinking mode inschakelen<\/p>\n<p>Beide V4-modellen ondersteunen thinking mode. Deze staat volgens de documentatie standaard aan.<\/p>\n<p>Python:<\/p>\n<p>response = client.chat.completions.create(<br \/>\n    model=&#8221;deepseek-v4-pro&#8221;,<br \/>\n    messages=[<br \/>\n        {<br \/>\n            &#8220;role&#8221;: &#8220;user&#8221;,<br \/>\n            &#8220;content&#8221;: &#8220;Analyseer de mogelijke oorzaken van deze race condition.&#8221;,<br \/>\n        }<br \/>\n    ],<br \/>\n    reasoning_effort=&#8221;high&#8221;,<br \/>\n    extra_body={&#8220;thinking&#8221;: {&#8220;type&#8221;: &#8220;enabled&#8221;}},<br \/>\n)<\/p>\n<p>De beschikbare inspanningsniveaus zijn high en max. Waarden als low en medium worden in thinking mode naar high omgezet.<\/p>\n<p>Thinking mode negeert onder meer:<\/p>\n<p>temperature;top_p;presence_penalty;frequency_penalty.<\/p>\n<p>De API kan redeneerinhoud afzonderlijk retourneren via reasoning_content. Bij tool calls moet die inhoud correct worden teruggestuurd in volgende verzoeken. Anders kan een 400-fout ontstaan.<\/p>\n<p>Streaming gebruiken<\/p>\n<p>Bij streaming ontvang je delen van het antwoord terwijl deze worden gegenereerd.<\/p>\n<p>stream = client.chat.completions.create(<br \/>\n    model=&#8221;deepseek-v4-flash&#8221;,<br \/>\n    messages=[<br \/>\n        {&#8220;role&#8221;: &#8220;user&#8221;, &#8220;content&#8221;: &#8220;Schrijf een korte uitleg over API-streaming.&#8221;}<br \/>\n    ],<br \/>\n    stream=True,<br \/>\n    extra_body={&#8220;thinking&#8221;: {&#8220;type&#8221;: &#8220;disabled&#8221;}},<br \/>\n)<\/p>\n<p>for chunk in stream:<br \/>\n    delta = chunk.choices[0].delta.content<br \/>\n    if delta:<br \/>\n        print(delta, end=&#8221;&#8221;, flush=True)<\/p>\n<p>Streaming verbetert de waargenomen snelheid, maar verlaagt niet automatisch het tokengebruik.<\/p>\n<p>JSON-uitvoer<\/p>\n<p>Voor gestructureerde uitvoer gebruik je:<\/p>\n<p>import json<\/p>\n<p>response = client.chat.completions.create(<br \/>\n    model=&#8221;deepseek-v4-flash&#8221;,<br \/>\n    messages=[<br \/>\n        {<br \/>\n            &#8220;role&#8221;: &#8220;system&#8221;,<br \/>\n            &#8220;content&#8221;: (<br \/>\n                &#8220;Geef geldige JSON met de velden title, summary en risks. &#8221;<br \/>\n                &#8220;Gebruik geen tekst buiten het JSON-object.&#8221;<br \/>\n            ),<br \/>\n        },<br \/>\n        {<br \/>\n            &#8220;role&#8221;: &#8220;user&#8221;,<br \/>\n            &#8220;content&#8221;: &#8220;Analyseer dit productvoorstel: &#8230;&#8221;,<br \/>\n        },<br \/>\n    ],<br \/>\n    response_format={&#8220;type&#8221;: &#8220;json_object&#8221;},<br \/>\n)<\/p>\n<p>data = json.loads(response.choices[0].message.content)<\/p>\n<p>DeepSeek adviseert:<\/p>\n<p>het woord json in de prompt te gebruiken;de gewenste structuur te tonen;voldoende outputtokens beschikbaar te stellen;lege of ongeldige uitvoer af te vangen;alle velden na ontvangst te valideren.<\/p>\n<p>Geldige JSON is nog geen inhoudelijk betrouwbare data. Controleer typen, toegestane waarden en zakelijke regels in je eigen code.<\/p>\n<p>Tool calls<\/p>\n<p>Met tool calls kan het model aangeven welke functie je applicatie moet uitvoeren. Het model voert die functie niet zelf uit.<\/p>\n<p>Een veilige cyclus is:<\/p>\n<p>stuur beschikbare tools en de gebruikersvraag;ontvang een tool call;valideer functienaam en argumenten;controleer autorisatie;voer de functie zelf uit;stuur alleen het noodzakelijke resultaat terug;laat het model een eindantwoord formuleren.<\/p>\n<p>Geef een AI-model nooit onbeperkte toegang tot betalingen, verwijderacties, productieomgevingen of beheerdersrechten. Bouw goedkeuring in voor handelingen met gevolgen.<\/p>\n<p>Context caching<\/p>\n<p>DeepSeek caching staat standaard aan. Het systeem kan eerder verwerkte, identieke prefixes tegen een lager tarief verwerken.<\/p>\n<p>Je hoeft daarvoor geen aparte cache-ID te maken. Wel helpt het om:<\/p>\n<p>vaste instructies vooraan te plaatsen;lange broninformatie ongewijzigd te houden;variabele gebruikersvragen achteraan te zetten;tokengebruik uit de API-respons te loggen.<\/p>\n<p>Controleer:<\/p>\n<p>prompt_cache_hit_tokens<br \/>\nprompt_cache_miss_tokens<\/p>\n<p>Caching is best effort. Ontwerp je begroting niet alsof iedere aanvraag gegarandeerd een cache-hit krijgt.<\/p>\n<p>OpenAI-compatibiliteit<\/p>\n<p>De OpenAI-compatibele basis-URL is:<\/p>\n<p>https:\/\/api.deepseek.com<\/p>\n<p>Compatibiliteit betekent niet dat iedere OpenAI-functie of parameter identiek werkt. Test onder meer:<\/p>\n<p>reasoningvelden;tool calls;streaming;JSON;foutobjecten;tokengebruik;time-outs;maximale context.<\/p>\n<p>Gebruik integratietests in plaats van alleen de basis-URL te vervangen.<\/p>\n<p>Anthropic-compatibiliteit<\/p>\n<p>De Anthropic-basis-URL is:<\/p>\n<p>https:\/\/api.deepseek.com\/anthropic<\/p>\n<p>DeepSeek ondersteunt veel tekst-, streaming- en toolvelden. Niet alles wordt ondersteund. Afbeeldingen, documenten, bepaalde MCP-velden en code-executionresultaten zijn volgens de actuele compatibiliteitstabel niet volledig beschikbaar.<\/p>\n<p>DeepSeek kan Claude-modelnamen automatisch naar eigen modellen vertalen:<\/p>\n<p>namen die met claude-opus beginnen worden naar V4 Pro vertaald;claude-sonnet en claude-haiku worden naar V4 Flash vertaald.<\/p>\n<p>Gebruik in eigen code liever direct de DeepSeek-model-ID. Dat voorkomt onduidelijkheid.<\/p>\n<p>Rate limits en gelijktijdigheid<\/p>\n<p>DeepSeek publiceert momenteel accountlimieten van:<\/p>\n<p>2.500 gelijktijdige verbindingen voor V4 Flash;500 voor V4 Pro.<\/p>\n<p>Bij overschrijding kan een HTTP 429-fout ontstaan. Deze limieten gelden op accountniveau, niet afzonderlijk per sleutel.<\/p>\n<p>Gebruik:<\/p>\n<p>wachtrijen;begrensde concurrency;time-outs;retries met exponenti\u00eble vertraging en jitter;idempotentie waar nodig;een fallback voor kritieke toepassingen.Belangrijke foutcodesCodeBetekenisActie400Ongeldige aanvraagControleer JSON en velden401Authenticatie misluktControleer de API-sleutel402Onvoldoende saldoControleer of vul saldo aan422Ongeldige parametersPas modelparameters aan429Limiet bereiktVertraag en probeer later opnieuw500ServerfoutTijdelijk opnieuw proberen503OverbelastingWachten, retry of fallback gebruiken<\/p>\n<p>Log statuscode, request-ID en technische context, maar verwijder sleutels en gevoelige promptinhoud.<\/p>\n<p>Kosten beheersen<\/p>\n<p>DeepSeek rekent per token. Gebruik daarom:<\/p>\n<p>V4 Flash als standaard;een maximale outputlengte;korte, relevante chatgeschiedenis;caching voor vaste prefixes;eigen budgetlimieten;waarschuwingen op afwijkend gebruik;afzonderlijke sleutels per applicatie;logging per klant of functie.Bekijk de volledige tarieven in <a href=\"https:\/\/aiwereld.nl\/blog\/deepseek-prijzen-gratis-api-kosten\" target=\"_blank\" rel=\"nofollow noopener\">DeepSeek-prijzen en API-kosten<\/a>.Productiechecklist<\/p>\n<p>Voordat je live gaat:<\/p>\n<p>verwijder oude model-ID\u2019s;sla sleutels in een secretmanager op;valideer alle modeluitvoer;anonimiseer persoonsgegevens;test time-outs en retries;begrens toolrechten;voorkom promptinjectie vanuit documenten;log tokens en kosten;bouw een providerfallback;controleer privacy- en bewaarbeleid;maak menselijke controle verplicht bij belangrijke beslissingen.Conclusie<\/p>\n<p>De DeepSeek API is aantrekkelijk door lage kosten, een groot contextvenster en compatibiliteit met bestaande OpenAI- en Anthropic-workflows.<\/p>\n<p>Gebruik voor de meeste toepassingen V4 Flash en schakel alleen gericht over op V4 Pro. Migreer oude model-ID\u2019s, beveilig API-sleutels, valideer gestructureerde uitvoer en behandel tool calls als voorgestelde handelingen die je eigen software eerst moet controleren.<\/p>\n","protected":false},"excerpt":{"rendered":"Met de DeepSeek API kun je V4 Flash en V4 Pro integreren in een website, applicatie, programmeerassistent of&hellip;\n","protected":false},"author":2,"featured_media":108789,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_share_on_mastodon":"0"},"categories":[38],"tags":[27,26,25,7033,15879,39,41,42,46,40,23528,45,43,44],"class_list":["post-108788","post","type-post","status-publish","format-standard","has-post-thumbnail","category-wetenschap-en-technologie","tag-be","tag-belgie","tag-belgium","tag-deepseek","tag-programmeren","tag-science","tag-science-and-technology","tag-scienceandtechnology","tag-technologie","tag-technology","tag-tutorials","tag-wetenschap","tag-wetenschap-en-technologie","tag-wetenschaptechnologie"],"share_on_mastodon":{"url":"https:\/\/pubeurope.com\/@be_nl\/116980116847546142","error":""},"_links":{"self":[{"href":"https:\/\/www.europesays.com\/be-nl\/wp-json\/wp\/v2\/posts\/108788","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.europesays.com\/be-nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.europesays.com\/be-nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.europesays.com\/be-nl\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.europesays.com\/be-nl\/wp-json\/wp\/v2\/comments?post=108788"}],"version-history":[{"count":0,"href":"https:\/\/www.europesays.com\/be-nl\/wp-json\/wp\/v2\/posts\/108788\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.europesays.com\/be-nl\/wp-json\/wp\/v2\/media\/108789"}],"wp:attachment":[{"href":"https:\/\/www.europesays.com\/be-nl\/wp-json\/wp\/v2\/media?parent=108788"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.europesays.com\/be-nl\/wp-json\/wp\/v2\/categories?post=108788"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.europesays.com\/be-nl\/wp-json\/wp\/v2\/tags?post=108788"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}