Назад в блог

AI для новичковИнструкция

OpenAI-совместимый API: что такое base_url и как переключиться

OpenAI-совместимый API принимает те же запросы, что и OpenAI. Смените base_url, ключ и id модели — и код отправит первый запрос в CheapTokens.

Автор: CheapTokens TeamОпубликовано Обновлено 4 мин чтения

Три значения, которые меняют при переходе на OpenAI-совместимый API: base_url, API-ключ и id модели
Содержание
  1. Что значит «OpenAI-совместимый»?
  2. Что такое base_url?
  3. Три значения, которые нужно сменить
  4. Первый запрос на Python
  5. Тот же запрос через curl
  6. Что вы должны увидеть
  7. Сколько это стоит?
  8. Если не работает
  9. Что дальше

OpenAI-совместимый API — это API, который принимает запросы в том же формате, что и Chat Completions от OpenAI, и отвечает в том же формате. Чтобы перенести приложение к другому провайдеру, обычно меняют три значения: base_url (куда идут запросы), API-ключ и id модели. Остальной код — список сообщений и чтение ответа — остаётся прежним.

В этой статье идея объяснена простыми словами, а в конце — рабочий первый запрос в CheapTokens на Python и curl. Данные о CheapTokens сверены с его документацией 22 октября 2026 года.

Что значит «OpenAI-совместимый»?#

API — это набор правил, по которым программа общается с сервисом через интернет (если слово новое, начните с первого запроса к API). Формат чата OpenAI стал общим стандартом: многие провайдеры и инструменты принимают такое же тело запроса и возвращают такой же ответ. Такой API называют OpenAI-совместимым.

На практике у любого совместимого провайдера одинаковы три вещи:

  • Запрос: JSON с полем model и списком messages, где у каждого сообщения есть role (system, user или assistant) и content.
  • Путь запроса: /chat/completions, который добавляется после базового адреса.
  • Ответ: JSON, где сгенерированный текст лежит в choices[0].message.content.

Благодаря общему формату официальные SDK и многие приложения работают с любым совместимым провайдером. Им нужно знать только, куда отправлять запрос.

Что такое base_url?#

base_url — адрес, с которого начинается каждый запрос. SDK собирает полный адрес, добавляя к нему путь вызова.

Часть Пример
base_url https://api.cheaptokens.dev/v1
Путь, который добавляет SDK /chat/completions
Полный адрес запроса https://api.cheaptokens.dev/v1/chat/completions

Поэтому, если задать другой base_url, тот же код отправит такой же запрос на другой сервер. Базовый адрес CheapTokens — https://api.cheaptokens.dev/v1. Его API совместим с OpenAI Chat Completions и Anthropic Messages, а один предоплаченный баланс действует для всех моделей.

Три значения, которые нужно сменить#

Значение Что это Где взять
base_url Адрес API https://api.cheaptokens.dev/v1
API-ключ Ваш секретный пароль для API Ваш аккаунт CheapTokens. См. что такое API-ключ и как его хранить
id модели Точное имя модели в поле model Документация CheapTokens

На id модели стоит обратить внимание. У разных провайдеров одна и та же модель называется по-разному, поэтому id из другого сервиса здесь не подойдёт. Берите id из документации CheapTokens. Сейчас доступны:

Модель id модели Контекст Максимум в ответе
GLM-5.3-Flash zai-org/GLM-5.3-Flash 390K 8 192 токена
DeepSeek-V4-Flash deepseek-ai/DeepSeek-V4-Flash-0731 380K 32 768 токенов
MiniMax-M2.7 MiniMaxAI/MiniMax-M2.7 180K 8 192 токена

DeepSeek-V4-Flash отвечает до 32 768 токенов за раз и имеет контекст 380K; у GLM-5.3-Flash контекст 390K; у MiniMax-M2.7 — 180K. Все три списывают деньги с одного баланса, поэтому переключение между ними — это смена одного id модели.

Первый запрос на Python#

Установите пакет openai и сохраните ключ в переменной окружения, а не в коде:

bash
pip install openai
export CHEAPTOKENS_API_KEY="YOUR_CHEAPTOKENS_KEY"

Теперь код. От стандартного примера OpenAI он отличается только аргументом base_url, ключом и id модели:

python
import os
from openai import OpenAI

client = OpenAI(
    base_url="https://api.cheaptokens.dev/v1",   # 1. куда идут запросы
    api_key=os.environ["CHEAPTOKENS_API_KEY"],   # 2. ваш ключ CheapTokens
)

response = client.chat.completions.create(
    model="MiniMaxAI/MiniMax-M2.7",                # 3. id модели из документации
    messages=[
        {"role": "system", "content": "Отвечай кратко."},
        {"role": "user", "content": "Объясни base_url одним предложением."},
    ],
)

print(response.choices[0].message.content)

Ключ в примере — заглушка: замените YOUR_CHEAPTOKENS_KEY своим ключом и никогда не коммитьте настоящий ключ в репозиторий.

Если готовое приложение читает настройки из файла или переменных окружения, код править не нужно. Найдите поля «base URL», «API base» или «endpoint» и впишите те же три значения.

Тот же запрос через curl#

curl показывает, что SDK делает «под капотом»: базовый адрес плюс путь, ключ в заголовке Authorization и JSON в теле.

bash
curl https://api.cheaptokens.dev/v1/chat/completions \
  -H "Authorization: Bearer $CHEAPTOKENS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "MiniMaxAI/MiniMax-M2.7",
    "messages": [
      {"role": "user", "content": "Объясни base_url одним предложением."}
    ]
  }'

Что вы должны увидеть#

Если всё настроено верно, скрипт на Python напечатает короткий текстовый ответ, а curl — JSON-объект. Найдите список choices: текст ответа лежит в choices[0].message.content. Если вы это видите, первый запрос в CheapTokens сработал, можно переходить к своему приложению.

Сколько это стоит?#

Оплата идёт за токены, отдельно за вход и выход (см. входные и выходные токены). Например, MiniMax-M2.7 сейчас стоит $0.05 за 1M входных токенов и $0.15 за 1M выходных. Таблица ниже всегда показывает актуальные цены всех моделей, без надбавок за часы пик.

Модель Контекст Вход $/1M Выход $/1M OpenRouter вход OpenRouter выход
GLM-5.3-Flash reasoning 390K $0.02 $0.04 $0.0413 $0.0758
DeepSeek-V4-Flash 380K $0.015 $0.10 $0.0475 $0.1568
MiniMax-M2.7 180K $0.05 $0.15 $0.30 $1.20

Цены в USD за 1 млн токенов. Данные OpenRouter приведены для сравнения и могут меняться.

Цены на все модели есть и на странице тарифов CheapTokens.

Если не работает#

  • Ошибка аутентификации (обычно 401): ключ не задан, с опечаткой или с лишними пробелами. Проверьте, что переменная окружения задана в том же терминале, где запускаете скрипт.
  • «Не найдено» (обычно 404): проверьте base_url. Он должен заканчиваться на /v1, а /chat/completions при работе через SDK добавлять не нужно — иначе путь удвоится.
  • Неизвестная модель: скопируйте id модели точно из таблицы выше или из документации, с заглавными буквами и частью до слэша.
  • Нет соединения или таймаут: см. частые ошибки подключения и как их исправить.
  • Ответ обрывается на полуслове: достигнут лимит max_tokens; подробности — в статье почему ответ ИИ обрывается.

Что дальше#

Когда первый запрос заработал, можно добавить потоковый вывод на Python, подставить те же три значения в редактор или агента или прочитать, как читать названия моделей ИИ. Подробности настройки и полный список моделей — в документации CheapTokens.