Grok 4.7
grok-4.7
Grok 4.7 — текстовая модель от xai, доступная через единый Ranvik API. Контекстное окно — 500k токенов. Поддерживаемые возможности: code_execution, function_calling, prompt_caching, reasoning, streaming, structured_output, vision, web_search.
от 665 ₽ / 1 млн входных токенов
Grok 4.7 — текстовая модель xAI для кода, агентных сценариев и работы со знаниями. Контекст — до 500 000 токенов. Принимает текст и изображения, возвращает текст. Поддерживает потоковый ответ, вызов функций и серверные инструменты через Responses API.
Технические характеристики
grok-4.7Возможности
Prompt caching— Повторно используемые префиксы (системный промпт, документы) кэшируются — цена в 5-10× ниже.
Зачем
Если ты отправляешь один и тот же системный промпт + документы на каждом запросе — модель повторно тратит compute на их обработку. Prompt caching сохраняет эти токены и заряжает 10× меньше при попадании.
Базовая формула экономии:
- Cache write — обычно 1.25× цены input (5-минутный TTL) или 2× (1-часовой).
- Cache hit — 0.1× цены input.
- Окупается с 2-3 повторений того же префикса в течение TTL.
Что кэшируется
Префикс должен быть идентичным byte-в-byte: системный промпт, статические документы, фиксированные few-shot примеры. Динамическая часть (юзер-промпт, переменные) идёт ПОСЛЕ кэшированной.
Когда использовать
- RAG: документы в context каждого запроса (кэшируй документы).
- Агенты: длинная инструкция системы (кэшируй её).
- Few-shot prompting: фиксированные примеры (кэшируй блок примеров).
Особенности у xAI Grok
Автоматический, как у OpenAI. Префикс ≥256 токенов кэшируется на ~5 минут.
usage.prompt_tokens_details.cached_tokens в ответе.
Streaming (SSE)— Получение ответа по мере генерации — токен за токеном через Server-Sent Events.
Как работает
Передай stream: true в теле запроса — сервер вернёт SSE-поток с заголовком
content-type: text/event-stream. Каждый чанк — строка вида data: {...}\n\n.
Конец потока — data: [DONE]\n\n.
curl -N https://api.ranvik.ru/v1/chat/completions \
-H "Authorization: Bearer rk_live_..." \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5",
"messages": [{"role": "user", "content": "Привет"}],
"stream": true,
"stream_options": {"include_usage": true}
}'
Каждый чанк содержит choices[0].delta — частичные данные. Последний чанк перед
[DONE] (если включить stream_options.include_usage: true) содержит usage
с реальным числом токенов — используй для биллинг-учёта на клиенте.
Когда использовать
- Чат-интерфейсы, где важна перцептивная скорость отклика.
- Длинные ответы (> 1000 токенов) — пользователь видит прогресс.
- Streaming tool-calls —
delta.tool_calls[i].function.argumentsприходят инкрементально.
Когда НЕ использовать
- Backend-to-backend интеграции, где нужен только финальный JSON — добавляет парсинг SSE без выгод.
- Когда обязательно знать стоимость до отправки в БД — без
include_usageзатраты неизвестны.
Vision (анализ изображений)— Картинки на вход вместе с текстом — OCR, распознавание объектов, описание сцен, анализ графиков.
Как передать изображение
Через массив content в сообщении вместо строки. Поддерживается URL и base64
(data URI).
{
"model": "gpt-5",
"messages": [{
"role": "user",
"content": [
{"type": "text", "text": "Что на этой схеме?"},
{"type": "image_url", "image_url": {"url": "https://.../diagram.png"}}
]
}]
}
Для base64: "url": "data:image/png;base64,iVBOR...". Размер ограничен ~20MB.
Оплата изображений
Картинка считается как input-токены — точное число зависит от размера и
detail. Грубо: 512×512 ≈ 250 токенов, 2048×2048 ≈ 1500. Минимизируй размер
если нужно много кадров.
Что НЕ умеют vision-модели
- Точные измерения (расстояния, размеры в пикселях).
- Распознавание текста на сложных шрифтах при низком DPI — лучше OCR-модель.
- Деанонимизация лиц / людей — модели отказываются.
- Code Execution
- Вызов функций
- Кэширование промпта
- Рассуждения
- Потоковый ответ
- Structured Output
- Анализ изображений
- Поиск в интернете
Цены
| Единица | Цена |
|---|---|
| за 1 млн кэшированных входных токенов · < 200k | 166 ₽ |
| за 1 млн кэшированных входных токенов · >= 200k | 333 ₽ |
| за 1 млн входных текстовых токенов · < 200k | 665 ₽ |
| за 1 млн входных текстовых токенов · >= 200k | 1 330 ₽ |
| за 1 млн выходных текстовых токенов · < 200k | 1 995 ₽ |
| за 1 млн выходных текстовых токенов · >= 200k | 3 990 ₽ |
| web search · per call | 1.66 ₽ |
| code interpreter · per call | 1.66 ₽ |
Цены указаны в рублях. Списываются с баланса проекта при каждом успешном запросе.
Поддерживаемые параметры
Параметры передаются вендору как есть (pure proxy) — мы не валидируем их у себя на стороне. Если вендор не примет — вернётся его ошибка.
| Параметр | Тип | Диапазон / values | Default | Описание |
|---|---|---|---|---|
messages | array | — | — | Вход Chat Completions; обязательное поле только для этого endpoint. |
input | — | — | Вход Responses API: строка либо массив элементов input. | |
max_completion_tokens | integer | min: 1 | — | Необязательный лимит ответа; в Responses API — max_output_tokens. |
reasoning_effort | enum | low, medium, high, xhigh | high | Глубина рассуждения в Chat Completions. |
reasoning.effort | enum | low, medium, high, xhigh | high | Глубина рассуждения в Responses API. |
response_format | object | — | — | Структурированный формат ответа в Chat Completions. |
text.format | object | — | — | Структурированный формат ответа в Responses API. |
tools | array | — | — | Вызов функций и серверных инструментов в Responses API. |
tool_choice | — | — | Строка auto, none, required или объект выбора конкретной функции. | |
parallel_tool_calls | boolean | — | — | Параллельные вызовы инструментов. |
stream | boolean | — | false | Потоковый ответ SSE. |
prompt_cache_key | string | — | — | Ключ маршрутизации кэша для Responses API. |
Пример запроса
from openai import OpenAI
client = OpenAI(api_key="rk_live_...", base_url="https://api.ranvik.ru/v1")
resp = client.chat.completions.create(
model="grok-4.7",
messages=[{"role": "user", "content": "Привет!"}],
)
print(resp.choices[0].message.content)
# ── С веб-поиском ──
resp = client.responses.create(
model="grok-4.7",
input="Что нового в AI сегодня?",
tools=[{"type": "web_search"}],
)
print(resp.output_text)
# Генерация файла: client.responses.create(model="grok-4.7", input="...", tools=[{"type":"code_interpreter"}]) Замените rk_live_... на ваш ключ из кабинета.