к тексту
api

документация api

генерация текста

messages, роли, параметры, finish_reason и usage на /v1/chat/completions.

последняя редакция: 18 сентября 2026

генерация текста — основная задача языковых моделей: на вход подаётся диалог, на выходе получается следующее сообщение. через эндпоинт /v1/chat/completions доступна любая текстовая модель каталога, независимо от того, кто её создал.

сообщения и роли

диалог передаётся списком messages. у каждого сообщения есть роль и содержимое:

ролькто говоритзачем нужна
systemинструкция для моделизадаёт правила: тон, язык, формат ответа, ограничения
userчеловеквопрос или задание
assistantмодельеё предыдущие ответы
toolрезультат функцииответ приложения на tool_calls

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

модель не помнит переписку

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

{
    "model": "openai/gpt-5-mini",
    "messages": [
        {"role": "system", "content": "Отвечай одним предложением."},
        {"role": "user", "content": "Назови столицу Австралии."},
        {"role": "assistant", "content": "Столица Австралии — Канберра."},
        {"role": "user", "content": "А сколько там жителей?"}
    ]
}

без третьего сообщения модель не поняла бы, о каком городе идёт речь в четвёртом.

длина истории ограничена размером контекста модели. когда переписка перестаёт помещаться, старые сообщения обычно отбрасывают или заменяют кратким пересказом.

параметры

кроме model и messages запрос принимает параметры, управляющие ответом:

параметрчто делает
temperatureразброс ответов. ближе к 0 — предсказуемо и однообразно, выше — свободнее и неожиданнее
top_pальтернативный способ управления разбросом. меняют либо его, либо temperature, но не оба сразу
max_tokens / max_completion_tokensверхний предел длины ответа в токенах
stopстрока или список строк, на которых генерация обрывается
streamесли true, ответ приходит по частям. см. стриминг

набор поддерживаемых параметров у моделей разный. незнакомый параметр конечный сервис либо игнорирует, либо отвечает ошибкой 400 — поведение задаёт он, а не airakurs.

пример запроса с системным сообщением и параметрами:

curl "https://api.airakurs.ru/v1/chat/completions" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer <КЛЮЧ>" \
    -d '{
        "model": "openai/gpt-5-mini",
        "messages": [
            {"role": "system", "content": "Ты редактор. Отвечай кратко."},
            {"role": "user", "content": "Сократи: длинное предложение о погоде."}
        ],
        "temperature": 0.3,
        "max_tokens": 200
    }'

ответ

текст лежит в choices[0].message.content. рядом приходят finish_reason и usage:

{
    "choices": [
        {
            "index": 0,
            "message": {"role": "assistant", "content": "Завтра тепло."},
            "finish_reason": "stop"
        }
    ],
    "usage": {
        "prompt_tokens": 24,
        "completion_tokens": 3,
        "total_tokens": 27
    }
}

finish_reason объясняет, почему модель остановилась:

значениечто произошло
stopответ завершён полностью
lengthупёрлись в max_tokens или в предел модели, ответ оборван
tool_callsмодель просит вызвать функцию
content_filterответ заблокирован фильтром конечного сервиса

usage показывает расход токенов: prompt_tokens — то, что ушло на вход вместе со всей историей, completion_tokens — сгенерированный ответ. по этим числам считается стоимость запроса.

что дальше

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

помнит ли модель предыдущие сообщения?

нет. каждый запрос обрабатывается отдельно, состояние между обращениями не сохраняется. чтобы модель видела контекст разговора, всю историю нужно передавать в поле messages при каждом запросе.

почему ответ обрывается на полуслове?

скорее всего, сработало ограничение длины: в поле finish_reason будет значение length. помогает увеличить max_tokens или попросить модель отвечать короче.

что менять — temperature или top_p?

что-то одно. оба параметра управляют разбросом ответов, и если задать их вместе, результат становится непредсказуемым. обычно достаточно temperature.

одинаково ли работают модели разных вендоров на этом эндпоинте?

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

поддержка airakurs.official@gmail.com
© airakurs

20 статей. поддержка airakurs.official@gmail.com