LLM-провайдеры (OpenAI-совместимый шлюз)

Зачем это

Обращаться к GPT, Claude, Gemini и другим моделям из приложения, которое работает в России — через один OpenAI-совместимый эндпоинт, без VPN и без собственного прокси. Любой SDK, который умеет OpenAI, направляете на базовый URL шлюза, авторизуетесь ключом проекта, а платформа маршрутизирует запрос к провайдеру.

Одно решение: чьим ключом платим

Откройте LLM-провайдеры в навигации проекта — этот вопрос задаётся первым, потому что всё дальнейшее от него не зависит.

Свои ключи

Вы заводите в проекте ключ OpenAI, Anthropic или другого провайдера. Шлюз подставляет его в каждый подходящий запрос.

  • Нужен аккаунт у провайдера и чем ему платить — обычно зарубежная карта.
  • Счёт выставляет провайдер напрямую. Сам шлюз бесплатный.
  • Ключ хранится зашифрованным и после сохранения в браузер не возвращается.

Наши ключи

Запрос идёт на собственном ключе платформы. Заводить ничего не нужно.

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

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

Как довести до первого вызова

  1. Создайте ключ. На этой же странице выпустите ключ проекта sk-dada-ai-…. Он показывается один раз — скопируйте сразу. Разным сервисам давайте разные ключи, чтобы отзывать по одному.
  2. Выберите режим ключей выше: добавить свой ключ провайдера или перевести проект на наши.
  3. Вызовите модель сниппетом со страницы (Python, Node.js или curl). Он отрисован с вашим реальным base URL и алиасом модели, поэтому запускается как есть.

В запросе указывайте алиас модели из таблицы каталога (например fast, medium, smart или алиас конкретного провайдера), а не название вендора. Алиас продолжит работать, когда модель за ним заменят.

Как ограничить модели ключа

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

  1. При создании нажмите Ограничить модели, снимите Разрешить все модели и отметьте алиасы, которые ключу можно вызывать (например fast, smart, groq-gpt-oss).
  2. У готового ключа нажмите Модели в его строке, поменяйте выбор и сохраните. Шлюз подхватит изменение в течение минуты.

Ограниченный ключ видит в GET /v1/models только свои модели. Любую другую модель — в chat, completions, embeddings, responses, images или audio — шлюз отклоняет до обращения к провайдеру:

{"error": {"message": "model_not_allowed: model 'claude-haiku' is not allowed for this api key (allowed: fast, smart)",
           "type": "model_not_allowed", "param": "model", "code": "403"}}

OpenAI SDK поднимают это как PermissionDeniedError с e.type == "model_not_allowed". То же ограничение через API (null снова разрешает все модели; пустой список отклоняется):

curl -X PATCH https://console.dada-tuda.ru/api/v1/projects/$PROJECT_ID/ai/keys/$KEY_ID \
  -H "Authorization: Bearer $DADA_TOKEN" -H "Content-Type: application/json" \
  -d '{"allowed_models": ["fast", "smart"]}'

POST /api/v1/projects/{projectId}/ai/keys принимает то же поле allowed_models, а список ключей возвращает его для каждого ключа (null — все модели).

Что видно потом

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

Смежное