Генерация ответов в чате
Генерация ответов в чате, совместимая с OpenAI: потоковая передача, изображения, вызов инструментов и управление рассуждениями.
POST /v1/chat/completions
curl https://api.unquant.io/v1/chat/completions \
-H "Authorization: Bearer $UNQUANT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"glm-5.3-flash",
"messages":[{"role":"user","content":"Hello!"}]}'Поля запроса
modelстрокаОбязательноеglm-5.3-flash или qwen-3.8-flash-next.
messagesмассивОбязательноеРоли: system, user, assistant и tool. Содержимое — строка или массив частей типов text и image_url.
streamлогическое значениеПередавать ответ потоком событий от сервера (SSE).
stream_optionsобъект{"include_usage": true} добавляет заключительный фрагмент с количеством токенов.
max_tokensцелое числоВерхний предел длины ответа.
max_completion_tokensцелое числоТо же, что и max_tokens.
temperatureчислоСтепень случайности при выборе токенов.
top_pчислоВыбор из наименьшего набора токенов с заданной суммарной вероятностью.
top_kцелое числоВыбор из k наиболее вероятных токенов.
min_pчислоМинимальная относительная вероятность токена.
seedцелое числоНачальное значение генератора случайных чисел для воспроизводимого выбора токенов.
stopстрока или массивПоследовательности, при появлении которых генерация останавливается.
frequency_penaltyчислоШтраф за токены в зависимости от частоты их появления.
presence_penaltyчислоШтраф за токены, которые уже встречались.
repetition_penaltyчислоМультипликативный штраф за повторы.
toolsмассивФункции, которые модель может вызывать, в формате OpenAI.
tool_choiceстрока или объектauto, none, required или функция, указанная по имени.
parallel_tool_callsлогическое значениеРазрешить несколько вызовов инструментов за один ход.
response_formatобъектВывод в формате JSON.
logprobsлогическое значениеВозвращать логарифмы вероятностей токенов.
top_logprobsцелое числоКоличество альтернатив, возвращаемых для каждого токена.
nцелое числоДолжно быть равно 1: один вариант ответа на запрос.
reasoning_effortстрокаДля обеих моделей: none, low или high; GLM-5.3-Flash также поддерживает max.
chat_template_kwargsобъектПереключатели шаблона, например {"enable_thinking": false}.
Остальные поля игнорируются.
Ответ
response.choices[0].message.contentДанные об использовании возвращаются для вашего мониторинга; плата за использованные токены не взимается.
Потоковая передача
При "stream": true ответ поступает в виде событий от сервера (SSE), содержащих фрагменты в формате OpenAI, и завершается сообщением data: [DONE]. Читайте текст из choices[0].delta.content.
Изображения
Обе модели принимают изображения в частях типа image_url, содержащих data URL с данными в base64 (data:image/png;base64,..., JPEG или WebP). Изображения по внешним URL не загружаются: такой запрос возвращает ошибку 400.
{"role": "user", "content": [
{"type": "text", "text": "Describe this image."},
{"type": "image_url", "image_url": {"url": "data:image/jpeg;base64,/9j/4AAQ..."}}
]}Вызов инструментов
Передавайте tools так же, как в API OpenAI. Когда модель вызывает инструмент, ответ содержит finish_reason: "tool_calls" и message.tool_calls; выполните инструмент, добавьте сообщение с ролью tool, его результатом и соответствующим tool_call_id, затем повторите вызов API.
Рассуждения
Обе модели рассуждают перед ответом и поддерживают reasoning_effort: none для ответов без рассуждений, low для кратких рассуждений или high для более сложных задач; GLM-5.3-Flash также поддерживает max и по умолчанию использует high. Ход рассуждений возвращается отдельно в reasoning_content и никогда не добавляется в content. Параметры "thinking": {"type": "disabled"} и "chat_template_kwargs": {"enable_thinking": false} также отключают рассуждения.
Одновременные запросы
Ваш тариф определяет, сколько запросов могут выполняться одновременно суммарно по всем вашим ключам. Запрос сверх этого лимита сразу возвращает ошибку 429 и не ставится в очередь; уже выполняющиеся запросы продолжают обрабатываться.