Быстрый старт: Первый запрос
Начните с указания клиента на наш базовый URL. Используйте https://api.grockapi.com/v1 и установить ваш API-ключ в заголовке. Идентификатор модели всегда uncensored. Это работает с любым OpenAI-compatible SDK.
Аутентификация требует действительного Bearer-токена. Передайте его как Authorization: Bearer YOUR_API_KEY. Если ключ отсутствует или недействителен, вы сразу получаете ошибку 401.
Выполните свой первый вызов для проверки подключения. Тело запроса должно включать имя модели и массив сообщений.
Поддерживаемые параметры и режимы
Настройте поведение генерации с использованием стандартных параметров. Вы можете регулировать температуру для креативности или top_p для ядерной выборки. Используйте параметр stop для определения конкретных последовательностей, которые останавливают генерацию.
Установите seed для детерминированных выводов при отладке. Параметры presence и frequency penalties помогают уменьшить повторения. Модель поддерживает до 100 000 токенов в окне контекста.
Максимальный объем вывода ограничен 16 000 токенов на запрос. Оставьте max_tokens незаданным, чтобы использовать лимит вывода по умолчанию 2 048. Ошибки и отказы не расходуют кредиты.
Потоковая передача и использование токенов
Включите потоковую передачу, установив stream: true. API возвращает чанки через Server-Sent Events (SSE). Каждый чанк содержит частичное содержимое и метаданные.
Подробности об использовании токенов появляются в последнем чанке. Это позволяет точно отслеживать расходы в реальном времени. Последний чанк включает полную статистику использования для запроса.
Правильно обрабатывайте закрытие потока, чтобы избежать утечек ресурсов. Всегда обрабатывайте последний чанк для получения точных данных о биллинге.
Вызов функций (Инструменты)
Определите инструменты в теле запроса. Укажите имена инструментов, описания и схемы параметров. Модель отвечает вызовами инструментов, когда это уместно.
Используйте параметр tool_choice для принудительного или разрешительного поведения. Вы можете установить его в auto, required или указать конкретные идентификаторы инструментов.
Обработка вызовов инструментов в логике вашего приложения. Отправьте вывод инструмента обратно модели, чтобы продолжить разговор. Это позволяет создавать сложные многошаговые рабочие процессы без внешнего разбора данных.
Режим JSON и ограничения
Принудированный структурированный вывод путем установки response_format в json_object. Модель вернёт JSON без обёртки в блоки кода markdown.
Этот режим идеален для парсинга данных в приложения. Убедитесь, что ваша схема четкая, чтобы повысить точность. Неверные структуры JSON могут вызвать ошибки парсинга на стороне клиента.
Сочетайте режим JSON с управлением температурой для единообразного форматирования. Используйте последовательности остановки, чтобы предотвратить появление лишних символов после закрывающей скобки.
Лимиты запросов и квоты
Каждый API-ключ ограничен 300 запросами в минуту. Вы можете выполнять до 8 одновременных запросов. Максимальный размер тела запроса составляет 8 МБ.
Ошибка 429 указывает на превышение лимита частоты запросов. Подождите перед повторной попыткой или снизьте параллелизм. На одну учетную запись действует один активный ключ; генерация нового ключа заменяет старый.
Отслеживайте использование через последний поток данных или заголовки ответа. Ошибки, такие как 402 (недостаточно средств) или 401 (неверный ключ), бесплатны и не учитываются в вашем лимите.
cURL
curl https://api.grockapi.com/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "calculate the sum of two and three"}]
}'Python
from openai import OpenAI
client = OpenAI(base_url="https://api.grockapi.com/v1", api_key="YOUR_KEY")
resp = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Summarise this thread without softening it."}],
)
print(resp.choices[0].message.content)Node.js
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.grockapi.com/v1", apiKey: process.env.API_KEY });
const resp = await client.chat.completions.create({
model: "uncensored",
messages: [{ role: "user", content: "Draft a villain monologue for my game." }],
});
console.log(resp.choices[0].message.content);Потоковая передача
stream = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Tell the story in second person."}],
stream=True,
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)