Один API-токен для GPT, Claude и Gemini: как подключить несколько моделей без хаоса в конфигурации

Разработчики, работающие с несколькими моделями одновременно, часто сталкиваются с одной и той же проблемой: у каждого провайдера — свой ключ, свой формат запроса и свой биллинг. Claude, GPT, Gemini, Grok, DeepSeek — если подключать их напрямую, приходится держать в проекте пять разных SDK и пять разных счетов для оплаты. Ace Data Cloud решает эту задачу иначе: один API-токен и единый шлюз https://api.acedata.cloud, через который доступны все основные модели, включая генерацию изображений, музыки, видео и речи.

В этой статье разберём, как устроена маршрутизация запросов между семействами моделей, покажем рабочие примеры на curl и Python, а также обсудим тему оплаты — включая расчёты в USDC.

Почему у каждого семейства моделей свой путь

Ace Data Cloud предоставляет отдельные OpenAI-совместимые точки входа для каждого семейства моделей upstream-провайдеров. Помимо них есть универсальный путь /v1/chat/completions, который умеет маршрутизировать модели Claude по умолчанию. Вот основные точки входа:

  • Claude: https://api.acedata.cloud/v1/chat/completions — модели claude-opus-4-8, claude-sonnet-4-6, claude-haiku-4-5-20251001
  • GPT (OpenAI): https://api.acedata.cloud/openai/chat/completions — модели gpt-5.5, gpt-5.5-pro, gpt-4o, gpt-4o-image, o3
  • Gemini: https://api.acedata.cloud/gemini/chat/completions — модели gemini-3.1-pro, gemini-3.0-pro, gemini-2.5-pro
  • Grok: https://api.acedata.cloud/grok/chat/completions — модели grok-4, grok-3
  • DeepSeek: https://api.acedata.cloud/deepseek/chat/completions — модели deepseek-r1, deepseek-v3

Важно понимать: при отправке запроса нужно попасть именно в путь своего семейства. Если отправить gpt-5.5 на путь Claude, сервис вернёт ошибку — модель просто не будет найдена в этом маршруте. Зато токен один для всех семейств, и остаток квоты общий — его можно посмотреть в консоли приложений.

Пример на curl: обычный чат-запрос к GPT

Базовый запрос на генерацию текстового ответа выглядит так:

curl https://api.acedata.cloud/openai/chat/completions \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5.5",
    "messages": [
      {"role": "user", "content": "Объясни разницу между потоковой и обычной генерацией ответа"}
    ]
  }'

Для Claude меняем только путь и модель:

curl https://api.acedata.cloud/v1/chat/completions \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-4-6",
    "messages": [
      {"role": "user", "content": "Составь план миграции монолита на микросервисы"}
    ]
  }'

Пример на Python: обёртка для нескольких моделей

Ниже — простой класс, который переключается между семействами моделей, меняя только базовый путь:

import requests

TOKEN = "your_api_token"
BASE = "https://api.acedata.cloud"

ROUTES = {
    "claude": "/v1/chat/completions",
    "openai": "/openai/chat/completions",
    "gemini": "/gemini/chat/completions",
    "grok": "/grok/chat/completions",
    "deepseek": "/deepseek/chat/completions",
}

def chat(family, model, prompt):
    url = BASE + ROUTES[family]
    headers = {
        "Authorization": f"Bearer {TOKEN}",
        "Content-Type": "application/json",
    }
    payload = {
        "model": model,
        "messages": [{"role": "user", "content": prompt}],
    }
    resp = requests.post(url, headers=headers, json=payload, timeout=60)
    resp.raise_for_status()
    data = resp.json()
    return data["choices"][0]["message"]["content"]

print(chat("openai", "gpt-5.5", "Сформулируй три идеи для A/B-теста"))
print(chat("claude", "claude-sonnet-4-6", "Сделай ревью этого фрагмента кода"))

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

Изображения через отдельный формат Images API

Модели генерации изображений вроде gpt-image-2 или nano-banana-pro работают по другому контракту — не через messages[], а через прямой промпт:

curl https://api.acedata.cloud/openai/images/generations \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image-2",
    "prompt": "Виниловый постер путешествий, ар-деко стиль, надпись AMALFI",
    "size": "1024x1024"
  }'

Оплата в этих моделях фиксирована за одно изображение независимо от size, а параметр n > 1 не поддерживается — при необходимости нескольких вариантов отправляйте параллельные запросы.

Как устроена оплата: карта или USDC

Пополнение баланса выполняется через создание заказа в консоли — вы выбираете пакет или сумму пополнения, а списание за реальные вызовы API происходит с баланса по мере использования. Помимо стандартных способов оплаты, заказ можно оплатить в USDC по протоколу X402, с поддержкой сетей Solana и Base. Оплата в USDC даёт скидку 5% от суммы заказа и не требует привязки банковской карты для международных расчётов — это особенно удобно для разработчиков, которые уже работают с криптоплатежами и хотят избежать конвертации валют.

Раздел для пополнения через USDC находится в консоли Coin. После пополнения баланс общий для всех сервисов платформы — токен, модели и метод оплаты никак не связаны между собой.

Практические рекомендации

  • Заводите отдельные переменные окружения для токена, но используйте один и тот же токен для всех семейств моделей — квота общая.
  • Логируйте, к какому пути (/openai/, /gemini/ и т.д.) уходит каждый запрос — это упрощает отладку ошибок маршрутизации.
  • Для критичных сценариев реализуйте fallback между моделями: если основная модель недоступна, переключайтесь на резервную без изменения бизнес-логики.
  • Проверяйте остаток баланса и историю расходов в разделе usage консоли, чтобы не столкнуться с внезапной остановкой запросов.

Итог

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

Comments

Popular posts from this blog

Artistic QR Code API Integration Guidance

How to Configure Claude Code with CC Switch and Ace Data Cloud