Мы делаем агрегатор доступа к зарубежным моделям, DeepSeek среди них, и зарабатываем на наценке к токенам. Здесь разбираем то, на чём мы потеряли деньги и время при подключении к DeepSeek. 

Уточнение для тех, кто пришёл к API из бесплатного чата на сайте DeepSeek. Это разные продукты, и разница не в качестве модели, а в том, кто отправляет запрос. В чате за клавиатурой сидит человек, и доступ бесплатный. По ключу к модели обращается программа — бот, сценарий, редактор кода, — и вы платите за каждый токен. Если задача разовая, вроде «перевести документ» или «разобрать один лог», ключ вам не нужен вовсе, открывайте чат.

Старые имена моделей отключили, и часть наших связок встала

Двадцать четвёртого июля DeepSeek вывел из эксплуатации deepseek-chat и deepseek-reasoner. Какое-то время компания перенаправляла запросы к этим именам на новую линейку, потом они начали возвращать ошибку, и у нас перестала работать часть сценариев. Замена прямая: вместо deepseek-chat ставится deepseek-v4-flash, а вместо deepseek-reasoner — тот же Flash с включённым режимом рассуждений. Здесь легко переплатить: reasoner по привычке меняют на старшую модель, хотя рассуждения умеет и младшая, а стоит она втрое дешевле.

Линейку V4 компания достраивала четыре месяца.

Цены здесь и дальше — для дешёвого тарифного окна, про дорогое ниже
Цены здесь и дальше — для дешёвого тарифного окна, про дорогое ниже

Все три модели умеют вызывать инструменты, то есть обращаться к вашим функциям и внешним сервисам, и отдавать ответ в JSON. Своего веб-поиска у DeepSeek нет, свежие данные вы подключаете отдельным инструментом сбоку.

DeepSeek за лето научился отвечать в формате Anthropic по отдельному адресу https://api.deepseek.com/anthropic, и это единственный способ подключить к нему Claude Code. Нам это сэкономило день: внутренний инструмент не пришлось переписывать под другой формат запросов.

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

Каждую неделю нам приносят в поддержку один и тот же вопрос. На маркетплейсах продают доступ к «закрытым» и «секретным» версиям моделей DeepSeek. Закрытых версий нет, весь каталог открывается обычным ключом, так что продавцы такого доступа просто врут.

С августа тот же объём стал стоить дороже

У ввода и вывода разные ставки, и вывод втрое дороже.

Возьмём обычный запрос к Flash: 2000 токенов на входе, чуть больше двух страниц текста, и 1000 токенов ответа. Ввод обойдётся в $0,00044, вывод в $0,00066, вместе чуть больше одной десятой цента. Тот же запрос к Pro стоит $0,0033. Тысяча таких запросов в день — это доллар на Flash и три на Pro.

Шестнадцатого августа к этой арифметике добавилась вторая переменная: DeepSeek развёл тарифы по времени суток, и в дорогом окне цена ровно вдвое выше.

Дорогое окно действует по будням с 01:00 до 04:00 и с 06:00 до 10:00 UTC, по Москве это с 04:00 до 07:00 и с 09:00 до 13:00. Остальное время и выходные целиком идут по половинному тарифу, так что российский рабочий день после обеда попадает в дешёвое окно сам собой. Мы после этого переставили разбор архивов и переиндексацию базы на вечер, и это единственная правка, которая ничего не стоила и сразу отразилась на счёте.

Вторая статья экономии — кеш промпта. Он срабатывает, когда начало запроса совпадает с началом предыдущего, включать его руками не нужно, а попадание делает входные токены в тридцать раз дешевле. Смысл он имеет там, где длинный неизменный кусок повторяется из запроса в запрос: при системном промпте на 5000 токенов и тысяче запросов в день без кеша вы платите $1,1 в сутки, с кешем три с половиной цента.

Когда идти напрямую, а когда через посредника

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

За Claude Code и всем, что говорит в формате Anthropic, тоже придётся идти напрямую. Агрегаторы работают на стандарте OpenAI и Anthropic-совместимый адрес не поддерживают, так что подключить через них Claude Code не выйдет. Сюда же попадают новые модели: у провайдера они появляются в день релиза, у посредника позже.

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

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

У этого удобства есть цена помимо наценки, и знать про неё лучше до интеграции. Одну и ту же модель у агрегатора обычно отдают несколько провайдеров: запрос уходит к доступному, и если самый дешёвый недоступен, обслужит следующий по цене — поэтому стоимость конкретного запроса иногда расходится с прайсом в разы. Провайдера можно зафиксировать прямо в запросе, но взамен вы теряете подстраховку: если выбранный недоступен, запрос упадёт вместо того, чтобы уйти к дорогому.

Curl отвечает, нода n8n — нет

Больше всего времени за лето мы потеряли здесь, и модель была ни при чём.

Подключение DeepSeek к n8n — это пять полей: базовый адрес, ключ и имя модели. Отдельную ноду для DeepSeek заводить не надо, берите обычную ноду OpenAI. Нода здесь — блок сценария, который делает одно действие.

У нас этот блок возвращал ошибку, а инструменты к агенту не подключались вовсе. Сбивало с толку то, что тот же запрос через curl с той же машины отрабатывал нормально: ключ живой, адрес верный, модель существует. Мы перевыпустили ключ, проверили сеть, поменяли модель, и только потом добрались до настроек самой ноды.

Причина оказалась в одной галочке. В настройках ноды с моделью по умолчанию включён Use Responses API — это другой метод OpenAI, которого у DeepSeek нет. Клиент отправляет запрос по несуществующему адресу и получает 404, а в интерфейсе это выглядит как проблема с моделью. Галку надо снять, после этого работает и нода, и инструменты. В нашем чате поддержки это решение нашли пользователи раньше, чем оно попало в документацию n8n, и с тех пор мы объясняем его примерно раз в неделю.

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

Где ещё ломается связка, а виноватым выглядит ключ

Адрес с /v1 на конце и без него ведут себя по-разному, и при подключении инструментов иногда помогает переключить базовый адрес на версию v2. Переменные окружения не попадают из профиля шелла в докер-контейнер и в секреты CI, поэтому проверяйте их внутри контейнера, а не в своём терминале. Ошибку Cannot POST /api/v1 со статусом 404 ловят в первый же день те, кто дёргает API руками: адрес надо указывать целиком, вместе с /chat/completions. Последнее место — слаг модели, то есть её короткое имя в запросе: точка вместо дефиса в номере версии даёт «модель не найдена», а через агрегатор к имени добавляется префикс вендора, вроде deepseek/.

Разводит это одна проверка. Запросите тем же ключом и с того же хоста список моделей: если /models отдаёт каталог, дело не в ключе и не в сети, а в прослойке между вами и API.

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

import os

from openai import OpenAI

client = OpenAI(

    api_key=os.environ["DEEPSEEK_API_KEY"],

    base_url="https://api.deepseek.com",

)

response = client.chat.completions.create(

    model="deepseek-v4-flash",

    messages=[{"role": "user", "content": "Привет"}],

    max_tokens=1000,

)

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

print(response.usage)   # сколько токенов ушло на самом деле

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

curl https://api.deepseek.com/chat/completions \

  -H "Content-Type: application/json" \

  -H "Authorization: Bearer $DEEPSEEK_API_KEY" \

  -d '{"model":"deepseek-v4-flash","messages":[{"role":"user","content":"Привет"}]}'

max_tokens задаёт потолок длины ответа, и ставить его стоит всегда: он же страхует от ситуации, когда модель зацикливается на рассуждениях и возвращает пустой ответ, потратив весь лимит на размышления. Системное сообщение необязательное, но держать его неизменным выгодно, потому что именно на нём срабатывает кеш. temperature управляет разбросом ответов, и чем она ниже, тем предсказуемее модель.

Остальное разбирается по коду ответа.

Официальные SDK повторяют упавший запрос сами и с нарастающей паузой, а число попыток задаётся параметром max_retries. Поставьте его в первую очередь: за каждую попытку вы платите целиком, вместе с рассуждениями и переписанным контекстом, а повтор без ограничения будет долбить запрос, пока не кончатся деньги.

Отдельно про лимиты. Жёстких публичных цифр по числу запросов в минуту DeepSeek не публикует, платных уровней с растущими лимитами тоже нет. На практике вы упираетесь в число одновременных запросов, и на массовом прогоне это видно по 429. Обрабатывайте этот код в своей программе, а не выясняйте потолок на боевой задаче.

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

Что спрашивают, когда всё уже работает

Эти вопросы приходят к нам в чат после первого удачного запроса: связка поднялась, а счёт или ответы не сходятся с ожиданиями.

Почему в чате и по API один и тот же промпт даёт разные ответы. Чат добавляет к запросу собственный системный промпт, свои значения температуры и обвязку площадки. По API вы получаете модель без этого слоя, поэтому ответ выходит суше и ближе к формулировке. Пропишите свой системный промпт, и ответы сблизятся.

Почему на агентских задачах счёт растёт быстрее длины ответов. Ввод оплачивается целиком в каждом запросе, а агент прикладывает к нему всю историю и файлы проекта. Сверху идут токены рассуждений, которых вы не видите в ответе, и системный промпт самого клиента: у популярных агентных расширений он доходит до сорока восьми тысяч токенов при обычной норме около двадцати. На короткое «привет» такой клиент отправляет несколько тысяч токенов служебной обвязки.

Почему кеш показывает нули. Он срабатывает только на совпадающем начале запроса, и любая подстановка в первых строках — дата, имя пользователя, случайный идентификатор — обнуляет совпадение. Второе условие: запросы должны идти подряд и на один адрес, редкие обращения раз в час в кеш не попадают.

Почему списалось больше, чем в прайсе. Проверьте по порядку: не попал ли запрос в дорогое тарифное окно и не промахнулся ли мимо кеша.

Что мы поменяли в своём коде после этого лета

Основной моделью у нас теперь стоит Flash, а Pro мы включаем точечно: старшая модель режет задачу на подзадачи и проверяет результат, младшая пишет код. На рутине Pro стоит втрое дороже при том же результате.

Имя модели и базовый адрес мы вынесли в конфиг: после июля это перестало быть вопросом вкуса. Следующее отключение старых имён обойдётся правкой одной строки вместо перебора сценариев.

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

Комментарии (3)


  1. danielstealth
    26.08.2026 19:59

    И зачем ваша прокладка нужна, если всё прекрасно напмямую через api цепияется, что deepseek, что qwen (и ещё куча моделей через qwen cloud)? Модели переключаются без проблем через apu. Лучше 5 минут разово заморочиться за способы оплаты (их масса), чем работать через какую-то прокладку,, сливая деньги и инфу не ясно кому.


    1. a_sirotin
      26.08.2026 19:59

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


  1. MoscowStyle
    26.08.2026 19:59

    Deepseek на столько хорошо, что сделал мне проект по обходу белых списков