← Блог
ИнтеграцияGPT APIClaude API

Что такое API, совместимый с OpenAI: как он устроен и чем отличается

(цены в тексте следуют актуальному прайс-листу)

Коротко

API, совместимый с OpenAI, — это любой HTTP API, который принимает такие же запросы, как API OpenAI, и отвечает в том же формате: те же пути (/v1/chat/completions, /v1/models и часто /v1/responses), те же поля JSON и тот же заголовок Authorization: Bearer с ключом. Поэтому официальные SDK OpenAI и множество инструментов на их основе работают с ним, если поменять всего две вещи: base URL и API-ключ. «Совместимость» говорит о формате запросов, а не о модели за ним, и каждый сервис поддерживает свою часть возможностей OpenAI, так что проверяйте то, на что опираетесь.

Это руководство опубликовано APIVAI — шлюзом для моделей Claude и GPT, совместимым с OpenAI. В примерах используется его адрес; те же шаги работают с любым совместимым сервисом.

Что входит в «совместимость»

Большинство сервисов повторяют ядро Chat Completions API от OpenAI:

ЧастьЧто принимает или возвращает совместимый сервис
POST /v1/chat/completionsID модели в model и массив messages из {"role": ..., "content": ...}
Ответchoices[0].message.content, finish_reason и объект usage (prompt_tokens, completion_tokens, total_tokens)
Потоковый режим"stream": true возвращает server-sent events: по чанку data: {...} на каждый кусок текста, в конце data: [DONE]
Инструментыtools с parameters в JSON Schema; модель отвечает tool_calls, а результаты вы возвращаете сообщениями role: "tool"
GET /v1/modelsСписок ID моделей, доступных вашему ключу
АвторизацияAuthorization: Bearer <ключ>
ОшибкиJSON вида {"error": {"message": ..., "type": ..., "code": ...}}

Более новые сервисы реализуют и POST /v1/responses — новый Responses API от OpenAI, который некоторые инструменты (например, Codex CLI) используют вместо Chat Completions. Эндпоинты /v1/embeddings, изображений, аудио и файлов встречаются реже.

Где сервисы расходятся: чек-лист

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

  • ID моделей. Каждый сервис называет модели по-своему. Берите их из GET /v1/models, а не из названий OpenAI.
  • Игнорируемые параметры. Неподдерживаемые поля часто отбрасываются без ошибки: response_format, seed, logprobs, n > 1, presence_penalty, флаг strict у инструментов. Запрос «работает», но делает меньше, чем вы думаете.
  • Диапазоны параметров. Некоторые модели отклоняют значения, которые принимает OpenAI (например, temperature больше 1 или одновременно заданные temperature и top_p).
  • Эндпоинты кроме чата. Эмбеддинги, изображения, аудио, файлы, batch и дообучение часто отсутствуют.
  • Usage в потоке. Счётчики токенов в потоковом ответе могут требовать "stream_options": {"include_usage": true} или не приходить вовсе.
  • Ошибки и лимиты. Форма JSON ошибки обычно совпадает, но коды статусов, тексты и заголовки лимитов (x-ratelimit-*, retry-after) различаются.
  • Вызов инструментов и изображения. Поддерживаются большинством крупных моделей, но проверьте параллельные вызовы, принудительный tool_choice и изображения на той модели, которую будете использовать.

Кто предлагает API, совместимый с OpenAI

Несколько хорошо документированных примеров:

СервисBase URLПримечания
Ollama (локально)http://localhost:11434/v1Chat Completions, Completions, модели, эмбеддинги и Responses без сохранения состояния; ключ обязателен, но не проверяется
vLLM (свой сервер)http://localhost:8000/v1Запускается командой vllm serve <модель>; Chat Completions, Completions, Responses, эмбеддинги и модели
LM Studio (локально)http://localhost:1234/v1Модели, Chat Completions, Completions, Responses и эмбеддинги
Anthropichttps://api.anthropic.com/v1/Anthropic называет его слоем для тестирования и сравнения моделей, а не долгосрочным решением для продакшена; кэш промптов и часть полей есть только в нативном API
Google Geminihttps://generativelanguage.googleapis.com/v1beta/openai/По словам Google, в бета-версии
API-шлюзыСобственный URL шлюзаМодели нескольких провайдеров за одним ключом и одним форматом; APIVAI — один из них, для Claude и GPT (см. также APIVAI и OpenRouter)

Обратите внимание на base URL: большинство заканчиваются на /v1, у Gemini — нет. Всегда копируйте base URL из документации провайдера.

Как переключить приложение на другой совместимый сервис

Официальные SDK OpenAI читают две переменные окружения, поэтому многие приложения переключаются без правки кода:

export OPENAI_BASE_URL="https://api.apivai.com/v1"
export OPENAI_API_KEY="your-key"

Или задайте их в коде. Python:

from openai import OpenAI

client = OpenAI(base_url="https://api.apivai.com/v1", api_key="your-key")
resp = client.chat.completions.create(
    model="claude-sonnet-4-6",
    messages=[{"role": "user", "content": "Say hello in one sentence."}],
)
print(resp.choices[0].message.content)

Node.js:

import OpenAI from "openai";

const client = new OpenAI({ baseURL: "https://api.apivai.com/v1", apiKey: "your-key" });
const resp = await client.chat.completions.create({
  model: "gpt-6-luna",
  messages: [{ role: "user", content: "Say hello in one sentence." }],
});
console.log(resp.choices[0].message.content);

Проверьте через curl, прежде чем трогать приложение:

curl https://api.apivai.com/v1/models -H "Authorization: Bearer your-key"

Правило /v1. SDK дописывают к base URL путь /chat/completions, поэтому base URL уже должен содержать версию (.../v1). Ошибка 404 почти всегда значит, что /v1 пропущен или повторяется. Инструменты дописывают разное, поэтому следуйте руководству для своего инструмента.

Инструменты, которые принимают свой адрес, совместимый с OpenAI

У большинства AI-инструментов для кода и чата есть настройка «custom OpenAI-compatible» или «OpenAI base URL». Пошаговые руководства:

Как вызывать Claude в формате OpenAI

Собственный API Claude использует другой формат (/v1/messages, x-api-key, поле system на верхнем уровне). Чтобы работать с Claude из инструмента в формате OpenAI, нужен переводчик: слой совместимости самой Anthropic (см. выше) или шлюз вроде APIVAI, который принимает запросы в формате OpenAI для ID моделей Claude по адресу https://api.apivai.com/v1. Инструменты, которые сами говорят на формате Anthropic, например Claude Code, могут использовать https://api.apivai.com напрямую; см. руководство по Claude Code и документацию API.

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

«Совместим с OpenAI» значит, что работают все функции OpenAI?

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

Нужно ли менять код?

Обычно только base URL, ключ и ID модели. Если код использует то, что есть только у OpenAI (например, structured outputs через response_format или Assistants API), проверьте, поддерживает ли это новый сервис.

Можно ли тем же кодом обращаться к локальной модели?

Да. Ollama, vLLM и LM Studio запускают сервер, совместимый с OpenAI, поэтому тот же код SDK работает с base_url, равным http://localhost:11434/v1, http://localhost:8000/v1 или http://localhost:1234/v1. ID моделей и поддерживаемые функции зависят от сервера и модели.

Заканчивается ли base URL на /v1?

У большинства сервисов — да: SDK дописывает /chat/completions, поэтому base URL должен заканчиваться версией. У некоторых провайдеров путь другой (у Gemini — /v1beta/openai/), так что копируйте его из документации.

Как узнать, какие модели поддерживает сервис?

Вызовите GET /v1/models со своим ключом: ID из ответа и нужно указывать в model. Цены и размер контекста — на странице цен провайдера; для APIVAI — на странице моделей.

Готовы начать?

Получите API-ключ за 30 секунд. Оплата по факту использования Claude и GPT.

Начать