Используйте 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 сказано, что его 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.

Вот небольшой переключатель, который можно держать в конфиге:
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).
Практическое правило: размещайте стабильный текст первым.
Хороший порядок:
- System prompt
- Определения инструментов
- Few-shot-примеры
- Общие документы или схемы
- Пользовательский ввод
- Временные метки, 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 бесплатного кредита.
Похожие материалы

Вызов Gemini API через OpenAI SDK: руководство по миграции с заменой только base_url, API Key и имени модели
Чек-лист миграции на совместимый интерфейс Gemini для проектов на OpenAI SDK: код, сопоставление параметров и цены.
14 июня 2026 г. · 9 мин чтения

Вызов Gemini API через OpenAI SDK: руководство по подключению с изменением только base_url, key и имени модели
Подключение Gemini к существующему коду на OpenAI SDK: минимально нужно изменить всего три настройки.
14 июня 2026 г. · 9 мин чтения

Вызов Gemini через OpenAI SDK: руководство по подключению с изменением только base_url, API Key и имени модели
Google поддерживает OpenAI-совместимый интерфейс: достаточно изменить base_url, Key и имя модели, чтобы подключить Gemini.
14 июня 2026 г. · 11 мин чтения