Документация

Текст и чат: как использовать

Гайд по /v1/chat/completions — лимиты токенов, стриминг через SSE и usage-чанк, tools и response_format, картинки на входе (vision).

Обновлено 13 июля 2026 г.

Текстовые модели живут за POST /v1/chat/completions — контракт тот же, что у OpenAI. В model подставляется id из /v1/models (например, openai/gpt-5-mini или anthropic/claude-sonnet-4.6), в messages — история диалога. Работают стриминг, tools, response_format и картинки на входе. Деньги списываются после успешного ответа по фактическому usage, при ошибке провайдера — не списываются.

Как отправить запрос?

Минимум — model и messages. Роли сообщений: system, user, assistant, tool, developer. Опциональные параметры (temperature, top_p, stop, n, seed и другие) прокидываются в модель как есть — полный список полей в референсе chat/completions.

Ответ — стандартный chat.completion: текст в choices[0].message.content, расход токенов в usage.

max_tokens или max_completion_tokens?

Оба поля принимаются, шлюз сам нормализует их под семейство модели:

  • openai/* — в модель уходит только max_completion_tokens (GPT-5 и o-серия отвергают max_tokens); если вы прислали max_tokens, мы его переименуем;
  • остальные семейства (anthropic/*, google/*, deepseek/*, yandex/*) — в модель уходит только max_tokens, обратное переименование тоже автоматическое.

Так что берите любое поле — старый код с max_tokens продолжит работать на всех моделях. Одно исключение: оба поля сразу с разными значениями — это 400 invalid_request_error с указанием param.

Как стримить ответ?

stream: true — и ответ пойдёт чанками по SSE (data: {...}, в конце data: [DONE]).

Поведение usage в стриме — как у OpenAI:

  • прислали stream_options: { "include_usage": true } — после последнего контент-чанка придёт ещё один, с пустым choices и заполненным usage;
  • не прислали — usage-чанка не будет, [DONE] приходит сразу после последнего контент-чанка.

Биллинг от этой опции не зависит: расход считается по фактическому usage провайдера в обоих случаях.

Работают ли tools и response_format?

Да, поля tools, tool_choice и response_format — полноценная часть схемы и передаются модели без изменений; tool_calls в ответе тоже проходят как есть. Важная честная оговорка: поддержка этих возможностей зависит от конкретной модели, шлюз её не гарантирует и не эмулирует. Если модель не умеет structured output или function calling, её ошибку вы получите в исходном виде.

То же относится к n, seed, logprobs, frequency_penalty, presence_penalty — прозрачный passthrough.

Как отправить картинку (vision)?

Через content parts с image_url — обычный OpenAI-формат. Подойдёт и внешний URL, и data-URL с base64. Модель должна уметь vision (например, openai/gpt-5, anthropic/claude-sonnet-4.6, google/gemini-2.5-flash — смотрите пометки в каталоге моделей); text-only модель ответит 400 unsupported_capability.

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

Тариф у каждой модели свой, единица — токены. Актуальные цены в рублях — на странице цен для разработчиков; списание происходит после успешного ответа по usage. Попробовать модели без кода можно в чате на сайте — тот же каталог, тот же баланс.