DeepSeek API из России в 2026: ключ, base_url и проверка первого ответа

DeepSeek API из России в 2026: ключ, baseurl и первый ответ модели
DeepSeek API из России в 2026: ключ, baseurl и первый ответ модели

Подключить DeepSeek API из России в 2026 году можно двумя путями: напрямую через платформу DeepSeek или через российский шлюз вроде Provod, где ключ выпускается в рублёвом кабинете, а запрос уходит на совместимый адрес. В обоих случаях первый вызов считается удачным только тогда, когда модель вернула ровно тот текст, который вы попросили, а в ответе видны поля расхода.

Ниже разберём, какой ключ и base_url подставлять, как выглядит минимальный безопасный запрос и где искать usage, чтобы понимать, во что обходится каждая строчка.

Чат, прямой API и вызов через шлюз: три разные проверки

Начнём с того, что часто путают. Официальным веб-чатом DeepSeek из России пользоваться можно, это подтверждают публичные данные, а в мае Роскомнадзор сообщил Интерфаксу, что ограничений против сервиса не вводил. О том, как выглядит доступ к DeepSeek у нас, писали и в РБК Трендах.

Только вот открытый чат ничего не говорит о вашем коде. Чат, прямой DeepSeek API и вызов DeepSeek через шлюз живут каждый своей жизнью: у них разные ключи, разные адреса, разная оплата и разные причины отказа. Если чат работает, а скрипт падает, это нормальная ситуация, и чинить её надо в своём слое.

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

Ключ и base_url: что куда подставлять

Любой OpenAI-совместимый клиент просит у вас всего четыре вещи: ключ, базовый адрес, идентификатор модели и сообщение. Запутаться можно в каждой, поэтому разложу по маршрутам.

Прямой DeepSeek API по официальной документации выглядит так:

  • base_url: https://api.deepseek.com, метод /chat/completions, для формата Anthropic отдельный адрес https://api.deepseek.com/anthropic;
  • ключ создаётся в кабинете платформы DeepSeek, условия пополнения и оплаты для российского аккаунта сверяйте там же и отдельно от доступности чата;
  • модели на ноябрь 2026 года: deepseek-v4-flash и deepseek-v4-pro, а старые имена deepseek-chat и deepseek-reasoner документация переводила на режимы deepseek-v4-flash и объявляла к отключению 24 июля 2026 года.

Через Provod маршрут похож, меняются только адрес и ключ. Ключ выпускается на странице API Provod в кабинете вашего пространства, полностью показывается один раз, так что копируйте его сразу и кладите в переменную окружения. Базовый адрес для OpenAI-совместимых клиентов: https://api.provod.ai/v1, метод тот же, Chat Completions. Авторизация обычная, заголовок Authorization: Bearer.

С идентификатором модели осторожнее всего. В каталоге Provod на 11.11.2026 у DeepSeek шесть текстовых моделей, среди них deepseek-v4-flash, deepseek-v4-pro и deepseek-v4.1-flash, все с контекстом около миллиона токенов. Но документация по выбору модели прямо просит копировать поле id из ответа GET /v1/models для своего пространства: имя на сайте или старый скриншот здесь плохие подсказки. В том же ответе есть поле available: если там false, рядом стоит причина, и для части моделей в личном пространстве это FIRST_TOP_UP_REQUIRED, то есть модель откроется после первого реального пополнения.

Ключ DeepSeek API и baseurl: что подставить в код для первого запроса
Ключ DeepSeek API и baseurl: что подставить в код для первого запроса

Минимальный запрос: одна строка, которую модель должна вернуть

Для первого вызова не нужен ни промт на три абзаца, ни стриминг. Нужен самый скучный запрос на свете: попросите модель вернуть заранее заданную строку и больше ничего. Тогда проверка ответа сводится к сравнению двух строк, и вы сразу видите, где сломалось.

Пример ниже документационный: он собран по опубликованному описанию Chat Completions в Provod, в рамках этой статьи запрос не запускался, поэтому вывод модели в нём не показан. Ключ берётся из переменной окружения, в коде его нет.

export PROVOD_API_KEY="ваш_ключ" curl --fail-with-body --silent --show-error https://api.provod.ai/v1/chat/completions \ -H "Authorization: Bearer $PROVOD_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "deepseek-v4-flash", "messages": [ {"role": "user", "content": "Ответь ровно одной строкой: PROVOD-OK-2026"} ], "max_tokens": 20 }'

То же самое на Python через официальный SDK OpenAI, где меняется только base_url:

import os from openai import OpenAI client = OpenAI( api_key=os.environ["PROVOD_API_KEY"], base_url="https://api.provod.ai/v1", ) resp = client.chat.completions.create( model="deepseek-v4-flash", # возьмите точный id из GET /v1/models messages=[{"role": "user", "content": "Ответь ровно одной строкой: PROVOD-OK-2026"}], max_tokens=20, ) print(resp.choices[0].message.content) print(resp.choices[0].finish_reason) print(resp.model) print(resp.usage)

Для прямого DeepSeek API код тот же, только base_url="https://api.deepseek.com" и ключ платформы DeepSeek. Параметр max_tokens ограничивает длину ответа, и это ваша страховка на случай, если модель решит поговорить. Учтите, что поддержка параметров зависит от модели: список смотрите в поле supported_parameters каталога.

Как прочитать ответ: три признака, что запрос сработал

Код 200 сам по себе ничего не доказывает. Сервер может честно ответить 200 и вернуть пустую строку, обрезанный текст или ответ другой модели, если вы указали алиас. Основатель Provod Александр Нестеров предлагает простой метод: проверять содержимое ответа, а статус считать только пропуском к этой проверке. Я бы смотрел на три вещи подряд.

Первое: текст. Он лежит в choices[0].message.content, и там должна стоять ваша строка PROVOD-OK-2026 без лишних слов. Пришло что-то похожее, но с пояснениями, значит модель работает, а вот инструкцию надо формулировать жёстче, это пригодится и в бою.

Второе: завершённость. Поле finish_reason со значением stop означает, что модель закончила сама. Если там length, ответ упёрся в ваш max_tokens, и текст может быть обрезан на полуслове, что для первого запроса ещё не трагедия, а вот для рабочего сценария уже повод поднять лимит.

Третье: модель. Поле model в ответе показывает, кто на самом деле отвечал. Если вы просили одну модель, а там другая, лучше выяснить это на тестовой строке, чем на счёте за месяц.

Первый ответ DeepSeek API: как проверить текст, finishreason и модель
Первый ответ DeepSeek API: как проверить текст, finishreason и модель

Где смотреть usage и сколько стоит первый вызов в рублях

Теперь деньги. В ответе Chat Completions есть блок usage с полями prompt_tokens, completion_tokens и total_tokens: это сколько токенов ушло на вопрос, на ответ и всего. По описанию учёта использования Provod добавляет туда же фактическое списание: usage.cost и валюту в usage.currency, а точная строка итоговой суммы лежит в provod.billing.total_charge.

Токены и рубли полезно считать отдельными наблюдениями. Токены говорят, сколько модель прочитала и написала, рубли говорят, сколько с вас списали, и между ними стоит тариф, кэш и рассуждения. Документация отдельно предупреждает, что токены рассуждений входят в стоимость всегда, даже если отдельной строки под них в ответе нет, а итоговая сумма запроса видна в разделе «Использование» вашего пространства.

Для ориентира: по публичному прайсу Provod на 11.11.2026 у deepseek-v4-flash вход стоит 54,56 ₽ за миллион токенов, выход 163,67 ₽, а у deepseek-v4.1-flash 24,80 ₽ и 99,19 ₽. Наш тестовый запрос укладывается в несколько десятков токенов, так что по этим ставкам он стоит доли копейки. Прайс при этом не обещает цену навсегда и не гарантирует наличие модели завтра, поэтому финальную цифру берите из usage.cost и раздела «Использование».

Есть ещё один нюанс, на котором спотыкаются при первом пополнении. Перед запросом с баланса резервируется сумма, и доступный остаток временно меньше общего. Резерв не равен списанию: если запрос упал до ответа модели, резерв возвращается целиком. Подробности про пополнение картой, СБП или счётом для ООО и ИП собраны на странице баланса и пополнения.

Usage в DeepSeek API: токены и списание в рублях после первого запроса
Usage в DeepSeek API: токены и списание в рублях после первого запроса

Что чаще всего ломает первый запрос

Большинство неудачных первых вызовов DeepSeek API ломаются на одном из пяти мест, и все они видны ещё до того, как вы начнёте подозревать модель.

  • Старое имя модели. Если в коде остался deepseek-chat из прошлогодней статьи, сверьте его с актуальным каталогом выбранного маршрута.
  • Чужое пространство. Ключ создан в личном пространстве, а пополнен баланс организации, или наоборот: у каждого пространства свой баланс, свои ключи и своя история.
  • Модель недоступна именно вам. Поле available в GET /v1/models подскажет, и причина там тоже написана.
  • Ключ в клиентском коде. Ключ, который уехал в браузер или мобильное приложение, считайте скомпрометированным: держите его на сервере и выпускайте отдельный ключ на каждый проект.
  • Смешанные форматы. Тело запроса в стиле Anthropic Messages, отправленное на адрес Chat Completions, вернёт ошибку, хотя оба формата у шлюза есть.

Разбор конкретных кодов ошибок, когда запрос всё-таки не прошёл, тянет на отдельный текст, здесь важнее другое: если тестовая строка вернулась целиком, finish_reason равен stop, а в usage видны токены и рубли, первый запрос сработал.

Коротко: что проверить на первом вызове

Официальный чат DeepSeek из России открывается, но доступность чата ничего не говорит о работе DeepSeek API в вашем коде.

Для прямого DeepSeek API базовый адрес https://api.deepseek.com, для вызова через Provod https://api.provod.ai/v1, ключи у маршрутов разные.

Идентификатор модели берите из GET /v1/models своего пространства, старые имена deepseek-chat и deepseek-reasoner документация DeepSeek выводила из оборота.

Минимальный запрос с заданной строкой и max_tokens превращает проверку первого ответа в сравнение двух строк.

Успешный ответ подтверждают три поля: текст в choices[0].message.content, finish_reason со значением stop и model с той моделью, которую вы просили.

Расход смотрите отдельно в токенах из usage и в рублях из usage.cost и раздела «Использование», потому что резерв и итоговое списание различаются.

Если хочется пройти этот путь руками, проще всего выпустить ключ на странице API Provod, пополнить баланс на небольшую сумму и отправить ту самую тестовую строку: в ответе будет текст, модель и цена первого запроса в рублях.

Подробнее:

А вы как проверяете первый вызов новой модели: смотрите только на 200 или сверяете текст и расход? Расскажите в комментариях.