DeepSeek API Integration Guide: OpenAI-Compatible Requests through ECAIX
Gids voor integratie van DeepSeek API: OpenAI-achtige verzoeken via ECAIX
Dit gids laat zien hoe je een DeepSeek model-ID kunt testen via ECAIX met behulp van een OpenAI-achtige API-route. Het behandelt de kleinste werkende verzoek, voorbeelden in Python en curl, verificatie van model-ID's, streaming, gestructureerde output, tools en een diagnostische route voor veelvoorkomende fouten.
De gids beschrijft toegang tot de ECAIX-gateway voor een model-ID die wordt blootgesteld in de huidige ECAIX-catalogus. Het stelt niet vast dat ECAIX de officiële DeepSeek API-route is of dat alle DeepSeek-functies beschikbaar zijn via elke route van de gateway. Controleer de live modelpagina en de documentatie van de leverancier voordat u een werkload naar productie verplaatst.
Wat dit gids verifieert
De voorbeelden gebruiken de ECAIX OpenAI-achtige route en een model-ID die momenteel zichtbaar is in de openbare catalogus bij publicatie. Beschikbaarheid, routing, limieten, prijzen en ondersteunde functies kunnen veranderen. Neem de catalogus en de API-documentatie als de huidige bron van waarheid.
Snelstart
Gebruik deze volgorde als je al een OpenAI SDK-applicatie hebt:
- Ga naar de DeepSeek v4.1 Flash modelpagina en verifieer dat de ID beschikbaar is.
- Maak een ECAIX API-sleutel aan.
- Stel de OpenAI-achtige basisserveradres in op
https://ecaix.com/api/ai/v1. - Houd de SDK en applicatiecode zo mogelijk onveranderd.
- Voer het minimale verzoek uit onderaan uit.
- Voeg streaming, JSON-uitvoer of tools toe na het succesvol uitvoeren van het basiverzoek.
Endpoint en model-ID
Voor OpenAI-achtige klienten gebruik je:
Base URL: https://ecaix.com/api/ai/v1
Model: deepseek-v4.1-flash
De model-ID is geen permanente belofte in een blogpost. Verifieer het in de live modeldirectory voor elke nieuwe integratie of deployement. Als je een andere DeepSeek-familie wilt gebruiken, kopieer de exacte ID van de modeldetaillepagina in plaats van een suffix te gokken.
De endpoint-formaat is ook belangrijk. De SDK moet de basispath met /v1 moeten ontvangen; de klient voegt /chat/completions of een andere operatiemap toe. Voeg geen /chat/completions toe aan base_url als de SDK dit al toevoegt.
Python met de OpenAI SDK
Installer of upgrade de OpenAI Python SDK in je virtuele omgeving:
python -m pip install --upgrade openai
Vervolgens gebruik je de ECAIX basisserveradres en API-sleutel:
const client = new OpenAI({
apiKey: process.env.ECAIX_API_KEY,
baseURL: "https://ecaix.com/api/ai/v1",
});
const response = await client.chat.completions.create({
model: "deepseek-v4.1-flash",
messages: [
{ role: "user", content: "Return one short sentence about API testing." },
],
max_tokens: 128,
});
console.log(response.choices[0].message.content);
Gebruik serverzijde code voor het API-verzoek. Een browserapplicatie moet een eigen backend gebruiken in plaats van de ECAIX-sleutel bloot te leggen in klantside JavaScript.
Curl-diagnostisch verzoek
Als de SDK mislukt, verwijder dan de SDK uit de vergelijking en test de endpoint direct. Bewaar de headers en het lichaam afzonderlijk zodat je kunt onderscheiden tussen een HTTP-probleem en een probleem met de responsformatie.
curl -sS -D /tmp/ecaix-deepseek-headers.txt \
-o /tmp/ecaix-deepseek-response.json \
-w '\nHTTP %{http_code}\n' \
"https://ecaix.com/api/ai/v1/chat/completions" \
-H "Authorization: Bearer ${ECAIX_API_KEY}" \
-H "content-type: application/json" \
-d '{
"model": "deepseek-v4.1-flash",
"messages": [
{"role": "user", "content": "Reply with one short sentence."}
],
"max_tokens": 128
}'
Pas de bewaard gebleven headers of respons niet in een openbaar ticket toe zonder de API-sleutels, verzoeks-ID's, prompts, repository-paden en klantgegevens te verwijderen.
Diagnose van de respons
Gebruik de volgende volgorde:
- HTTP-statuscode: bepaal of het verzoek een geldige endpoint bereikte.
- Responslichaam: lees de leverancier- of gatewayfoutcode.
- Model-ID: kopieer de exacte ID uit de huidige modeldirectory.
- Authenticatie: controleer de sleutelheader, account en permissies.
- Verzoeksvorm: verminder het lichaam tot
model,messagesen een klein outputlimiet. - Functievelden: voeg streaming, JSON of tools stap voor stap toe.
- SDK gedrag: vergelijk het SDK-verzoek met het directe curl-verzoek.
Dit voorkomt dat een klientbibliotheekprobleem wordt verward met modelrouting of accountpermissies.
Streaming-responsen
Als de applicatie incrementele uitvoer nodig heeft, voeg streaming toe na een succesvol normaal verzoek:
stream = client.chat.completions.create(
model="deepseek-v4.1-flash",
messages=[{"role": "user", "content": "Summarize API retries in three points."}],
stream=True,
max_tokens=256,
)
for chunk in stream:
delta = chunk.choices[0].delta.content
if delta:
print(delta, end="", flush=True)
Het exacte gedrag van de gebeurtenis hangt af van de endpoint en SDK. Verifieer hoe uw kader een lege delta, een laatste gebruiksevenement, verbroken verbindingen en [DONE]-stijl afsluiting behandelt. Roep een streaming-implementatie niet voor productie toe voordat u disconnects en herstelprocedures hebt getest.
Gestructureerde output en JSON
Als je machineleesbare output nodig hebt, begin met een gewoon verzoek en voeg dan de kleinste gestructureerde-outputoptie toe die door de endpoint en het model wordt ondersteund. Valideer de teruggegeven inhoud met een echte JSON-parser. Een prompt die zegt "return JSON" is niet hetzelfde als een schema-verplichte respons.
import json
response = client.chat.completions.create(
model="deepseek-v4.1-flash",
messages=[
{
"role": "user",
"content": "Return a JSON object with keys title and priority."
}
],
response_format={"type": "json_object"},
max_tokens=128,
)
payload = json.loads(response.choices[0].message.content)
print(payload["title"])
Of response_format wordt geaccepteerd, hangt af van het model en de route. Als de endpoint een onondersteunde-parameterfout teruggeeft, verwijder dan het veld en verifieer de route-documentatie voordat je een andere format probeert.
Functieoproepen en tools
Tool-oproepen vereisen een aparte test dan tekstgeneratie. Begin met een onschadelijke functie en inspecteer de teruggegeven naam en argumenten voordat u iets uitvoert.
tools = [
{
"type": "function",
"function": {
"name": "get_demo_status",
"description": "Return a fixed status for a local compatibility test.",
"parameters": {
"type": "object",
"properties": {},
"additionalProperties": False,
},
},
}
]
response = client.chat.completions.create(
model="deepseek-v4.1-flash",
messages=[{"role": "user", "content": "Check the demo status."}],
tools=tools,
tool_choice="auto",
max_tokens=128,
)
print(response.choices[0].message.tool_calls)
Een model kan een geldige tekstrespons teruggeven terwijl tool-oproepen mislukt omdat van schema-conversie, onondersteunde parameters of klant-specifieke gedrag. Voer nooit teruggegeven tool-argumenten uit tegen een productiesysteem voordat je de schema-validering en autorisatiecontroles hebt toegevoegd.
OpenAI- en Anthropic-kompatibele endpoints
ECAIX biedt verschillende compatibiliteitsoverzichten voor verschillende klanten:
| Klant of workflow | Documentatiepad | Wat te controleren |
|---|---|---|
| OpenAI Python/Node SDK | /api/ai/v1 | Chat Completions, Responses, streaming, tools |
| Anthropic-stijl client | /api/ai/v1/anthropic | Messages velden, headers, content blocks |
| Claude Code derdende workflow | /api/ai/v1/anthropic | Provider-specifieke gedrag; niet officiële ondersteuning van Anthropic |
Lees de Chat Completions documentatie, Responses documentatie, en Anthropic Messages documentatie voordat je een pad kiest. Hetzelfde model ID kan niet dezelfde velden of gedrag aanbieden op elke compatibiliteitsoverzicht.
Actuele modeldetails
Gebruik de live detailpagina's voor capaciteit en beschikbaarheidscontroles:
Deze pagina's zijn betrouwbaarder dan een statische artikel voor huidige model IDs, contextinformatie en prijslinks.
Gemeenschappelijke fouten
| Status of symptoom | Waarschijnlijk oorzaak | Diagnostische actie |
|---|---|---|
401 | Ontbrekende of ongeldige bearer token | Controleer Authorization, omgevingsvariabele en sleutelstatus |
403 | Sleutel of account ontbreekt aan toegang | Controleer accounttoegang en modelbeschikbaarheid |
404 | Foutieve bas URL of route-einde | Gebruik /api/ai/v1/chat/completions voor directe curl-test |
400 | Ongeldig lichaam of onondersteunde velden | Verwijder optionele velden en herprobeer met een minimaal lichaam |
429 | Rate of quotumgrens | Registreer antwoordheaders, vertraag en controleer accountgrenzen |
5xx | Gateway of upstreamfout | Bewaar requesttijd en antwoord-ID; herhaal volgens je beleid |
| Model niet gevonden | Typo, verwijderd model of route-mismatch | Kopieer de exacte model-ID van /models |
| Tekst werkt, tools mislukt | Schema van tools of modelcapabiliteit mismatch | Test een onschadelijke functie en inspecteer teruggegeven argumenten |
| SDK werkt anders dan curl | SDK-standaard of pathconstructie | Print de SDK-requestconfiguratie en vergelijk de paths |
Veiligheid en productiechecklijst
Voordat je verder gaat dan een testproject, verifieer:
- API-sleutels worden op serverzijde opgeslagen en kunnen worden gerotateerd.
- Prompts en antwoorden bevatten geen onbenoemde geheimen of klantgegevens.
- Je begrijpt of de gateway requests logt en hoe lang logs worden bewaard.
- Modelbeschikbaarheid en prijzen zijn gecontroleerd via de livepagina's.
- Timeouts, herhalingen, idempotentie en quotums worden door je applicatie beheerd.
- Streaming afsluitingen creëren geen dubbele taken.
- Toolaanroepen hebben whitelist, validatie, autorisatie en auditlogs.
- Provider- en gatewayvoorwaarden toestaan de werkzaamheden die je gaat verzenden.
Registreer de integratie voordat je vrijgibt
Schrijf op de datum, klantversie, model-ID, endpoint, HTTP-status en de werkende tests die je daadwerkelijk uitvoerde. Als een test niet is uitgevoerd, markeer het als onbevestigd. Deze registratie maakt het vergelijken van de volgende model- of gateway-update eenvoudiger en voorkomt dat een oude blogvoorbeeld een onondersteunde productieveronderstelling wordt.
Vragen en antwoorden
Is dit de officiële DeepSeek API-endpoint?
Nee. Deze artikel beschrijft ECAIX-gateway toegang tot een model ID die wordt aangeboden in de ECAIX catalogus. Gebruik de officiële DeepSeek API documentatie voor DeepSeek's eigen endpoint, accountregels en provider-specifieke capaciteiten.
Kan ik de OpenAI SDK gebruiken zonder mijn applicatie te herschrijven?
Veel OpenAI SDK-applicaties kunnen beginnen door de bas URL, API-sleutel en model-ID te wijzigen. Je hebt nog steeds tests nodig voor veldondersteuning, streaming, toolaanroepen, antwoordformaten, foutbehandeling en eventuele provider-specifieke functies die je applicatie gebruikt.
Welk DeepSeek-model moet ik gebruiken?
Begin met de modeldirectory en kies op basis van de taak: coderen, redeneren, contextlengte, multimodale input of kostenbehoeften. Gebruik geen enkel model dat je hebt gekopieerd uit een oude artikel. Controleer de huidige model-ID en test het tegen je eigen prompts.
Kan ik dit gebruiken met Claude Code?
De Anthropic-kompatibele weg kan als derde-partijenprovider workflow getest worden, maar Anthropic ondersteunt niet het routeen van Claude Code naar niet-Claude-modellen via een gateway. Gebruik dit niet als officiële Anthropic ondersteuning of als garantie voor volledige compatibiliteit met Claude Code.
Waar kan ik huidige prijzen en grenzen controleren?
Gebruik de ECAIX-prijspagina, modeldirectory en je accountcontroles. Gebruik geen hardcoded prijs uit dit artikel in je applicatie.
## **Pre-productie validatie en integratiebesturing bij DeepSeek API**
Bij het integreren van de DeepSeek API is het essentieel om de integratie zorgvuldig te testen in een pre-productieomgeving om potentiële problemen te identificeren voordat deze in de live-omgeving optreden. Hierbij is het belangrijk om verschillende aspecten te controleren, zoals de juiste API-keys, model-ID’s en de betrouwbaarheid van de API-verbindingen.
### **API-key beheer en veiligheid**
Gebruik een **separate pre-productie API-key** voor testdoeleinden om de live-omgeving te beschermen. Deze key moet alleen toegankelijk zijn voor testautomatisering en niet worden gedeeld met andere omgevingen. Zorg ervoor dat de key niet wordt vastgelegd in openbare configuratiefiles of logbestanden. Bij het opzetten van een pre-productieomgeving, voegt u de API-key toe aan een **geheimenvariable** of een **configuratiemap** die alleen door de testomgeving wordt gelezen.
### **Model-ID hercontrole en consistentie**
Verifieer dat de juiste **model-ID** wordt gebruikt in alle API-berichten. DeepSeek biedt verschillende modellen aan, zoals `deepseek-chat`, `deepseek-coder` of andere specifieke varianten. Zorg ervoor dat u de correcte model-ID selecteert in uw API-verzoeken, vooral als u tussen verschillende modellen wisselt. Een foutieve model-ID kan leiden tot onverwachte resultaten of een verbroken integratie. In de pre-productieomgeving kunt u deze consistentie controleren door een **testscript** te schrijven dat verschillende model-ID’s test.
### **Verzoeklogging zonder gegevensbeveiligingsrisico’s**
Om problemen te diagnosticeren, is het handig om **API-verzoeken en antwoorden** te loggen, maar zorg ervoor dat u **geheimgegevens zoals API-keys en persoonlijke gegevens** niet opslaat. Gebruik een **maskeringsstrategie** voor sensitive data, zoals het vervangen van API-keys door placeholderwaarden zoals `***DEEPSEEK_API_KEY***`. Log ook de **statuscodes**, **latentietijden** en **eventuele fouten** om een duidelijk beeld te krijgen van de prestaties.
### **Retries en idempotentie voor betrouwbaarheid**
DeepSeek API’s kunnen onder bepaalde omstandigheden tijdelijk beschikbaar zijn of een fout genereren. Om dit te voorkomen, kunt u **automatische retries** implementeren voor tijdelijke fouten (bijvoorbeeld HTTP 5xx-errors). Zorg ervoor dat u **idempotente verzoeken** gebruikt, vooral bij het verwerken van grote hoeveelheden data, om dubbelverwerking te voorkomen. Een idempotent verzoek is een verzoek dat hetzelfde resultaat oplevert, ongeacht hoeveel keer het wordt uitgevoerd.
### **Streaming disconnects en herstelmechanismen**
Als de verbinding tijdens een **streaming-antwoord** (bijvoorbeeld bij het ontvangen van tekstfragmenten) onderbreekt, kan dit leiden tot verlies van gegevens. Test de integratie in een pre-productieomgeving om te zien hoe de API reageert op dergelijke disconnects. Gebruik **reconnect-mechanismen** of **buffering** om verloren gegevens te herstellen. Zorg ervoor dat uw applicatie **timeout’s** en **reconnect-tijden** correct configureert om de continuïteit van de streaming te waarborgen.
### **Autorisatie van tools en toegang tot de API**
Voordat u de API in productie gebruikt, moet u ervoor zorgen dat uw tooling **juist geautoriseerd** is. Dit omvat het controleren van:
- **RBAC (Role-Based Access Control)** om te verzekeren dat alleen autoriseerde rollen toegang hebben tot specifieke API-endpoints.
- **IP-beperkingen** om onbevoegde toegang te voorkomen.
- **API-versiebeheer** om te voorkomen dat u verouderde of onondersteunde API’s gebruikt.
### **Wanneer opnieuw testen na wijzigingen in de gateway of model**
Na wijzigingen in de **API-gateway** (bijvoorbeeld bij het bijwerken van de API-versie) of het **model** (bijvoorbeeld