Ищем разработчиков для созвона на 25 минут: 500 ₽ на баланс за разговор.

Выбрать время
Все руководства

Руководство

OpenAI-совместимый AI-шлюз: подключить модели к приложению одним ключом

Обновлено · 6 мин чтения

Чтобы подключить модели к приложению через OpenAI-совместимый шлюз DADA Cloud, в любом OpenAI SDK меняют две настройки: базовый адрес на https://ai.dada-tuda.ru/v1 и ключ на ключ проекта вида sk-dada-ai-.... Код вызова остаётся прежним, а в поле model пишут псевдоним модели, например gpt-4o, claude или fast.

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

Шаг 1 - Создайте ключ проекта

Откройте раздел LLM-провайдеры в навигации проекта и выпустите ключ. Он выглядит как sk-dada-ai- и 48 шестнадцатеричных символов, показывается один раз и после закрытия диалога его уже не показать, поэтому копируйте его сразу в хранилище секретов приложения. У ключа два права: ai:chat и ai:embeddings.

То же делает REST API: POST /api/v1/projects/{id}/ai/keys с ролью, которая позволяет запись в проект. В списке MCP-инструментов этих маршрутов нет, управлять ключами через MCP-клиент нельзя. Разным сервисам выдавайте разные ключи: отозвать один ключ можно, не трогая остальные.

Шаг 2 - Выберите, чьим ключом платить за модели

Режим маршрутизации задаётся на уровне проекта, по умолчанию стоит byok.

РежимЧей ключ у провайдераКто выставляет счёт за токеныЧто нужно от вас
byok (по умолчанию)Ваш собственныйПровайдер, напрямуюАккаунт у провайдера и способ оплаты у него
platformКлюч платформыDADA Cloud, в общем счёте проектаПереключить проект в этот режим

Для режима с собственными ключами поддержано 11 провайдеров: OpenAI, Anthropic, OpenRouter, Groq, SambaNova, SotaModel, Z.ai, Typesafe, Keyvix, DecisionNode и Cloudflare. Если у ключа есть свой ключ провайдера, запросы идут только через него и не переключаются на пул платформы. Это важно для расходов: запрос не уйдёт на чужой ключ, если ваш упёрся в лимит.

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

Шаг 3 - Направьте SDK на шлюз

В Python это выглядит так:

from openai import OpenAI

client = OpenAI(
    base_url="https://ai.dada-tuda.ru/v1",
    api_key=os.environ["DADA_AI_KEY"],
)
reply = client.chat.completions.create(
    model="fast",
    messages=[{"role": "user", "content": "Привет"}],
)

В Node.js те же два параметра: baseURL и apiKey. Для проверки из терминала подойдёт curl на https://ai.dada-tuda.ru/v1/chat/completions с заголовком Authorization: Bearer <ключ>. Готовый сниппет с вашим адресом и псевдонимом модели есть на странице LLM-провайдеров проекта, его можно запускать как есть.

Что отдаёт шлюз: чат, completions, embeddings, responses, изображения и аудио. Список доступных ключу моделей возвращает GET /v1/models.

Шаг 4 - Выберите псевдоним модели

Поле model принимает псевдоним платформы, у провайдера идентификатор модели может выглядеть иначе. В каталоге есть:

  • OpenAI: gpt-4o, gpt-4o-mini, а для эмбеддингов text-embedding-3-small;
  • Anthropic: claude, claude-haiku;
  • уровни платформы: fast, medium, smart, vision;
  • glm-5.3, glm-5.3-flash, groq-gpt-oss, groq-llama.

Уровни fast, medium и smart удобны, когда приложению важна скорость или качество, а конкретная модель не принципиальна: смена модели за псевдонимом не требует правок в коде. Полный перечень зависит от проекта и подключённых провайдеров, его показывает GET /v1/models.

Шаг 5 - Ограничьте ключ нужными моделями

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

Через API то же делает PATCH /api/v1/projects/{projectId}/ai/keys/{keyId} с полем allowed_models. В списке не больше 100 моделей. Значение null снова разрешает все, пустой список шлюз отклоняет: ключ, которому нельзя ничего, равен отозванному, и его проще отозвать.

Запрос к модели вне списка шлюз отклоняет до обращения к провайдеру. Ответ приходит с кодом 403 и типом model_not_allowed. OpenAI SDK поднимает его как PermissionDeniedError, у которого e.type == "model_not_allowed". Ограниченный ключ видит в GET /v1/models только свои модели.

Шаг 6 - Следите за расходом

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

Когда шлюз вам не подходит

Шлюз маршрутизирует запросы к моделям вендоров. Собственные веса он не обслуживает, для них нужен GPU у другого провайдера: DADA Cloud модели на GPU не размещает. Если нужна модель, которой нет в каталоге псевдонимов, проверьте GET /v1/models для вашего ключа, а при отсутствии подключите провайдера со своим ключом, если он среди одиннадцати поддерживаемых.

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

О том, как собрать вокруг шлюза приложение целиком, читайте в руководстве о платформах для AI-приложений и в разборе агентов на DADA Cloud. Параметры режимов и ключей описаны в разделе LLM-провайдеры документации.

Частые вопросы

Нужно ли менять код, если приложение уже работает с OpenAI?

Нет, если оно использует OpenAI SDK или любую библиотеку с настройкой базового адреса. Меняют адрес на https://ai.dada-tuda.ru/v1, ключ на ключ проекта и значение model на псевдоним из каталога. Остальной код вызова сохраняется.

Чем платить за токены?

Зависит от режима проекта. В режиме byok счёт выставляет провайдер, у которого вы завели ключ, и шлюз за это не берёт. В режиме platform токены оплачиваются в общем счёте проекта с наценкой к цене провайдера, оплата российской картой.

Что делать с ошибкой 403 model_not_allowed?

Ключ ограничен списком моделей, а в запросе указана другая. В тексте ошибки перечислено, что разрешено. Либо поменяйте model на разрешённый псевдоним, либо добавьте модель в список ключа на странице LLM-провайдеров или через PATCH.

Можно ли использовать один ключ в нескольких сервисах?

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

Как узнать, какие модели доступны моему ключу?

Вызовите GET /v1/models с этим ключом. Для ограниченного ключа ответ содержит только разрешённые ему модели.

Хранит ли платформа мои ключи провайдеров?

Собственные ключи провайдеров хранятся зашифрованными, а после сохранения в браузер не возвращаются. Ключи проекта sk-dada-ai- показываются один раз при создании.