Перейти к основному контенту

Grok 4.6 в Cursor и через API: настройка, код и стоимость

Выберите между встроенным Grok 4.6 в Cursor и прямым API, настройте нужные идентификаторы, запустите пример парсера и сравните стоимость токенов.

Автор
Lydia
Опубликовано
Время чтения
16 мин чтения
Обновлено
Двое разработчиков обсуждают рабочий процесс программирования за рабочим местом у окна с видом на город

Вы хотите, чтобы Grok исправлял код в Cursor, но выбор встроенной модели и ключ, направленный на внешний API, — это разные конфигурации. Используйте встроенный Grok 4.6 в Cursor ради задокументированной интеграции с агентом либо вызывайте SpicyAPI напрямую, когда вашему приложению нужно самому управлять запросами, инструментами и расходом. Чтобы использовать ключ SpicyAPI внутри Cursor, откройте Cursor Settings → Models и проверьте, есть ли переопределение base URL. Значения настройки и запасной вариант ниже помогут выбрать подходящий путь до покупки расхода.

Два маршрута Grok с разными контрактами

В документации Cursor по Grok 4.6 указаны grok-4.6, окно контекста 256k и четыре уровня effort: low, medium, high и xhigh, по умолчанию high. Встроенная интеграция имеет доступ к инструментам агента Cursor.

Страница модели SpicyAPI указывает xai/grok-4.6/chat. Задокументированное имя в OpenAI-совместимом запросе Chat Completions — xai/grok-4.6, он отправляется на https://api.spicyapi.ai/v1/chat/completions. Этот маршрут принимает текстовые и графические части, имеет лимит входа 500,000 токенов и предоставляет собственные параметры запроса. Его текущая схема не принимает файловые части и PDF. Определение инструмента — это входные данные для модели; цикл выполнения должен обеспечить вызывающая сторона.

РешениеВстроенный Grok в CursorПрямой Grok через SpicyAPI
Идентификатор выбора в соответствующем интерфейсеgrok-4.6 в документации Cursorxai/grok-4.6 в запросе Chat Completions; endpoint каталога xai/grok-4.6/chat
Кто строит рабочий процесс кодирования и управляет им?Интегрированный продукт CursorВаше приложение или проверенный совместимый клиент
Окно входа256k токенов500,000 токенов
Правки файлов и тестыCursor управляет инструментами агентаВаша вызывающая сторона выполняет инструменты и применяет правки

Лимит API в 500,000 токенов не увеличивает окно Cursor в 256k. Для исправления кода отправляйте файлы с определением, описание сбоя и тесты, а не весь репозиторий.

Пояснительная схема: три разных маршрута и идентификатора. Название в меню не показывает, какой маршрут и какой счёт использует запрос.
Встроенный Cursor, собственный клиент и прямой API используют разные идентификаторы и пути выполнения.

Сначала попробуйте в Playground

  1. Откройте Grok 4.6 и переключитесь на Playground.
  2. В поле сообщения вставьте вопрос ниже, выберите вариант рассуждения Low и нажмите Run model:

> A delivery-window parser must accept a local time HH:MM from 00:00 through 23:59. The current function returns true for any string matching two digits, a colon and two digits. Explain which inputs it accepts incorrectly, and propose a small correction.

  1. Проверьте, отклоняет ли ответ 24:00 и 12:60. Если да, тот же вопрос готов к запуску через API или из вашего редактора.

Используйте встроенный путь, если задача именно в этом

  1. Откройте выбор модели и явно выберите Grok 4.6, если ваш аккаунт его предлагает. Когда нужна именно эта модель, используйте явный выбор вместо Auto; проверьте его ещё раз в новом чате.
  2. Выберите effort под задачу; задокументированное значение модели по умолчанию — high. Тариф Start, доступный только в Индии, фиксирует Grok на medium без режима Fast.
  3. Откройте одноразовый проект парсера ниже и попросите исправление, ограниченное файлом is-time.mjs.
  4. Проверьте применённый diff и фактический результат тестов. Верное объяснение без применённой правки — это не то же самое, что завершённая задача агента.

Встроенный выбор не требует ни base URL, ни ключа SpicyAPI. Планируя бюджет, учитывайте лимит вашего текущего тарифа и настройку Fast; вводная акция из статьи о запуске закончилась.

Подключите свой ключ или выберите прямой API

Справка Cursor по ключам API описывает Cursor Settings → Models → провайдер → ключ → Save для OpenAI, Anthropic, Google, Azure и AWS Bedrock. Собственный endpoint для Grok 4.6 она не описывает.

  1. Откройте Cursor Settings → Models и поищите переопределение base URL для OpenAI и возможность добавить собственную модель.
  2. Если оба элемента доступны, введите https://api.spicyapi.ai/v1 как base URL, свой ключ SpicyAPI как ключ провайдера и xai/grok-4.6 как собственную модель. Сохраните конфигурацию.
  3. Выберите эту собственную модель в новом чате и отправьте небольшой вопрос о парсере ниже. Прежде чем отправлять более крупную задачу, проверьте, что запрос появился в ваших журналах SpicyAPI.
  4. Если элементов нет или проверка отклоняет модель, используйте встроенный Grok для агента Cursor либо запустите пример с прямым API. Одной вставки ключа SpicyAPI в поле ключа провайдера недостаточно.

Собственные ключи работают для чата, но не для автодополнения Tab. Запросы BYOK по-прежнему проходят через бэкенд Cursor для построения промпта, и обещание Cursor о нулевом хранении на них не распространяется. Платежи провайдеру и возможная клиентская комиссия тарифа организации — отдельно.

Держите три идентификатора раздельно

Значение конфигурацииЗначение прямого SpicyAPIПрименение
Base URLhttps://api.spicyapi.ai/v1Для клиента, который сам добавляет /chat/completions
Полный endpointhttps://api.spicyapi.ai/v1/chat/completionsДля curl или вызывающей стороны, отправляющей полный URL
Модель в запросеxai/grok-4.6Значение в теле JSON
Задача каталогаxai/grok-4.6/chatЗапись в списке задач модели, а не название во встроенном выборе Cursor

Держите base URL и полный endpoint раздельно. Если вставить полный endpoint в поле base, может получиться /chat/completions/chat/completions, когда клиент дописывает собственный путь. Ошибка «unknown model» требует проверить значение модели; смена промпта или effort цель не исправит.

Начните с прямого запроса с одной целью

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

Этот пример при запуске создаёт один платный запрос на ревью кода. Он использует ключ из вашего окружения. max_tokens: 4000 ограничивает только видимый ответ; токены рассуждения тарифицируются как выход и этим лимитом не ограничены. reasoning_effort: low сокращает объём рассуждений, но не задаёт жёсткий потолок расходов.

bash
: "${SPICY_API_KEY:?Set SPICY_API_KEY first}"
curl --no-buffer --fail-with-body --dump-header response-headers.txt \
  https://api.spicyapi.ai/v1/chat/completions \
  -H "Authorization: Bearer $SPICY_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  --data '{
    "model": "xai/grok-4.6",
    "messages": [
      {"role": "system", "content": "Review only the code shown. Explain the smallest correction and its acceptance cases. Do not claim that you executed anything."},
      {"role": "user", "content": "A delivery-window parser must accept a local time HH:MM from 00:00 through 23:59. The current function returns true for any string matching two digits, a colon and two digits. Explain which inputs it accepts incorrectly, and propose a small correction."}
    ],
    "reasoning_effort": "low",
    "max_tokens": 4000,
    "stream": true,
    "stream_options": {"include_usage": true}
  }'

Исправление читайте из фрагментов choices[].delta.content в потоке, а число токенов — из последнего чанка usage; формат потока описан в документации.

Если прямой вызов не проходит, сначала исправьте его ключ, модель или отклонённое поле, а потом добавляйте IDE. Эти ошибки сохранятся и внутри собственного клиента.

Поручите подготовку вызова Agent

Для повторяющихся ревью кода попросите своего Agent для программирования использовать SpicyAPI Skill: “Read xai/grok-4.6/chat, then adapt the example to my input; show the request before running it.” Запрос через CLI — spicyapi models get xai/grok-4.6/chat --json; запрос через MCP — spicyapi_model_get с model: "xai/grok-4.6/chat". Вызовы чата используют совместимый клиент или API чата; команды медиазадач ответы чата не генерируют.

Сделайте пример кодирования исполняемым

Требование намеренно узкое: принимать ровно HH:MM, часы 00–23 и минуты 00–59, без окружающих пробелов. Начните с этого ошибочного is-time.mjs:

javascript
export function isTime(value) {
  return typeof value === 'string' && /^\d{2}:\d{2}$/.test(value);
}

Сохраните приёмочные случаи как is-time.test.mjs:

javascript
import assert from 'node:assert/strict';
import test from 'node:test';
import { isTime } from './is-time.mjs';

const cases = [
  ['00:00', true], ['09:05', true], ['23:59', true],
  ['24:00', false], ['12:60', false], ['99:99', false],
  ['9:05', false], ['09:5', false], ['', false],
  ['09:05x', false], [' 09:05 ', false], ['09:05\n', false],
  [null, false], [905, false],
];
for (const [value, expected] of cases) {
  test(JSON.stringify(value), () => assert.equal(isTime(value), expected));
}

Запустите node --test is-time.test.mjs. Исходная функция не проходит три случая: она принимает 24:00, 12:60 и 99:99. Оставьте случаи с пробелами, завершающим переводом строки и не-строками, чтобы последующее исправление не расширило формат. Попросите агента для программирования:

Correct only is-time.mjs to satisfy the supplied tests. Preserve exactly two digits, reject surrounding whitespace, and return false for non-string input. Do not add a date library or change the tests. Run the tests if your tools permit, and report the actual result.

Одно из решений:

javascript
export function isTime(value) {
  if (typeof value !== 'string' || value.length !== 5) return false;
  return /^(?:[01]\d|2[0-3]):[0-5]\d$/.test(value);
}

Проверка диапазона отклоняет часы и минуты вне диапазона; проверки типа и длины явно сохраняют формат из пяти символов. Это решение проходит все четырнадцать случаев. Попросите агента подготовить собственное исправление, запустите те же тесты на этом патче и прочитайте diff: исправление одной функции не должно затрагивать конфигурацию, форматирование в других местах или зависимости и не должно добавлять библиотеку дат ради времени из пяти символов.

Приёмочные случаи парсера: допустимое время HH:MM, недопустимые диапазоны и отклоняемый окружающий текст.
Принимать с 00:00 до 23:59; отклонять недопустимые диапазоны, недостающие цифры и окружающий текст.

Сначала проверьте путь простого текста в собственном клиенте

Отправьте тот же вопрос о парсере через собственный клиент. Если у провайдера не появляется задача, проверьте выбранную модель и цель запроса; клиент может всё ещё использовать встроенный маршрут или падать до отправки.

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

Используйте потоковую передачу для долгих рассуждений

Используйте stream: true для effort high или xhigh и для длинных ответов (пример уже так делает); ответ без потоковой передачи, который занимает больше примерно 100 секунд, может быть оборван, а оборванный запрос, не вернувший ответа, не тарифицируется. Обычный финальный ответ заканчивается finish_reason: stop; tool_calls означает, что у вашего приложения есть следующий шаг, а length — что ответ усечён, даже если код выглядит правдоподобно. Если прямой поток завершается, а IDE зависает, проверьте обработку событий в IDE, прежде чем менять модель. Подробности: документация по тексту и потоковой передаче.

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

API принимает до 128 tools, tool_choice и parallel_tool_calls (логическое значение, по умолчанию true). Реализации инструментов должно предоставить ваше приложение.

Цикл инструментов должен проверить запрошенные аргументы, выполнить разрешённую операцию, добавить её фактический результат как сообщение инструмента и снова вызвать модель. Один лишь текстовый ответ не может применить патч или запустить Node.

Например, после того как ассистент запросил безобидную функцию get_acceptance_cases, вызывающая сторона возвращает её фактический результат с соответствующим ID:

json
[
  {"role":"assistant","content":null,"tool_calls":[{"id":"call_example","type":"function","function":{"name":"get_acceptance_cases","arguments":"{}"}}]},
  {"role":"tool","tool_call_id":"call_example","content":"00:00 pass; 23:59 pass; 24:00 fail; 12:60 fail; surrounding whitespace fail"}
]

Добавьте фактическое сообщение ассистента и результат инструмента в исходный разговор; JSON выше показывает их форму. Проверяйте имя функции и аргументы до выполнения, а также ограничивайте область файлов, число ходов инструментов и расходы.

Для этого примера пусть первый инструмент возвращает приёмочные случаи. Затем добавьте инструмент правки файла, ограниченный is-time.mjs, и команду тестирования, ограниченную node --test is-time.test.mjs.

Сопоставляйте каждый результат инструмента с его tool_call_id, даже если результаты приходят в другом порядке. Для этой задачи с одним файлом parallel_tool_calls: false может упростить ваш собственный harness.

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

Пояснительная схема: вызывающая сторона отвечает за авторизацию и выполнение. Текстовое утверждение или запрошенный вызов не доказывают, что действие произошло.
Вызывающая сторона авторизует и выполняет инструменты, а затем возвращает их фактические результаты.

Оставляйте в контексте репозитория только то, что относится к исправлению

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

Прямой маршрут принимает до 256 сообщений; токены и число сообщений — отдельные лимиты. Прежние ответы, результаты инструментов и изображения тоже занимают контекст. В длинных сессиях сохраняйте текущий исходный код и фактический результат тестов вместе с кратким итогом решений. Собственная IDE может пересказывать или пропускать выбранные файлы, поэтому большое окно API не исправит контекст, который клиент так и не отправил.

Относитесь к изображениям и файлам как к разным возможностям

Размещённый маршрут принимает текстовые части и image_url; части PDF и файлов он не принимает. Для визуального бага интерфейса сочетайте скриншот, доступный по URL, со спецификацией. Например, экран с 24:00 может проиллюстрировать состояние недопустимого ввода парсера. Сам текстовый пример изображения не требует.

Для спецификации в PDF извлеките нужный текст локально и проверьте порядок таблиц и сноски перед отправкой. Это процесс извлечения, а не нативный ввод PDF. Если собственная IDE не может переслать изображение или добавляет неподдерживаемое поле файла, используйте поддерживаемый прямой запрос или его текстовый эквивалент.

Подбирайте effort и лимиты выхода под работу

Прямой API принимает low, medium, high и xhigh; по умолчанию high, а none не принимается. Для небольшого запроса о парсере явно используйте low. Повышайте effort для более сложного исправления, когда низкая настройка не проходит его приёмочные случаи.

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

max_tokens по умолчанию равен 4,096 и принимает до 450,000 токенов видимого ответа. Для патча одной функции держите значение небольшим. Рассуждение может сделать тарифицируемый выход во много раз длиннее такого патча, особенно при effort high по умолчанию. Для рутинных исправлений используйте более низкий effort, планируйте бюджет по usage и задавайте дневные и общие лимиты расходов на ключ API, а также дневные и месячные бюджеты workspace для циклов агента; у этого endpoint Chat Completions нет потолка котировки на вызов.

Оставляйте temperature и top-p по умолчанию, пока сравниваете настройки effort.

Читайте цены токенов, не смешивая категории тарификации

Тарифы SpicyAPI — $2.00 за вход без кеша, $0.50 за вход из кеша и $6.00 за выход на миллион токенов. При 200,000 токенов входа в сумме или больше, включая вход из кеша, весь запрос тарифицируется по $4.00, $1.00 и $12.00 соответственно. Это каталожные цены для клиента, а не запись о новом клиентском платеже.

Для гипотетического прямого запроса с 12,000 токенов входа без кеша, 8,000 токенов входа из кеша и 2,000 тарифицируемых токенов выхода каталожный расчёт таков:

text
Uncached input: 12,000 / 1,000,000 × $2.00 = $0.0240
Cached input:    8,000 / 1,000,000 × $0.50 = $0.0040
Output:         2,000 / 1,000,000 × $6.00 = $0.0120
Total: $0.0400

Общий вход в этом примере — 20,000, а не 12,000. Если поле usage сообщает общий вход и кешированное подмножество, не тарифицируйте кешированные токены дважды: вычтите кешированное подмножество, чтобы получить вход без кеша. При сверке реального запроса используйте фактические категории из ответа и запись платформы.

Пример с длинным контекстом: 180,000 входа без кеша, 30,000 входа из кеша и 4,000 тарифицируемого выхода дают в сумме 210,000 входа. Расчёт: $0.720 + $0.030 + $0.048 = $0.798 по long-тарифам. Порог применяется ко всем категориям запроса целиком, а не только к части сверх 200,000. Поэтому сокращение лишнего контекста может изменить и число токенов, и применяемый уровень.

Это предполагаемые числа токенов. Планируйте бюджет без экономии на кеше, пока usage не сообщит о попадании; расчёт идёт по измеренному расходу, включая выход рассуждений.

Пояснительная схема: гипотетические запросы, а не счета. Учитывайте вход из кеша при выборе уровня контекста.
Гипотетические запросы, а не счета. Учитывайте вход из кеша при выборе уровня контекста.

Осторожно сравнивайте цену Cursor с прямой ценой

На странице Cursor Models and Pricing для Grok 4.6 указаны стандартные тарифы $2 за вход, $0.50 за вход из кеша и $6 за выход на миллион токенов; тарифы Fast — $4, $1 и $12. Fast включён по умолчанию на подходящих тарифах Pro, поэтому проверьте переключатель, прежде чем начинать долгую задачу. Встроенный Grok расходует пул Models Cursor и лимит вашего тарифа. Лимиты подписки, выбор скорости и условия конкретного аккаунта влияют на то, сколько платит пользователь; указанные тарифы не прогноз месячного счёта.

Для тех же 12,000 токенов входа без кеша, 8,000 из кеша и 2,000 выхода Cursor standard в сумме даёт $0.040, Fast — $0.080, а прямой API — $0.040, то есть столько же, сколько Cursor standard при этих указанных тарифах. Эти расчёты сравнивают заявленные цены за токен при искусственно равном расходе; они не показывают, что два продукта выполняют одинаковую работу. Реальные сессии агента могут расходовать другое число токенов.

Встроенный агент может сделать несколько вызовов, чтобы прочитать файлы, применить патч и заново запустить тесты. Сравнивайте общие расходы на завершённое исправление, а не одну цену за токен.

Справка Cursor по ключам API указывает дополнительные $0.25 за миллион токенов для BYOK в Teams и Enterprise, при этом вход, выход и вход из кеша считаются по одному разу. Пример с 22,000 токенов добавляет $0.0055 к платежу провайдеру. У индивидуального BYOK такой комиссии за токены тарифа организации нет; комиссия не доказывает поддержку конкретной собственной модели.

В первой задаче запишите общие расходы и проходит ли применённое исправление свои тесты.

«Other Models» в окне расхода Cursor — это пул тарификации, а не доказательство того, что запрос ушёл внешнему провайдеру. Чтобы распознать прямой вызов, используйте запись задачи у провайдера.

Диагностируйте сбои в том порядке, в каком они становятся наблюдаемыми

  • Цель или ключ: проверьте ошибку 401, неизвестную модель или задвоенный путь, прежде чем менять effort.
  • Отклонённое поле: уберите неподдерживаемые параметры или части содержимого, затем добавляйте возможности по одной.
  • Пустой или зависший интерфейс: сравните прямой ответ с парсером клиента, причиной завершения и маркером завершения.
  • Нет выполнения инструментов: проверьте диспетчеризацию инструментов вызывающей стороной и разрешения.
  • Неверный патч: проверьте непройденный приёмочный случай и фактически изменённые файлы.

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

Пояснительная схема: лестница диагностики для синтетических сбоев. Прохождение более раннего слоя не доказывает совместимость клиента на более поздних слоях.
Решите вопросы конфигурации и обработки ответа, прежде чем диагностировать код модели.

Второй пример выявит ошибки в разговоре

Когда строгий парсер проходит, измените одно требование: разрешить пробелы в начале и в конце, но сохранить двузначные компоненты времени. Новые случаи различают 09:05 , который теперь должен проходить, и 9:05, который по-прежнему не проходит. Примените trim() после проверки типа и до существующей проверки длины и диапазона; тесты обеих версий держите раздельно.

Отправьте исправленный исходный код и изменённое требование на следующем ходу: ID запроса не даёт памяти разговора. Если новый патч принимает 9:05 или правит старую функцию, последующие тесты выявят эту ошибку.

Выберите маршрут, который соответствует нужным вам доказательствам

Выбирайте встроенный Cursor для интегрированных правок и запуска тестов. Выбирайте прямой API для собственного цикла инструментов и контроля расхода. Настройку со своим ключом используйте для чата, когда проверка соединения проходит успешно; встроенный Cursor остаётся прямым выбором для интегрированных правок файлов и тестов.

Редакционная иллюстрация: разработчик изучает набросок потока парсера рядом с ноутбуком
Редакционная иллюстрация: разработчик изучает набросок потока парсера.

Для этого парсера ограничьте исправление функцией и запустите все четырнадцать тестов на применённом патче.

Другие языки English · 日本語 · 한국어 · Deutsch · Français · Español · Português (Brasil) · Italiano · Polski