Текстовая модель · xai

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.

Технические характеристики

МодальностьТекстовая модель
Провайдерxai
Контекст500 000 токенов
СтатусАктивна
ID для запросов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 млн кэшированных входных токенов · < 200k166 ₽
за 1 млн кэшированных входных токенов · >= 200k333 ₽
за 1 млн входных текстовых токенов · < 200k665 ₽
за 1 млн входных текстовых токенов · >= 200k1 330 ₽
за 1 млн выходных текстовых токенов · < 200k1 995 ₽
за 1 млн выходных текстовых токенов · >= 200k3 990 ₽
web search · per call1.66 ₽
code interpreter · per call1.66 ₽

Цены указаны в рублях. Списываются с баланса проекта при каждом успешном запросе.

Поддерживаемые параметры

Параметры передаются вендору как есть (pure proxy) — мы не валидируем их у себя на стороне. Если вендор не примет — вернётся его ошибка.

ПараметрТипДиапазон / valuesDefaultОписание
messagesarray Вход Chat Completions; обязательное поле только для этого endpoint.
input Вход Responses API: строка либо массив элементов input.
max_completion_tokensintegermin: 1 Необязательный лимит ответа; в Responses API — max_output_tokens.
reasoning_effortenumlow, medium, high, xhighhigh Глубина рассуждения в Chat Completions.
reasoning.effortenumlow, medium, high, xhighhigh Глубина рассуждения в Responses API.
response_formatobject Структурированный формат ответа в Chat Completions.
text.formatobject Структурированный формат ответа в Responses API.
toolsarray Вызов функций и серверных инструментов в Responses API.
tool_choice Строка auto, none, required или объект выбора конкретной функции.
parallel_tool_callsboolean Параллельные вызовы инструментов.
streambooleanfalse Потоковый ответ SSE.
prompt_cache_keystring Ключ маршрутизации кэша для 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_... на ваш ключ из кабинета.