Один ключ к DeepSeek, GPT, Claude и Gemini — оплата в рублях, доступ без VPN.

Получить ключ

DeepSeek API или OpenAI API: сравнение для разработчика

DeepSeek API сделан совместимым с форматом OpenAI, поэтому переход между провайдерами чаще всего сводится к смене адреса и имени модели. Но есть детали, которые ломают наивную замену: имена моделей, правила кэша ввода, режим рассуждений и отдельный Anthropic-совместимый эндпоинт. Разберём их по порядку.

Что совпадает

Совместимость здесь не маркетинговая, а техническая — одинаковый контракт запроса и ответа:

  • Формат Chat Completions. Тот же POST /chat/completions с массивом messages, тем же набором ролей и той же структурой ответа: текст в choices[0].message.content, причина остановки в finish_reason, расход в объекте usage.
  • Официальный OpenAI SDK. Библиотека openai для Python и JavaScript работает без правок: достаточно передать другой base_url и ключ.
  • Tool calls. Инструменты описываются тем же массивом tools с type: "function", ответ приходит в message.tool_calls, результат возвращается сообщением с ролью tool.
  • JSON-режим. Параметр response_format: {"type": "json_object"} и требование упомянуть JSON в промпте.
  • Стриминг. stream: true и SSE-чанки, плюс stream_options.include_usage для получения расхода в последнем чанке.
  • Responses API. У DeepSeek есть собственный эндпоинт POST /responses, то есть новый стиль взаимодействия тоже поддержан.

На практике это означает, что абстракция над клиентом, написанная под OpenAI, переносится целиком. Исключения собраны в таблице ниже.

Чем отличается

Имена моделей

Главное отличие, которое ломает код первым: строки model не совпадают. В DeepSeek API два актуальных имени — deepseek-flash (DeepSeek-V4.1-Flash) и deepseek-v4-pro (DeepSeek-V4-Pro-0813). Никакого маппинга «похожих» названий нет, поэтому имя модели нужно менять явно во всех местах конфигурации.

Цены за 1M токенов

Прайс считается за 1M токенов отдельно для ввода и вывода, но построен иначе: у DeepSeek внутри ввода разделены токены, попавшие в кэш ($0.003 за 1M у deepseek-flash), и токены без кэша ($0.15 за 1M), а также действуют часы пик с двойной ценой. Кроме того, есть отдельная цена за изображения — верхняя граница 1024 токена на изображение. Поэтому переносить чужую табличную цену на свой сценарий нельзя: считайте по фактическому usage.

Правило кэша ввода

В DeepSeek «Context Caching on Disk» включён по умолчанию для всех, управлять им не нужно, и хит возможен только при полном совпадении с сохранённым префиксом. Единицы кэша персистятся на границах запроса и при обнаружении общего префикса у нескольких запросов. Кэш влияет только на цену: попадание статусом видно в usage.prompt_cache_hit_tokens и prompt_cache_miss_tokens, а prompt_tokens_details.cached_tokens равен числу попавших в кэш токенов. Работает это best-effort: 100% попаданий никто не гарантирует, и сам вывод всё равно генерируется заново.

Режим рассуждений и поле reasoning_content

У DeepSeek рассуждения — не отдельное семейство моделей, а режим: он включён по умолчанию, управляется объектом {"thinking": {"type": "enabled" | "disabled"}} и параметром reasoning_effort (none, low, high, max). Цепочка рассуждений приходит в поле reasoning_content на одном уровне с content. В OpenAI SDK этого поля нет, поэтому читать его безопаснее через getattr(message, "reasoning_content", None).

Здесь же — самое неприятное отличие для тех, кто пользуется инструментами: если запрос содержит tools, reasoning_content обязательно нужно возвращать назад во всех последующих turn, иначе API вернёт 400. Без tools поле можно не передавать — оно игнорируется. И ещё: в режиме рассуждений не действуют temperature, presence_penalty и frequency_penalty, а tool_choice: "required" приводит к ошибке 400.

Anthropic-совместимый эндпоинт

Дополнительно у DeepSeek есть Anthropic-совместимый адрес https://api.deepseek.com/anthropic с сообщениями через POST /anthropic/v1/messages. Авторизация — Authorization: Bearer или x-api-key. Маппинг моделей такой: claude-opus* уходит в deepseek-v4-pro, а claude-haiku*, claude-sonnet* и любое неизвестное имя — в deepseek-flash. Это позволяет подключать инструменты, написанные под Anthropic SDK, без переписывания на OpenAI-формат.

Нужен API-ключ сегодня

Регистрация по email или Telegram занимает пару минут, оплата идёт в рублях, VPN не нужен. Один ключ работает и с DeepSeek, и с другими моделями.

Получить ключ

Таблица соответствия: как было в OpenAI → как стало в DeepSeek

Что меняется при переходе
ЧтоКак было в OpenAIКак стало в DeepSeek
Имя модели Строка вида gpt-... deepseek-flash или deepseek-v4-pro
Базовый адрес https://api.openai.com/v1 https://api.deepseek.com
Ключ Переменная с ключом OpenAI Ключ из кабинета DeepSeek, sk-...
SDK openai Тот же openai, меняется только base_url
Режим рассуждений Отдельная модель или параметр reasoning thinking + reasoning_effort; включён по умолчанию
Текст рассуждений Не приходит отдельным полем message.reasoning_content
Кэш ввода Механизм кэша устроен иначе — сверяйте по документации OpenAI Включён по умолчанию, попадание дешевле в десятки раз и видно в usage
Ответы в новом стиле Responses API POST https://api.deepseek.com/responses
Anthropic-формат Не поддерживается https://api.deepseek.com/anthropic
Строгие схемы инструментов Параметр strict у функции strict доступен через https://api.deepseek.com/beta
Устаревшие параметры frequency_penalty, presence_penalty Не поддерживаются: принимаются, но эффекта не дают

Пример миграции на Python

Если код уже написан под OpenAI SDK, миграция — это замена двух строк: адреса и имени модели. Ключ меняется на ключ DeepSeek.

python
client = OpenAI(
    api_key=os.environ["DEEPSEEK_API_KEY"],
    base_url="https://api.deepseek.com",     # было: https://api.openai.com/v1
)
response = client.chat.completions.create(
    model="deepseek-flash",                  # было: имя модели OpenAI
    messages=[{"role": "user", "content": "Привет!"}],
)

Остальной код — обработка choices, стриминг, цикл вызова инструментов — остаётся прежним. Единственное, что стоит добавить, если вы используете инструменты: сохранять объект сообщения целиком в историю, чтобы reasoning_content возвращался в следующий запрос. Подробный разбор такого цикла есть на странице «Python и OpenAI SDK».

Проверьте имена моделей перед деплоем

Старые имена deepseek-chat и deepseek-reasoner были отключены 24 июля 2026 года. Если код мигрирует из старой кодовой базы или из чужого примера, убедитесь, что там уже стоят deepseek-flash или deepseek-v4-pro, — иначе первый же запрос вернёт ошибку.

Если нужны оба провайдера

Держать два ключа и два адреса не обязательно. OpenAI-совместимый агрегатор, например AITUNNEL, даёт единый base_url https://api.aitunnel.ru/v1 и один ключ sk-aitunnel-... для DeepSeek и других популярных моделей: переключение между провайдерами сводится к смене строки model. Имена моделей у агрегатора свои — точный идентификатор смотрите в каталоге сервиса. Такой же подход работает и в обратную сторону: код остаётся OpenAI-совместимым, а меняется только адрес.

python
# Один ключ и один адрес для нескольких провайдеров
client = OpenAI(
    api_key=os.environ["AITUNNEL_API_KEY"],   # sk-aitunnel-...
    base_url="https://api.aitunnel.ru/v1",
)

# Провайдер выбирается именем модели из каталога сервиса
answer = client.chat.completions.create(
    model="deepseek-v4.1-flash",
    messages=[{"role": "user", "content": "Привет!"}],
)
Anthropic SDK — тоже через смену адреса

Если проект написан под Anthropic SDK, у агрегатора адрес задаётся без /v1: ANTHROPIC_BASE_URL="https://api.aitunnel.ru" и ANTHROPIC_AUTH_TOKEN="sk-aitunnel-...". У официального DeepSeek аналогичную роль играет https://api.deepseek.com/anthropic. В обоих случаях код приложения не переписывается.

Критерии выбора

Однозначного ответа «что лучше» не существует: сравнивать нужно под конкретный проект. Вот критерии, по которым стоит принимать решение.

На что смотреть при выборе провайдера
КритерийО чём спросить себя
Способ оплатыПроходит ли оплата из вашей юрисдикции без посредников и как оформляются закрывающие документы
Итоговая стоимостьКакая доля входа попадает в кэш и в какие часы идёт основная нагрузка
Совместимость кодаДостаточно ли сменить base_url и model или потребуется переписывать слой вызовов
Нужные функцииЕсть ли vision, JSON-режим, tool calls, Responses API и Anthropic-совместимый адрес
ЛимитыХватает ли concurrency: 2500 для flash, 500 для v4-pro
Качество на ваших задачахКакая доля ответов требует правки вручную на вашем наборе запросов
Требования к даннымЧто происходит с текстами запросов и нужно ли маскировать персональные данные

Практический порядок действий простой: соберите 20–30 реальных запросов, прогоните их через оба варианта, сравните долю приемлемых ответов и фактический usage. Цена и качество на вашем наборе данных скажут больше, чем сравнение прайс-листов.

Нужен API-ключ сегодня

Регистрация по email или Telegram занимает пару минут, оплата идёт в рублях, VPN не нужен. Один ключ работает и с DeepSeek, и с другими моделями.

Получить ключ

Читайте также

Один ключ вместо пяти аккаунтов

DeepSeek, GPT, Claude и Gemini через один OpenAI-совместимый адрес: api.aitunnel.ru/v1. Регистрация занимает пару минут, оплата в рублях, доступ без VPN.

  • Один ключ на все модели
  • Оплата в рублях и счёт для юрлиц
  • Совместимо с OpenAI SDK