Блог

OpenAI-совместимый API: как подключить Claude, Gemini и DeepSeek через один base_url

Команда LLM MartРедакция2 мин чтения

OpenAI-совместимый API это формат запросов, повторяющий схему OpenAI: тот же путь chat/completions, те же поля и тот же конверт ответа. Благодаря этому один клиент вызывает Claude, Gemini, DeepSeek и десятки других моделей. Достаточно поменять base_url и ключ, код остаётся прежним.

Содержание
  1. Что это значит
  2. Что это даёт на практике
  3. Чем отличается Anthropic-протокол
  4. Что ломается при переносе
Что значит OpenAI-совместимый API, какие модели через него работают, чем отличается от Anthropic-протокола и как перейти на один base_url без переписывания кода.
Рисунок 1. Один base_url открывает модели разных провайдеров

Что это значит

Когда говорят «OpenAI-совместимый», речь о формате общения, а не о компании. Сервер принимает запрос на путь /api/v1/chat/completions, ожидает поля model, messages, temperature и возвращает ответ в конверте с choices.

Такой формат стал де-факто стандартом. Клиенты, написанные под OpenAI, работают с любым сервером, который его поддерживает. Это даёт возможность менять провайдера без переписывания кода.

Что это даёт на практике

Первое: одна интеграция вместо нескольких. Вместо отдельного SDK для каждой линейки используется один клиент, а меняется только имя модели.

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

Python
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["LLM_MART_API_KEY"],
    base_url="https://llmmart.ru/api/v1",
)
for model in ("deepseek/deepseek-v4.1-flash", "z-ai/glm-5.3"):
    reply = client.chat.completions.create(
        model=model,
        messages=[{"role": "user", "content": "Объясни разницу между двумя подходами."}],
    )
    print(model, "→", reply.choices[0].message.content[:80])

Чем отличается Anthropic-протокол

У Anthropic свой формат: путь /v1/messages, поле max_tokens обязательно, а содержимое сообщений устроено как массив блоков. Системная инструкция передаётся отдельным полем, а не сообщением с ролью.

Отсюда правило про базовый адрес: для OpenAI-клиентов нужен https://llmmart.ru/api/v1, для Anthropic SDK — https://llmmart.ru/api без версии, иначе получится /v1/v1/messages и 404. Подробности в документации Messages.

КлиентБазовый адресПуть
OpenAI SDKhttps://llmmart.ru/api/v1/chat/completions
Anthropic SDKhttps://llmmart.ru/api/v1/messages
Responses APIhttps://llmmart.ru/api/v1/responses

Что ломается при переносе

Первая ошибка: идентификаторы. Слаг из документации OpenRouter или вендора не сработает, нужно брать имя модели из каталога.

Вторая: лишняя версия в адресе. Третья: неподдерживаемые параметры. Четвёртая: ожидание одинакового поведения. Формат совпадает, но модели разные: у каждой свой контекст, свои цены и свои сильные стороны.

Адрес

Поставьте base_url https://llmmart.ru/api/v1 для OpenAI-клиентов.

Ключ

Выпустите ключ sk-… в кабинете и положите в переменную окружения.

Модель

Возьмите слаг из каталога и проверьте, что она включена.

Проверка

Отправьте тестовый запрос и убедитесь, что ответ пришёл от нужной модели.

Фреймворки вроде LangChain и LiteLLM настраиваются так же: адрес и ключ. Инструкции собраны в разделе интеграций, цены моделей лежат в каталоге.

Одна интеграцияDeepSeek: DeepSeek V4.1 FlashДешёвая модель с миллионом токенов контекста через общий OpenAI-совместимый адрес.Карточка модели →
Anthropic-протоколAnthropic: Claude Sonnet 5.5Модель для Claude Code и Agent SDK, которым нужен путь /v1/messages.Карточка модели →
Responses APIZ.ai: GLM 5.3Модель с поддержкой Responses для Codex CLI и похожих инструментов.Карточка модели →

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

Что такое OpenAI-совместимый API?

Это формат запросов и ответов, повторяющий схему OpenAI: путь /api/v1/chat/completions, поля model и messages, конверт с choices. Благодаря этому один клиент работает с разными моделями. В LLM Mart такой адрес открывает Claude, Gemini, DeepSeek и остальные модели каталога на одном ключе с оплатой в рублях.

Какие модели работают через один base_url?

Через OpenAI-совместимый адрес LLM Mart доступны все текстовые модели каталога: Anthropic, OpenAI, Google, DeepSeek, Qwen, GLM, Kimi, российские GigaChat и YandexGPT. Меняется только идентификатор модели в запросе, остальной код остаётся прежним. Список с ценами и фильтрами есть в каталоге.

Чем OpenAI-совместимый API отличается от Anthropic?

Формат запросов и путь различаются: у OpenAI это /chat/completions, у Anthropic /v1/messages с обязательным max_tokens и системной инструкцией отдельным полем. Поэтому базовые адреса тоже разные: для OpenAI-клиентов нужен /api/v1, для Anthropic SDK адрес без версии. Иначе получится /v1/v1/messages и ответ 404.

Почему не работает модель после переноса?

Чаще всего идентификатор скопирован из документации другого сервиса. Слаг вроде claude-3-5-sonnet из чужого примера не сработает: нужен точный из каталога LLM Mart, например anthropic/claude-sonnet-5.5. Вторая частая причина связана с лишней версией в базовом адресе, третья с неподдерживаемыми параметрами запроса.

Совместимость формата значит одинаковое поведение?

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

Статья была полезной?
Поделиться:TGVKX

Комментарии 0

Комментарии проходят модерацию

Статьи по теме