Назад ко всем статьям
Руководства

Используйте Groq GPT-OSS 120B с OpenAI SDK: базовый URL, цены и кэширование

17 июня 2026 г. · 26 мин чтения · GPT / Claude / Gemini

Редакционная обложка на кремовом фоне: терминал разработчика соединён терракотовыми линиями с тремя подписанными концептуальными узлами

OpenAI-совместимый endpoint Groq действительно переключается одной строкой: задайте base_url как https://api.groq.com/openai/v1 и продолжайте использовать OpenAI SDK. По состоянию на 17 июня 2026 года Groq указывает для openai/gpt-oss-120b на странице цен: $0.15 за 1 млн некэшированных входных токенов, $0.075 за 1 млн кэшированных входных токенов и $0.60 за 1 млн выходных токенов (цены Groq).

Это полезная часть. Ловушка — думать, что «OpenAI-compatible» означает «идентичное поведение и идентичная тарификация». Это не так. Вам всё равно нужно выбрать ID модели Groq, следить за cache hits, избегать неподдерживаемых параметров OpenAI и отдельно учитывать вызовы встроенных инструментов.

Компактная карточка сравнения цен для Groq GPT-OSS 120B и GPT-OSS 20B с колонками для некэшированного входа, кэшированного входа и вых

Что вы на самом деле переключаете

В документации Groq сказано, что его API «mostly compatible with OpenAI’s client libraries», и показана точная конфигурация клиента OpenAI: передайте ключ Groq и задайте base_url="https://api.groq.com/openai/v1" (совместимость Groq с OpenAI).

Установите OpenAI Python SDK:

pip install openai
export GROQ_API_KEY="gsk_..."

Затем вызовите GPT-OSS 120B через Groq:

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["GROQ_API_KEY"],
    base_url="https://api.groq.com/openai/v1",
)

response = client.chat.completions.create(
    model="openai/gpt-oss-120b",
    messages=[
        {"role": "system", "content": "You are a concise senior backend engineer."},
        {"role": "user", "content": "Write a PostgreSQL index plan for a slow user_events query."},
    ],
)

print(response.choices[0].message.content)
print(response.usage)

Важное отличие — это model. На собственной платформе OpenAI вы могли бы использовать имя модели, хостящейся у OpenAI. В Groq GPT-OSS указывается как openai/gpt-oss-120b или openai/gpt-oss-20b.

OpenAI выпустила gpt-oss-120b и gpt-oss-20b 5 августа 2025 года как reasoning-модели с открытыми весами под Apache 2.0 (OpenAI). OpenAI сообщает, что у gpt-oss-120b 117 млрд параметров всего, 5,1 млрд активных параметров на токен, 128 экспертов, 4 активных эксперта на токен и нативная поддержка длины контекста до 128k (OpenAI). На странице модели Groq для размещённой openai/gpt-oss-120b указано окно контекста 131 072 токена и максимум выходных токенов 65 536 (карточка модели Groq).

Выберите 120B или 20B

Используйте 120B, когда качество важнее базовой стоимости: планирование агентов, более сложные задачи программирования, сложное извлечение данных или многошаговое рассуждение. Используйте 20B, когда нужна более дешёвая пропускная способность для маршрутизации, суммаризации, классификации, коротких ассистентов или фоновых задач с большим объёмом.

ID модели Groq Заявленная скорость Некэшированный вход Кэшированный вход Выход
openai/gpt-oss-120b 500 TPS $0.15 / 1M $0.075 / 1M $0.60 / 1M
openai/gpt-oss-20b 1,000 TPS $0.075 / 1M $0.0375 / 1M $0.30 / 1M

Эти цены взяты из текущей таблицы тарифов Groq и таблицы кэширования промптов (цены Groq). Модель 20B стоит ровно вдвое дешевле 120B по указанной цене за токены. Это делает её хорошим дефолтом для сценариев «сначала попробовать». Если качество ответа недостаточно хорошее, переведите этот путь на 120B.

Карта семейства моделей: GPT-OSS 20B как быстрая и недорогая, GPT-OSS 120B как более мощная; обе подключены к Groq Open

Вот небольшой переключатель, который можно держать в конфиге:

import os
from openai import OpenAI

MODEL = os.getenv("GROQ_MODEL", "openai/gpt-oss-20b")

client = OpenAI(
    api_key=os.environ["GROQ_API_KEY"],
    base_url="https://api.groq.com/openai/v1",
)

def ask(prompt: str) -> str:
    response = client.chat.completions.create(
        model=MODEL,
        messages=[
            {"role": "system", "content": "Answer with practical developer steps."},
            {"role": "user", "content": prompt},
        ],
    )
    return response.choices[0].message.content

print(ask("Give me a minimal Redis rate limiter design."))

Запуск с 20B:

GROQ_MODEL=openai/gpt-oss-20b python app.py

Запуск с 120B:

GROQ_MODEL=openai/gpt-oss-120b python app.py

Оценивайте стоимость запросов с cache hits

Кэширование промптов Groq работает автоматически для поддерживаемых моделей, включая openai/gpt-oss-20b и openai/gpt-oss-120b. Groq говорит, что изменений в коде не требуется, cache hits используют точное совпадение префикса, кэшированные части получают скидку 50% на входные токены, а кэшированные данные автоматически истекают через 2 часа без использования (кэширование промптов Groq).

Практическое правило: размещайте стабильный текст первым.

Хороший порядок:

  1. System prompt
  2. Определения инструментов
  3. Few-shot-примеры
  4. Общие документы или схемы
  5. Пользовательский ввод
  6. Временные метки, ID, данные конкретного запроса

Плохой порядок: поставить timestamp, request ID или пользовательское поле перед общим промптом на 20 000 токенов. Это ломает префикс.

Вот helper для расчёта стоимости GPT-OSS 120B:

def groq_gpt_oss_120b_cost(prompt_tokens, cached_tokens, completion_tokens):
    uncached_tokens = max(prompt_tokens - cached_tokens, 0)

    return (
        uncached_tokens / 1_000_000 * 0.15
        + cached_tokens / 1_000_000 * 0.075
        + completion_tokens / 1_000_000 * 0.60
    )

А вот исполняемый вызов, который печатает использование кэша, если Groq его возвращает:

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["GROQ_API_KEY"],
    base_url="https://api.groq.com/openai/v1",
)

STATIC_POLICY = """
You are an internal code review assistant.
Always check correctness, security, performance, and migration risk.
Return JSON with keys: summary, risks, suggested_patch.
"""

def review(diff: str):
    response = client.chat.completions.create(
        model="openai/gpt-oss-120b",
        messages=[
            {"role": "system", "content": STATIC_POLICY},
            {"role": "user", "content": diff},
        ],
        response_format={"type": "json_object"},
    )

    usage = response.usage
    details = getattr(usage, "prompt_tokens_details", None)
    cached = getattr(details, "cached_tokens", 0) if details else 0

    print("prompt_tokens:", usage.prompt_tokens)
    print("cached_tokens:", cached)
    print("completion_tokens:", usage.completion_tokens)
    print("estimated_cost_usd:", groq_gpt_oss_120b_cost(
        usage.prompt_tokens,
        cached,
        usage.completion_tokens,
    ))

    return response.choices[0].message.content

В документации Groq по кэшированию показано поле cached_tokens внутри usage.prompt_tokens_details, а cache hit rate определяется как cached_tokens / prompt_tokens × 100% (кэширование промптов Groq). Не предполагайте, что каждый второй запрос будет дешевле. Точные префиксы важны.

Считайте вызовы инструментов отдельно

Цены за токены — это не весь счёт, если вы включаете встроенные инструменты. На странице цен Groq встроенные инструменты для GPT-OSS указаны отдельно: Browser Search basic search — $5 / 1000 requests, Browser Search visit website — $1 / 1000 requests, а Code Execution Python — $0.18 / hour (цены Groq).

Это меняет то, как вы проектируете агентов. Support-бот, который вызывает поиск один раз на каждое сообщение пользователя, имеет другую структуру затрат, чем суммаризатор, использующий только токены промпта. Кэш помогает с повторяющимися схемами инструментов, но не делает внешние вызовы инструментов бесплатными.

Также проверьте совместимость, прежде чем копипастить код OpenAI. В документации Groq по совместимости с OpenAI перечислены неподдерживаемые поля, которые могут вернуть 400, включая logprobs, logit_bias, top_logprobs, messages[].name и значения n, отличные от 1 (совместимость Groq с OpenAI). Groq также говорит, что temperature=0 преобразуется в 1e-8.

Безопасный минимальный запрос выглядит так:

response = client.chat.completions.create(
    model="openai/gpt-oss-120b",
    temperature=0.2,
    messages=[
        {"role": "system", "content": "Be precise. If unsure, say so."},
        {"role": "user", "content": "Explain this stack trace and suggest a fix: ..."},
    ],
)

Не мигрируйте всё приложение одним коммитом. Уберите настройки провайдера за переменные окружения:

LLM_BASE_URL=https://api.groq.com/openai/v1
LLM_API_KEY=$GROQ_API_KEY
LLM_MODEL=openai/gpt-oss-120b

Затем подключите их к SDK:

client = OpenAI(
    api_key=os.environ["LLM_API_KEY"],
    base_url=os.environ["LLM_BASE_URL"],
)

response = client.chat.completions.create(
    model=os.environ["LLM_MODEL"],
    messages=[{"role": "user", "content": "Summarize this incident report."}],
)

Практический запасной выход для нескольких провайдеров

Если вы встраиваете это в production, не размазывайте предположения о провайдере по всей кодовой базе. Держите base_url, api_key и model в конфиге. Так Groq легко тестировать, а маршрутизация между провайдерами становится скучной.

Для команд, которым нужен один OpenAI-совместимый endpoint для Claude, GPT и Gemini, onehop — простой путь: измените base URL на https://api.onehop.ai/v1. Он совместим с OpenAI/Anthropic, дешевле first-party-вариантов, а новые аккаунты получают $10 бесплатно без необходимости карты.

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["ONEHOP_API_KEY"],
    base_url="https://api.onehop.ai/v1",
)

response = client.chat.completions.create(
    model=os.environ["ONEHOP_MODEL"],
    messages=[
        {"role": "user", "content": "Compare this API design against common REST mistakes."}
    ],
)

print(response.choices[0].message.content)

Используйте Groq, когда вам конкретно нужен быстрый inference GPT-OSS и стек инструментов/кэширования Groq. Используйте onehop, когда нужна единая поверхность интеграции для Claude, GPT, Gemini и других хостящихся моделей без переписывания клиентского кода. Вы можете вызывать Claude и другие модели в onehop или зарегистрироваться и получить $10 бесплатного кредита.

Чеклист для production

Перед релизом пройдите этот чеклист:

  • Зафиксируйте ID модели: openai/gpt-oss-120b для качества, openai/gpt-oss-20b для меньшей стоимости.
  • Держите стабильные секции промпта в начале, чтобы Groq мог переиспользовать кэшированные префиксы.
  • Логируйте prompt_tokens, cached_tokens и completion_tokens для каждого запроса.
  • Добавьте отдельный учёт для Browser Search, Visit Website и Code Execution.
  • Удалите неподдерживаемые параметры OpenAI перед маршрутизацией трафика в Groq.
  • Оставьте base_url настраиваемым, чтобы тестировать Groq, first-party API или onehop, не трогая бизнес-логику.

Вся миграция может быть одной строкой. Надёжная миграция — это три строки плюс учёт: base URL, ID модели и телеметрия стоимости. Начните с этого, затем решите, стоит ли качество 120B затрат на выходные токены для каждого пути в вашем приложении. Если вам нужен тот же паттерн с base URL для более широкого доступа к моделям, вызывайте Claude и другие модели в onehop и зарегистрируйтесь, чтобы получить $10 бесплатного кредита.