Príklad integrace DeepSeek API: OpenAI-kompatibilné požadavky cez ECAIX
Príklad integrace DeepSeek API: OpenAI-kompatibilné požadavky cez ECAIX
Tento prúdovník ukazuje, ako testovať model ID DeepSeek cez ECAIX pomocí OpenAI-kompatibilného API. Obsahuje najmenší fungujúci požadavek, príklady v Python a curl, verifikáciu model ID, streaming, strukturovaný výstup, nástroje a diagnostiku častých chýb.
Prúdovník popisuje přístup ECAIX k modelu ID, ktorý je vystavený v aktuálnom katalógu ECAIX. Nehovoříme o tom, že ECAIX je oficiálním endpointem DeepSeek API, ani že každá funkce DeepSeek je dostupná cez každý route ECAIX. Zkontrolujte živé stránky modelu a dokumentáciu dodavateľa pred prekladem pracovního zatížení do produkčného prostředí.
Co tento prúdovník ověřuje
Příklady používají OpenAI-kompatibilný cestu ECAIX a model ID, které jsou aktuálně viditelné v veřejném katalógu při vydání. Dostupnost, routování, limity, ceny a podporované funkce se mohou měnit. Trestejte katalóg a dokumentaci API jako aktuální zdroj pravdy.
Rychlé nastavení
Pokud už máte aplikaci založenou na SDK OpenAI, postupujte takto:
- Zjistěte, že ID je dostupné na stránce DeepSeek v4.1 Flash modelu.
- Zadejte API klíč ECAIX.
- Nastavte OpenAI-kompatibilnou základnu URL na
https://ecaix.com/api/ai/v1. - Zůstaňte v SDK a aplikaci, kde je možné.
- Spusťte minimální požadavek níže.
- Přidejte streaming, JSON výstup nebo nástroje až po úspěšném fungování základního požadavku.
Endpoint a model ID
Pro OpenAI-kompatibilné klienty použijte:
Base URL: https://ecaix.com/api/ai/v1
Model: deepseek-v4.1-flash
Model ID není trvalou zárukou v blogu. Zkontrolujte jej na živé stránce modelového katalogu před každou novou integrací nebo deployací. Pokud potřebujete jiného člena rodiny DeepSeek, zkopírujte přesně ID z detailní stránky modelu, nikoliv odhadujte příponu.
Formát endpointu také hraje roli. SDK by mělo dostat cestu končící na /v1; klient přidává cestu /chat/completions nebo jiný operační cestu. Nepridávejte /chat/completions do base_url, pokud SDK již přidává.
Python s OpenAI SDK
Nainstalujte nebo aktualizujte OpenAI Python SDK ve virtuálním prostředí:
python -m pip install --upgrade openai
Poté použijte základnu URL a API klíč:
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);
Používejte server-side kód pro API požadavek. Aplikace v prohlížeči by měla volat vlastní backend, nikoliv vystavovat API klíč v klientském JavaScriptu.
Diagnostický požadavek pomocí curl
Pokud SDK selže, odstraňte SDK z rovnice a testujte endpoint přímo. Uložte hlavičky a tělo odděleně, abyste mohli rozlišit problém s HTTP od problému s formátem odpovědi.
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
}'
Nečtěte uložené hlavičky nebo odpověď do veřejného ticketu bez odstranění API klíčů, požadavečských ID, promptů, cest v repozitáři a zákaznických dat.
Jak diagnostikovat odpověď
Postupujte podle tohoto pořadí:
- HTTP stav: zjistěte, zda požadavek dosáhl validního endpointu.
- Tělo odpovědi: přečtěte si chybový kód dodavatele nebo gatewayu.
- Model ID: zkopírujte přesně ID z aktuálního modelového katalogu.
- Autentifikace: zkontrolujte hlavičku klíče, účet a povolení.
- Formát požadavku: zmenšte tělo na
model,messagesa malý limit výstupu. - Funkční pole: přidejte streaming, JSON nebo nástroje postupně.
- Chování SDK: porovnejte požadavek SDK s přímo provedeným curl požadavkem.
Tím zabráníte chybě v klientské knihovně, aby byla zaměněna za problém s routováním modelu nebo povolení účtu.
Streaming odpovědí
Pokud aplikace potřebuje incrementální výstup, přidejte streaming až po úspěšném fungování normálního požadavku:
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)
Významné události závisí na endpointu a SDK. Zkontrolujte, jak vaše framework zachází s prázdným delta, konečným událostním událostí, přerušením spojení a ukončením typu [DONE]. Neuzavírejte implementaci streamingu do produkčního prostředí, dokud netestujete přerušení a retry.
Strukturovaný výstup a JSON
Pokud potřebujete strojově čitelný výstup, začněte s běžným požadavkem a poté přidejte nejmenší možnou možnost strukturovaného výstupu podporovanou endpointem a modelem. Potvrďte zpracování zpět zpět pomocí skutečného JSON parseru. Prompt, který říká „vrátit JSON“, není to samé jako schema-podporovaná odpověď.
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"])
Přípustnost response_format může záviset na modelu a cestě. Pokud endpoint vrátí chybný parametr, odstraňte pole a zkontrolujte dokumentaci cesty před pokusem o další formát.
Volání funkcí a nástrojů
Volání nástrojů vyžaduje samostatný test od textové generace. Začněte s jednou neškodnou funkcí a prohlédněte si vrácené jméno a argumenty před provedením jakéhokoliv.
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)
Model může vrátit validní textovou odpověď, zatímco volání nástrojů selže kvůli schématu konverze, nepodporovaným parametrům nebo chování klientské aplikace. Nikdy neprovádějte vrácené argumenty nástrojů v produkčním systému před potvrzením schématu a přidáním autorizačních kontrol.
OpenAI-kompatibilní a Anthropic-kompatibilní cesty
ECAIX vystavuje různé kompatibilní povrchy pro různé klienty:
| Klient nebo workflow | Dokumentační cesta | Co zkontrolujte |
|---|---|---|
| OpenAI Python/Node SDK | /api/ai/v1 | Chat Completions, odpovědi, streaming, nástroje |
| Klient Anthropic | /api/ai/v1/anthropic | Pole messages, hlavičky, bloky obsahu |
| Workflow Claude Code třetích stran | /api/ai/v1/anthropic | Chování dodavatele; neoficiální podpora Anthropic |
Přečtěte si Dokumentaci Chat Completions, Dokumentaci odpovědí a Dokumentaci Anthropic Messages před výběrem cesty. Ten samý model ID nemusí vystavovat identické pole nebo chování na každé kompatibilní ploše.
Aktuální detaily modelu
Používejte živé detaily stránek pro kontrolu schopností a dostupnosti:
Tyto stránky jsou spolehlivější než statický prúdovník pro aktuální model ID, kontextové informace a odkazy na ceny.
Časté chyby
| Stav nebo příznak | Likvidní příčina | Diagnostická akce |
|---|---|---|
401 | Chybějící nebo neplatný bearer token | Zkontrolujte Authorization, prostředí, stav klíče |
403 | Klíč nebo účet nemá povolení | Zkontrolujte přístup k účtu a dostupnost modelu |
404 | Špatná základna URL nebo přípona cestu | Použijte /api/ai/v1/chat/completions pro přímo provedený curl test |
400 | Neplatné tělo nebo nepodporované pole | Odstraňte volitelné pole a znovu pokusíte se s minimálním tělem |
429 | Limit rychlosti nebo kvóty | Zadejte odpovědi hlaviček, zpomalte a zkontrolujte limity účtu |
5xx | Chyba gatewayu nebo zdrojového serveru | Uložte čas požadavku a ID odpovědi; znovu pokusíte se podle vaší politiky |
| Model nenalezen | Chyba, odpojený model nebo nesprávné routování | Zkopírujte přesně model ID z /models |
| Text funguje, nástroje selžou | Nesrovnání schématu nástrojů nebo nedostupnost modelu | Testujte jednu neškodnou funkci a prohlédněte si vrácené argumenty |
| SDK funguje jinak než curl | Vlastnosti SDK nebo konstrukce cest | Vypište konfiguraci požadavku SDK a porovnejte cesty |
Bezpečnost a kontrola produkčního prostředí
Před přesun