Навчальна інтеграція API DeepSeek через ECAIX: OpenAI-сумісні запити
Навчальна інтеграція API DeepSeek через ECAIX: OpenAI-сумісні запити
Ця гайд показує, як перевірити ID моделі DeepSeek через ECAIX, використовуючи OpenAI-сумісний API-ендпоінт. Вона охоплює найменший робочий запит, приклади на Python та curl, перевірку ID моделі, стрімінг, структурований вихід, інструменти та шлях діагностики для поширених помилок.
Гайд описує доступ до ECAIX-шлюзу для моделі, яка виставлена в теперішньому каталозі ECAIX. Не стверджується, що ECAIX є офіційним ендпоінтом API DeepSeek або що всі функції DeepSeek доступні через будь-який шлюзовий маршрут. Перевірте живу сторінку моделі та документацію постачальника перед переміщенням робочого процесу в продуктивну середовище.
Що перевіряє ця гайд
Приклади використовують OpenAI-сумісний шлях через ECAIX та ID моделі, які тепер доступні в публічному каталозі на момент публікації. Доступність, маршрутизація, обмеження, ціни та підтриманих функцій можуть змінюватися. Отримуйте каталог та документацію API як джерело дійсних даних.
Швидкий старт
Використовуйте цей алгоритм, якщо у вас вже є застосування на базі SDK OpenAI:
- Перевірте сторінку моделі DeepSeek v4.1 Flash та підтвердіть, що ID доступне.
- Створіть ключ API ECAIX.
- Встановіть OpenAI-сумісний основний URL до
https://ecaix.com/api/ai/v1. - Зберігайте SDK та код застосування без змін, де це можливо.
- Запустіть мінімальний запит нижче.
- Додайте стрімінг, JSON-вихід або інструменти лише після того, як базовий запит працює.
Ендпоінт та ID моделі
Для OpenAI-сумісних клієнтів використовуйте:
Base URL: https://ecaix.com/api/ai/v1
Model: deepseek-v4.1-flash
ID моделі не є постійним гарантією в статті. Підтвердіть його на живій сторінці каталогу моделей перед кожною новою інтеграцією або випуском. Якщо вам потрібна інша модель DeepSeek, скопіюйте точне ID з сторінки деталей моделі, а не гадаючи про суфікс.
Важливість формату ендпоінту також важлива. SDK має отримати основний шлях, який закінчується на /v1; клієнт додає /chat/completions або інший операційний шлях. Не додавайте /chat/completions до base_url, якщо SDK вже додає його.
Python з SDK OpenAI
Встановіть або оновіть Python SDK OpenAI у вашому виртуальному середовищі:
python -m pip install --upgrade openai
Затем використовуйте основний URL ECAIX та API-ключ:
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);
Використовуйте серверне кодове середовище для API-запиту. Застосування в браузері повинно викликати власний бекенд, а не виставляти ключ ECAIX у клієнтському скрипті.
Диагностичний запит через curl
Якщо SDK не працює, виключіть SDK з уравняння та тестуйте ендпоінт безпосередньо. Збережіть заголовки та тіло запиту окремо, щоб відрізнити проблему з HTTP від проблеми з форматом відповіді.
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
}'
Не вставляйте збережені заголовки або відповідь у публічний інцидент без видалення API-ключів, ідентифікаторів запитів, промтів, шляхів до репозиторіїв та даних клієнтів.
Як діагностувати відповідь
Використовуйте наступний порядок:
- Статус HTTP: визначте, чи досяг запит валідного ендпоінту.
- Тіло відповіді: прочитайте код помилки постачальника або шлюзу.
- ID моделі: скопіюйте точне ID з теперішнього каталогу моделей.
- Авторизація: перевірте заголовок ключа, рахунок та дозволи.
- Форма запиту: зменшіть тіло до
model,messagesта обмеженого виходу. - Параметри функцій: додайте стрімінг, JSON або інструменти поодинці.
- Поведінка SDK: порівняйте запит SDK з безпосереднім curl-запитом.
Це запобігає помилкам клієнтської бібліотеки бути плутаними з маршрутизацією моделі або дозволами рахунку.
Відповіді через стрімінг
Якщо застосування потребує інкрементального виходу, додайте стрімінг лише після успішного виконання звичайного запиту:
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)
Відповідний поведінковий події залежить від ендпоінту та SDK. Перевірте, як ваше середовище обробляє порожній дельта, останній подію використання, розрив зв'язку та завершення у стилі [DONE]. Не вважайте стрімінговий імплементацію готовою до виробництва, поки не перевірите розриви та перезапуски.
Структурований вихід та JSON
Якщо вам потрібен машинно-читальний вихід, починайте з звичайного запиту, а потім додавайте найменшу підтримувану опцію структурованого виходу, яка підтримується ендпоінтом та моделлю. Валідуйте повернений контент з реальним JSON-парсером. Запит, який каже "повертайте JSON", не є тим самим, що і схемно-обмежений відповідь.
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"])
Прийняття параметра response_format може залежати від моделі та маршруту. Якщо ендпоінт повертає помилку не підтримуваного параметра, видаліть поле та перевірте документацію маршруту перед спробою іншого формату.
Виклик функцій та інструментів
Виклик інструментів потребує окремої перевірки від генерації тексту. Починайте з однієї безпечної функції та оцінюйте повернений ім'я та аргументи перед виконанням будь-якого дійсного коду.
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)
Модель може повернути валідну текстову відповідь, але виклик інструментів може не працювати через несумісність схем, не підтримуваних параметрів або поведінки клієнта. Ніколи не виконуйте повернені аргументи інструментів у виробничому середовищі без валідації схем та додавання перевірок авторизації.
OpenAI-сумісні та Anthropic-сумісні шляхи
ECAIX виставляє різні поверхні сумісності для різних клієнтів:
| Клієнт або робота | Шлях документації | Що перевіряти |
|---|---|---|
| SDK Python/Node OpenAI | /api/ai/v1 | Chat Completions, Відповіді, стрімінг, інструменти |
| Клієнт Anthropic | /api/ai/v1/anthropic | Поля Messages, заголовки, блоки контенту |
| Третій-сторонній робочий процес для Claude Code | /api/ai/v1/anthropic | Специфічна поведінка постачальника; не офіційна підтримка Anthropic |
Перегляньте Документацію про Chat Completions, Документацію про Відповіді та Документацію про Anthropic Messages перед вибором шляху. Ті самі ID моделей можуть не виставляти однакові поля або поведінку на кожній поверхні сумісності.
Технічні деталі теперішніх моделей
Використовуйте живі сторінки деталей для перевірки можливостей та доступності:
Ці сторінки більш надійні, ніж статична стаття, для теперішніх ID моделей, інформації про контекст та посилань на ціни.
Поширені помилки
| Статус або симптом | Правдоподібна причина | Дія для діагностики |
|---|---|---|
401 | Відсутній або невірний токен Bear |