DeepSeek API Integration Guide: OpenAI-Compatible Requests through ECAIX
Pagbubuklod ng ECAIX API: Pagtataguyod ng Requests na Kompatibo sa OpenAI sa DeepSeek
Ito ay isang guidadan na nagpapakita kung paano magtest sa isang ID ng modelo ng DeepSeek gamit ang ECAIX sa isang endpoint na kompatibo sa OpenAI. Itinutukoy ang pinakamaliit na working request, mga halimbawa sa Python at curl, pagtukoy sa ID ng modelo, pagtanghal ng streaming, output na may mga strukturado, mga tool, at isang patakaran ng diagnosis para sa mga karaniwang error.
Ito ay naglalarawan sa pag-access sa gateway ng ECAIX sa isang modelo na inilalabas sa kasalukuyang katalog ng ECAIX. Hindi ito nagpapasya na ang ECAIX ay ang ofisyal na endpoint ng API ng DeepSeek o na lahat ng mga katangian ng DeepSeek ay matatagpuan sa lahat ng mga ruta ng gateway. Pansinin ang mga live model page at ang dokumentasyon ng provider bago pumasa ang isang workload sa produksyon.
Ang mga halimbawa na ito ay nagtataguyod
Ang mga halimbawa ay ginagamit sa mga path ng ECAIX na kompatibo sa OpenAI at isang ID ng modelo na nakikita sa public catalog sa panahon ng pagpublikasyon. Ang pagkakalantad, routing, mga limitasyon, presyo, at mga katangian na suportado ay maaaring magbabago. Ibigay sa mga katalog at dokumentasyon ng API ang pinakabagong source of truth.
Pagtatapos ng mga bagay
Gumagamit ng mga sumusunod na mga hakbang kung mayroon na ang isang application na may SDK ng OpenAI:
- Panoorin ang mga halimbawa ng modelo ng DeepSeek v4.1 Flash at patunayan na ang ID ay mayroon.
- Gumawa ng mga API key ng ECAIX.
- Iset ang base URL na kompatibo sa OpenAI sa
https://ecaix.com/api/ai/v1. - Ipasok ang mga SDK at application code na hindi kinakailangan ng mga pagbabago.
- Magtest sa mga request na may mga bagay na may pinakamaliit na mga pangangailangan.
- Iba-iba ang mga streaming, output sa JSON, o mga tool lamang pagkatapos na ang mga basic request ay nagtataguyod.
Endpoint at ID ng Modelo
Para sa mga klient na kompatibo sa OpenAI, gamitin ang sumusunod:
Base URL: https://ecaix.com/api/ai/v1
Model: deepseek-v4.1-flash
Ang ID ng modelo ay hindi isang permanenteng taguyod sa isang blog post. Panoorin ang mga direktoriyo ng modelo sa live bago bumuo ng isang bagong integrasyon o deploy. Kapag kailangan ng isang iba pang familia ng DeepSeek, kopya ang exact na ID mula sa mga detalye ng modelo sa halip na mag-guess ng isang suffix.
Ang format ng endpoint ay mahalaga, din. Ang SDK ay dapat na makakuha ng base path na nagtatapos sa /v1; ang klient ay magdadagdag ng /chat/completions o isang ibang path ng operasyon. Huwag magdagdag ng /chat/completions sa base_url kung ang SDK ay naiiba na magdagdag ng ito.
Python sa OpenAI SDK
Isasagawa ang pag-install o pag-upgrade ng OpenAI Python SDK sa isang virtual environment:
python -m pip install --upgrade openai
Pagkatapos, gamitin ang base URL ng ECAIX at API key:
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);
Gamitin ang mga code sa server-side para sa mga request sa API. Ang isang application sa browser ay dapat magcall sa isang sariling backend sa halip na mag-expose ng isang ECAIX key sa mga JavaScript sa client-side.
Request sa Curl para sa Diagnosis
Kapag ang SDK ay nagdududa, ilagay ang SDK sa loob ng mga equation at magtest sa endpoint na direktang. Ipasok ang mga headers at body na mayroon sa mga bagay na mayroon para sa mga pagkakataon ng HTTP na mayroon at mga problema sa response format.
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
}'
Huwag magkopya ng mga saved na headers o response sa isang public ticket na mayroon pa ring mga API keys, mga request IDs, mga prompts, mga path ng repository, at mga datos ng customer.
Pag-diagnosis ng mga Response
Gamitin ang sumusunod na mga hakbang:
- HTTP status: patunayan kung gaano kalalayuan ang request na dumating sa isang valid na endpoint.
- Body ng response: basahin ang mga error code ng provider o gateway.
- ID ng modelo: kopya ang exact na ID mula sa kasalukuyang direktoriyo ng modelo.
- Authentication: patunayan ang mga header ng key, account, at mga permision.
- Shape ng request: magpakababa ng mga body sa
model,messages, at isang maliit na limitasyon sa output. - Mga field ng katangian: magdagdag ng mga streaming, JSON, o mga tool na isang na una.
- Pagkilos ng SDK: magkumpare sa mga request ng SDK sa isang direct na curl request.
Ito ay nagpapabawal ng isang problema sa mga library ng klient na maging magkaiba sa mga routing ng modelo o mga permision ng account.
Mga Response na May Streaming
Kapag ang application ay mayroon na ang mga output na may mga bagay na mayroon, magdagdag ng mga streaming lamang pagkatapos na ang isang normal na request ay nagtaguyod:
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)
Ang mga exact na mga pagkilos ay nakikita sa endpoint at SDK. Panoorin kung paano ang iyong framework ay nagtutugon sa isang empty delta, isang final na event ng paggamit, isang pagkawala ng koneksiyon, at mga pagtatapos na may estilo ng [DONE]. Huwag magtanghal ng isang mga implementasyon ng streaming sa produksyon bago magtest ng mga pagkawala ng koneksiyon at mga pagreretry.
Mga Output na May Strukturado at JSON
Kapag kailangan ng mga output na mayroon na ang mga bagay na mayroon na makapagbunin, magsimula sa isang ordinary na request at magdagdag ng ang pinakamaliit na mga option na may strukturado na output na suportado ng endpoint at modelo. Panoorin ang mga bagay na natatanggap sa isang real na JSON parser. Ang isang prompt na nagpapahayag na “bumalik sa isang JSON” ay hindi magkakaiba sa isang response na mayroon na ang isang schema na mayroon.
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"])
Ang pagkakakitaan ng response_format ay maaaring magkakaiba sa modelo at ruta. Kapag ang endpoint ay nagbubukas ng isang error na mayroon na ang mga parameter na hindi suportado, magpapaalis ng field at panoorin ang dokumentasyon ng ruta bago magtanghal ng isang ibang format.
Paggamit ng Function at mga Tool
Ang paggamit ng mga tool ay mayroon na ang isang bagong test mula sa paggamit ng mga teksto. Simulan sa isang harmless na function at pag-aralan ang mga natatanggap na mga pangalan at mga argumento bago mag-execute ng mga bagay.
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)
Ang isang modelo ay maaaring bumalik sa isang valid na response sa teksto habang ang paggamit ng mga tool ay nagdududa dahil sa mga pagbabago sa schema, mga parameter na hindi suportado, o mga pagkilos na mayroon na ang mga klient. Huwag mag-execute ng mga argumentong natatanggap sa isang sistema sa produksyon bago magpatunay ng schema at magdagdag ng mga pagpapayaman ng pagpapayaman.
Pathas compatible sa OpenAI at Anthropic sa ECAIX
Ang ECAIX ay may iba't ibang mga surface ng kompatibilidad para sa mga kliyente at mga workflow:
| Kliyente o workflow | Path sa dokumentasyon | Ang mga bagay na dapat isaalang-alang |
|---|---|---|
| SDK sa Python/Node sa OpenAI | /api/ai/v1 | Chat Completions, Responses, streaming, tools |
| Kliyente na may estilo sa Anthropic | /api/ai/v1/anthropic | Fields ng mga mesyad, headers, mga blok ng kontento |
| Workflow sa Claude Code (tirda-pamagitan) | /api/ai/v1/anthropic | Pagtataya ng mga pagpapakilala ng provider; hindi suportado ng Anthropic na opisyal |
Bago bumili ng isang path, isaalang-alang ang dokumentasyon sa Chat Completions, Responses, at Anthropic Messages. Ang parehong ID ng modelo ay maaaring hindi mag-expose ng parehong mga field o mga pagpapakilala sa lahat ng mga surface ng kompatibilidad.
Detalye ng mga modelo sa kasalukuyan
Gawin ang mga pagcheck sa mga detalye sa live na mga pahina para sa mga pagkakataon at pagkakalantad:
{
"model_id": "qwen3.8-flash"
}
Ang mga pahina na ito ay mas reliable kaysa sa isang artikulong static para sa mga ID ng modelo, mga detalye ng konteksto, at mga link sa mga presyo.
Komunyunal na mga error
| Status o simbolo | Mga posibleng dahilan | Mga aksyon sa diagnosis |
|---|---|---|
401 | Walang o walang tunay na bearer token | Panoorin ang Authorization, mga environment variable, at status ng mga key |
403 | Ang key o account ay may hindi kailangan na permisyon | Panoorin ang pag-access sa account at pagkakalantad ng modelo |
404 | Wala o mali na base URL o ruta | Gamitin ang /api/ai/v1/chat/completions para sa isang direct na test sa curl |
400 | Wala o hindi suportadong body | Iwasan ang mga optional na field at ipatugtog ang minimal na body |
429 | Limitasyon sa rate o kuota | I-record ang mga headers ng response, maging mas mabagal, at panoorin ang mga limitasyon sa account |
5xx | Paggawa ng gateway o upstream failure | I-save ang oras ng request at ID ng response; ipatugtog muli ayon sa iyong mga polisiya |
| Modelo ay hindi natagpuan | Tala ng typo, nai-remove na modelo, o mismatch sa routing | I-copy ang exact na ID ng modelo mula sa /models |
| Ang mga teksto ay nagtatagpo, pero ang mga tool ay hindi | Mismatch sa schema ng tool o capability ng modelo | I-test ang isang hindi nakakahirap na function at isaalang-alang ang mga argumentong natatanggap |
Checklist sa seguridad at produksyon
Bago lumabas sa isang proyekto na may test, isaalang-alang ang mga sumusunod:
- Ang mga API keys ay nasa server-side at maaaring maging maayos na maging maayos na maging maayos na maging maayos na maging maayos na maging maayos na maging maayos na maging maayos na maging maayos na maging maayos na maging maayos na maging maayos na maging maayos na maging maayos na maging maayos na maging maayos na maging maayos na maging maayos na maging maayos na maging maayos na maging maayos na maging maayos na maging maayos na maging maayos na maging maayos na maging maayos na maging maayos na maging maayos na maging maayos na maging maayos na maging maayos na maging maayos na maging maayos na maging maayos na maging maayos na maging maayos na maging maayos na maging maayos na maging maayos na maging maayos na