Текстовые модели
Один запрос, ответ приходит сразу — задачу ставить и опрашивать не нужно, в отличие от изображений и видео. Формат запроса и ответа как у OpenAI Chat Completions: готовый клиент OpenAI подключается заменой адреса, ключа и имени модели. Проверенных живым вызовом моделей сейчас 10, они разложены по семействам ниже.
Семейства
Как вызывать
Поля запроса
Все три лежат в корне тела запроса — вложенного input у текста нет.
Остальные поля формата OpenAI — temperature,
top_p, stop,
seed, response_format,
reasoning_effort и прочие — шлюз передаёт поставщику, проверив
значение: temperature от 0 до 2 (у Claude до 1),
top_p от 0 до 1, штрафы от −2 до 2,
reasoning_effort — minimal, low, medium или high, стоп-слов не
больше четырёх. Негодное значение возвращается отказом 400 с именем поля и не стоит ничего:
поставщик на такое отвечает своей пятисоткой, из которой не видно, что дело в значении. Набор у каждого
семейства свой, потому что форматы вызова разные: что именно принимает выбранная модель, названо
на её странице.
stream работает: ответ приходит событиями, как это принято у Chat
Completions, и заканчивается строкой data: [DONE]. У поставщика ответ
при этом запрашивается целиком — иначе неоткуда взять объём токенов, по которому считается цена
вызова, — поэтому весь текст приходит одним событием, а не словом за словом. Расход и объём
стоят на последнем событии, рядом с признаком конца.
tools передаётся всем моделям каталога.
n и
best_of не передаются: несколько вариантов ответа умножают расход, а
перед вызовом проверено, что денег хватает на один.
| Поле | Тип | Обяз. | Допустимые значения |
|---|---|---|---|
| model | текст | обязательное | gpt/5-6-luna либо другое имя из каталога текстовых моделей |
| messages | массив | обязательное |
Непустой список сообщений с ролями system,
user, assistant. Пустой список
или не массив — отказ 400
|
| max_tokens | целое | опц. |
От 1 до 128000; вне границ — отказ 400.
Синоним — max_completion_tokens
· без него шлюз подставит 1024
|
Вызов
Запрос показан целиком, с именем этой модели: подставить остаётся только свой ключ. Ответ приходит сразу — задачу ставить и опрашивать не нужно.
curl https://api.gen202.com/v1/chat/completions \
-H "Authorization: Bearer sk-ваш-ключ" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt/5-6-luna",
"messages": [{"role": "user", "content": "Привет"}],
"max_tokens": 200
}'
from openai import OpenAI
client = OpenAI(api_key="sk-ваш-ключ", base_url="https://api.gen202.com/v1")
answer = client.chat.completions.create(
model="gpt/5-6-luna",
messages=[{"role": "user", "content": "Привет"}],
max_tokens=200,
)
print(answer.choices[0].message.content)
print(answer.usage) # по нему выставлен счёт
Ответ
Форма ответа — OpenAI Chat Completions. Многоточия стоят там, где значение зависит от самого запроса: текст ответа и три числа расхода. Выдумывать их вместо примера нельзя — счёт выставляется по этим самым числам.
{
"choices": [
{
"index": 0,
"message": { "role": "assistant", "content": "…" },
"finish_reason": "stop"
}
],
"usage": { "prompt_tokens": …, "completion_tokens": …, "total_tokens": … }
}
Текст лежит в choices[0].message.content, причина остановки — в
finish_reason (stop или
length). По usage выставляется счёт, так
что сверить списание можно прямо из ответа. Служебных полей ответа OpenAI
(id, created,
object) шлюз не добавляет.
Что учесть
-
Счёт по токенам. Вход и выход считаются раздельно, итог берётся из
usage, а не из потолка ответа. Ставки — в каталоге. -
Системное сообщение. Передаётся обычной ролью
systemв списке сообщений — шлюз сам переложит его в тот вид, который ждёт поставщик модели. -
Потолок ответа соблюдает не всякая модель. В замере на запрошенные 16 токенов пришёл
ответ в 1752 токена. Поэтому счёт считается по факту из
usage, а не по потолку. -
Деньги списываются после ответа, по факту. Заранее ничего не удерживается: перед
вызовом проверяется только то, что на балансе есть деньги. Сколько списано, приходит в самом
ответе полем
credits_consumed. -
Поток событий есть на всех трёх входах. Поле
streamменяет форму ответа на события, как у поставщика модели. Сам ответ шлюз получает целиком: цена вызова считается из объёма токенов, а он известен только у полного ответа. Поэтому текст приходит сразу, а не слово за словом. -
Модель, недоступная у поставщика. Такой вызов отвечает кодом
503и не тарифицируется. Чаще прочих так отвечает семейство Claude: маршрут поставщика у него нестабилен.
Другие форматы вызова
Один и тот же каталог доступен через три входа. Формат выбирается тем, что уже умеет ваш клиент, — модель в любом из них называется одинаково.
| Адрес | Формат | Кому | Поток | Инструменты |
|---|---|---|---|---|
| /v1/chat/completions | OpenAI Chat Completions | библиотеке OpenAI, n8n, большинству готовых клиентов | есть | есть |
| /v1/messages | Anthropic Messages | Claude Code и всему, написанному под Anthropic | есть | есть |
| /v1/responses | OpenAI Responses | Codex и новым клиентам OpenAI | есть | есть |
| GET /v1/models | OpenAI | клиентам, которые сначала спрашивают список моделей | — | — |
Инструменты (function calling) работают на любом входе с любой моделью каталога.
Описание функций, вызов функции в ответе и результат её работы в следующем
запросе переводятся вместе с разговором: у каждого формата эти три вещи называются
по-своему, а смысл один. Клиенту при этом отвечают его же формой — клиент Anthropic получает
блок tool_use, клиент OpenAI —
tool_calls, клиент Responses — элемент
function_call.
Картинку принимают все восемь моделей на любом входе — частью содержимого сообщения, ссылкой на файл. Документ PDF прикладывается так же, ссылкой: байтами внутри запроса он до модели не доходит. Разбирают документ модели Claude. Положить файл и получить ссылку можно у нас, в разделе о загрузке файлов.
Claude Code подключается переменными окружения:
ANTHROPIC_BASE_URL=https://api.gen202.com и
ANTHROPIC_AUTH_TOKEN=sk-ваш-ключ. Клиенты OpenAI — базовым адресом
https://api.gen202.com/v1 и тем же ключом. Anthropic про сторонние шлюзы
говорит прямо: работает любой, кто выставляет поддерживаемый формат, но сами они такие шлюзы
не одобряют и не проверяют.