Gateway API — OpenAI-compatible доступ к AI-моделям
shkmw.dev Войти
API Gateway

DeepSeek API Gateway

Используйте модели DeepSeek через OpenAI-compatible API endpoint.

Работает с официальным OpenAI SDK. Достаточно заменить base_url и API key.

OpenAI-compatible Streaming Python SDK DeepSeek models
Python
from openai import OpenAI

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://api.shkmw.dev/v1",
)

response = client.chat.completions.create(
    model="deepseek-v4-flash",
    messages=[
        {"role": "user", "content": "Hello"}
    ],
)

print(response.choices[0].message.content)

1. Быстрый старт

1

Установите OpenAI SDK

bash
pip install openai
2

Создайте клиент

python
from openai import OpenAI

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://api.shkmw.dev/v1",
)
3

Отправьте запрос

python
response = client.chat.completions.create(
    model="deepseek-v4-flash",
    messages=[
        {"role": "user", "content": "Hello"}
    ],
)

print(response.choices[0].message.content)

2. Примеры на Python

python
from openai import OpenAI

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://api.shkmw.dev/v1",
)

response = client.chat.completions.create(
    model="deepseek-v4-flash",
    messages=[
        {"role": "user", "content": "Explain async Python in one paragraph"}
    ],
)

print(response.choices[0].message.content)
python
from openai import OpenAI

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://api.shkmw.dev/v1",
)

stream = client.chat.completions.create(
    model="deepseek-v4-flash",
    messages=[
        {"role": "user", "content": "Write a short product description"}
    ],
    stream=True,
)

for chunk in stream:
    content = chunk.choices[0].delta.content
    if content:
        print(content, end="")
python
import asyncio
from openai import AsyncOpenAI

client = AsyncOpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://api.shkmw.dev/v1",
)

async def main():
    response = await client.chat.completions.create(
        model="deepseek-v4-flash",
        messages=[
            {"role": "user", "content": "Say hello"}
        ],
    )
    print(response.choices[0].message.content)

asyncio.run(main())

Модель deepseek-v4-flash-vision-exp принимает изображения на входе. Можно передать URL или локальный файл как Base64 Data URL.

Вариант 1 — изображение по URL

python
from openai import OpenAI

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://api.shkmw.dev/v1",
)

response = client.chat.completions.create(
    model="deepseek-v4-flash-vision-exp",
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "text",
                    "text": "Что изображено на этой картинке?",
                },
                {
                    "type": "image_url",
                    "image_url": {
                        "url": "https://example.com/image.jpg"
                    },
                },
            ],
        }
    ],
)

print(response.choices[0].message.content)

Вариант 2 — локальный файл через Base64

python
import base64
from openai import OpenAI

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://api.shkmw.dev/v1",
)

with open("image.jpg", "rb") as f:
    image_base64 = base64.b64encode(f.read()).decode("utf-8")

response = client.chat.completions.create(
    model="deepseek-v4-flash-vision-exp",
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "text",
                    "text": "Что изображено на этой картинке?",
                },
                {
                    "type": "image_url",
                    "image_url": {
                        "url": f"data:image/jpeg;base64,{image_base64}"
                    },
                },
            ],
        }
    ],
)

print(response.choices[0].message.content)

3. Доступные модели

Модель Для чего
deepseek-v4-flash Быстрые и дешёвые повседневные запросы
deepseek-v4-pro Более сильный reasoning и сложные задачи
deepseek-v4-flash-vision-exp Текст + изображения (экспериментальная Vision-модель)

Список моделей может меняться. Актуальный — через /v1/models.

bash
curl https://api.shkmw.dev/v1/models \
  -H "Authorization: Bearer YOUR_API_KEY"

4. API reference

Method Path Описание
GET /v1/models Список доступных моделей
POST /v1/chat/completions Создать chat completion

Auth

http
Authorization: Bearer YOUR_API_KEY

Пример

bash
curl https://api.shkmw.dev/v1/chat/completions \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-v4-flash",
    "messages": [
      {"role": "user", "content": "Hello"}
    ]
  }'

5. Streaming

Укажите stream=True, чтобы получать токены по мере генерации.

python
stream = client.chat.completions.create(
    model="deepseek-v4-flash",
    messages=[
        {"role": "user", "content": "Write a short story"}
    ],
    stream=True,
)

for chunk in stream:
    content = chunk.choices[0].delta.content
    if content:
        print(content, end="")

6. Ошибки

Ошибки приходят в OpenAI-compatible JSON-формате.

json
{
  "error": {
    "message": "Invalid API key",
    "type": "authentication_error",
    "code": "invalid_api_key"
  }
}
Code Значение
invalid_api_key Отсутствует или неверный API key
model_not_supported Запрошенная модель недоступна
insufficient_balance Недостаточно средств на балансе
rate_limit_exceeded Слишком много запросов
upstream_error Провайдер модели вернул ошибку

7. Лимиты и заметки

Совместимость с OpenAI SDK

Используйте официальный OpenAI SDK со своим base_url.

Промпты по умолчанию не логируются

Текст запросов и ответов по умолчанию не сохраняется.

Доступ по usage

Запросы могут ограничиваться балансом, rate limits и доступностью моделей. Usage и биллинг обрабатывает gateway автоматически.

Не аффилированы с DeepSeek

Это независимый gateway-сервис, DeepSeek используется как upstream-провайдер.

Gateway API pricing

Стоимость использования API в рублях. Цены указаны за 1M токенов.

Модель Период Input cache hit Input cache miss Output
Загрузка тарифов…

Input cache hit — входные токены, которые попали в кэш модели.
Input cache miss — входные токены, которые не попали в кэш.
Output — токены, сгенерированные моделью в ответе.

Итоговое списание зависит от фактического usage, который возвращает API.