Введение
OpenAI-совместимый чат для Grok 4.5 — модели для кода в линейке Grok от xAI. Один ход несёт части text и image_url, усилие рассуждения поднимается до xhigh, а один ответ может дойти до 450 000 токенов.
xAI выпускает Grok 4.5 для агентной разработки, инженерных и рабочих задач, обучила её на дополнительных данных по естественным наукам, технике и математике и отдаёт также под именами grok-4.5-latest и grok-build-latest. Здесь это один эндпоинт на /v1/chat/completions, который читает до 500 000 токенов не более чем в 256 упорядоченных сообщениях и возвращает до 450 000 одним ответом. Ввод, кэшированный ввод и вывод считаются отдельно друг от друга — и именно за это платит агентный цикл, снова и снова отправляющий длинный префикс.
Ключевые возможности и особенности
У префикса, который вы отправляете заново, свой счётчик
Агентный цикл на каждом шаге шлёт тот же системный промпт, те же описания инструментов и ту же карту файлов; новым бывает только хвост разговора. Ввод, который отдаётся из кэша, приходит отдельной строкой в блоке usage и считается по своей более дешёвой ставке. Включать ничего не надо. Оставлять первые сообщения неизменными между шагами — это и есть вся техника, а сколько префикса действительно попало в кэш, скажет сам ответ, вместо того чтобы оставить это вашим предположением.
Текст и изображения на входе, текст на выходе
Содержимое может быть простой строкой или массивом частей, и эта модель объявляет две из них: {"type": "text", "text": "..."} и {"type": "image_url", "image_url": {"url": "...", "detail": "auto|low|high"}}. Скриншот и вопрос о нём приходят в одном ходе, а содержимое изображений считается внутри окна на 500 000 токенов, а не сверх него. Частей file или PDF на этом эндпоинте нет, поэтому спецификация, лог или диф должны приходить вставленным текстом. Усилие рассуждения принимает low, medium, high или xhigh и стартует на high; оно оплачивается выходными токенами, а значит расходует и лимит ответа, и счёт.
Параметры запроса
| Параметр | Обязательно | Описание |
|---|---|---|
messages | Да | Не более 256 ходов. Содержимое может смешивать части text и |
reasoning_effort | Нет | low, medium, high или xhigh. По умолчанию high; усилие оплачивается выходными токенами, поэтому xhigh поднимает счёт даже при коротком ответе. |
max_tokens | Нет | Ограничивает видимый ответ 450 000 токенов; значение по умолчанию 4 096 молча обрезает длинный ответ. |
temperature | Нет | От 0 до 2, по умолчанию 0,7. Ставьте 0, когда сравниваете два патча или два прогона одной задачи. |
top_p | Нет | От 0,01 до 1. Меняйте либо его, либо temperature, но не оба сразу. |
tools | Нет | До 128 описаний функций на запрос. Если их порядок не меняется между шагами, префикс легче остаётся кэшируемым. Не более 128 элементов |
parallel_tool_calls | Нет | true или false, по умолчанию true: модель может запросить несколько вызовов инструментов за один ход. По умолчанию: |
tool_choice | Нет | auto, none, required или объект, называющий функцию для вызова. |
response_format | Нет | Просите объект JSON, когда ответ разбирает следующий шаг агента, а не читает человек. |
Стоимость
Ввод $2 / Вывод $6 за 1 млн токенов; Запросы от 200K токенов: Ввод $4 / Вывод $12
Общий ввод включает кэшированные токены. От 200 000 входных токенов ставки длинного контекста применяются ко всему вводу, кэшированному вводу и выводу запроса; ниже этого порога действуют стандартные ставки. Кэшированный ввод считается отдельно от свежего и стоит дешевле него. Вывод включает токены рассуждения, поэтому более высокое усилие рассуждения обходится дороже даже при той же длине видимого ответа. Проверьте бюджет перед отправкой. Первоначальное удержание средств рассчитывается без учёта экономии на кэше, а при итоговом расчёте разница возвращается по фактическому использованию.
Сценарии использования
Удержать весь цикл в контексте
Агент для кода на каждом шаге заново отправляет свои инструкции, описания инструментов и карту файлов и добавляет по несколько сотен новых токенов. Всё это помещается в окно на 500 000 токенов, повторяющаяся часть считается как кэшированный ввод, а на ставку длинного контекста запрос переходит только на 200 000 суммарных токенов ввода и кэшированного ввода — о чём оценка перед отправкой скажет раньше, чем вы заплатите.
Рефакторинг с модулем, тестами и падением в одном ходе
Вставьте вместе модуль, файл тестов и упавший вывод, а затем попросите патч вместе с обоснованием. Поднимайте reasoning_effort до xhigh, когда изменение нужно продумать до того, как оно написано: оно тратит больше выходных токенов до первой строки кода, и это оправданная цена там, где вы будете читать диф построчно.
Дать прочитать скриншот и стек вызовов вместе
Приложите упавший дашборд частью image_url с detail high, вставьте стек вызовов текстом в то же сообщение и попросите причины по убыванию вероятности. Картинка и лог приходят одним ходом, поэтому модель читает саму панель, а не ваше её описание.
Получить документ о миграции одним ответом
450 000 выходных токенов хватает на полный план миграции, переписанный модуль или переведённое руководство одним ответом вместо цикла по главам. Поднимайте max_tokens явно: значение по умолчанию 4 096 обрезает длинную генерацию, не выдавая ошибки, а обрезанный ответ — это сбой, который больше всего похож на законченный результат.
Руководство по промптам и практические советы
Выбирайте уровень усилия под задачу, а не под проект
По умолчанию reasoning_effort равен high, так что, пропуская поле, вы уже оплачиваете тщательную работу и выходные токены, которые к ней прилагаются. Решайте на каждый вызов: xhigh для миграции или доказательства, high для обычного разбора, low для механического хода вроде классификации строки лога. Поскольку усилие оплачивается выходными токенами, короткий ответ на xhigh может обойтись дороже длинного на low.
Просите сам артефакт и шлите тело, которое можно вставить
Зафиксируйте форму вывода в системном сообщении, а ход пользователя пусть несёт материал — файл, лог, скриншот, — чтобы модель не угадывала формат, пока разбирается с задачей.
curl https://api.spicyapi.ai/v1/chat/completions \
-H "Authorization: Bearer $SPICY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "xai/grok-4.5",
"messages": [
{"role": "system", "content": "Return the patched file in full. No diffs, no commentary, no omitted regions."},
{"role": "user", "content": [
{"type": "text", "text": "Both panels are the same service before and after the deploy. Which one regressed, and what in the diff explains it?"},
{"type": "image_url", "image_url": {"url": "https://cdn.spicyapi.ai/models/examples/inputs/c681580c3c6a0b63.jpeg", "detail": "high"}}
]}
],
"reasoning_effort": "high",
"max_tokens": 32000
}'
Сначала прочитайте блок usage, потом крутите ручки
Ответ отдельно сообщает токены ввода, кэшированного ввода и вывода, и это единственный честный ответ на вопрос, попал ли ваш префикс в кэш. Настраивайте по нему, а не по форме разговора: если доля кэша остаётся нулевой от шага к шагу, значит что-то меняется в первых сообщениях — отметка времени в системном промпте, переставленный список инструментов, — и перенос этого куска в конец запроса обычно и есть всё исправление. Длинные ответы читайте потоком через stream: true: события chat.completion.chunk идут до data: [DONE].
Быстрый старт API
curl --fail-with-body -sN https://api.spicyapi.ai/v1/chat/completions \
-H "Authorization: Bearer $SPICY_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"model": "xai/grok-4.5/chat",
"messages": [
{
"role": "user",
"content": "Summarise the following release notes into three bullet points."
}
],
"stream": true
}' \
| jq --unbuffered -Rrj 'select(startswith("data: ")) | .[6:] | select(. != "[DONE]") | fromjson | if .error then "\n[error] \(.error.message)\n" else (.choices[0].delta.content? // empty) end'
Аутентификация, полная схема, опрос статуса и обработка ошибок описаны в справочнике API.










