OpenRouter — единый OpenAI-совместимый endpoint для доступа к 100+ LLM от Anthropic, OpenAI, Google, Meta, Mistral и других провайдеров. Один API-ключ, один биллинг, одно место для мониторинга. В этой статье — как настроить, ценовая модель, реальные сценарии использования и сравнение с LiteLLM.
Что такое OpenRouter
OpenRouter — managed-прокси, основанный в 2023 году группой разработчиков из OpenAI/Anthropic-сообщества. Идея простая: вместо того, чтобы регистрироваться у каждого LLM-провайдера отдельно (Anthropic Console, OpenAI Platform, Google AI Studio, Mistral La Plateforme), держать у каждого свой API-ключ, оплачивать у каждого отдельно — разработчик получает один аккаунт с доступом ко всем моделям через OpenAI-совместимый API.
Архитектурно это HTTP-прокси с поддержкой streaming, function calling, vision и structured output. Под капотом OpenRouter маршрутизирует запросы к нужному провайдеру, мониторит доступность каждого, обрабатывает retry/fallback, собирает аналитику по использованию.
Как подключить за 5 минут
# 1. Зарегистрироваться на openrouter.ai и пополнить баланс (минимум $5)
# 2. Создать API-ключ в Dashboard → Keys
# 3. Использовать OpenAI-клиент с другим base_url
curl https://openrouter.ai/api/v1/chat/completions \
-H "Authorization: Bearer $OPENROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "anthropic/claude-sonnet-4.5",
"messages": [{"role": "user", "content": "Hello"}]
}'
Или через Python OpenAI SDK:
from openai import OpenAI
client = OpenAI(
base_url="https://openrouter.ai/api/v1",
api_key=os.environ["OPENROUTER_API_KEY"],
)
response = client.chat.completions.create(
model="anthropic/claude-sonnet-4.5",
messages=[{"role": "user", "content": "Hello"}],
extra_headers={
"HTTP-Referer": "https://myapp.com", # for OpenRouter rankings
"X-Title": "My App", # for OpenRouter rankings
},
)
Заголовки HTTP-Referer и X-Title опциональны, но OpenRouter использует их для внутреннего рейтинга приложений — их можно ставить для приоритета.
Опции моделей и фильтрация
OpenRouter предлагает три способа выбрать модель:
По прямому имени — anthropic/claude-sonnet-4.5, openai/gpt-4o, google/gemini-2.5-pro. Префикс указывает провайдера, имя — конкретную модель. Полный список — в роутере моделей.
По capabilities — OpenRouter поддерживает :free суффикс для бесплатных моделей, :nitro для ускоренной маршрутизации, :thinking для моделей с chain-of-thought (Claude с extended thinking, DeepSeek R1).
Примеры:
anthropic/claude-sonnet-4.5— основная модель Claudedeepseek/deepseek-chat-v3:free— бесплатная модель DeepSeek (rate-limited)meta-llama/llama-3.3-70b-instruct:nitro— ускоренный роутинг для LLaMA 3.3 70B
Модели и цены (2026)
Цены OpenRouter — это цены провайдеров + 5-10% наценка. Реальные цифры для популярных моделей:
| Модель | Input $/1M | Output $/1M | Контекст |
|---|---|---|---|
| Anthropic Claude Sonnet 4.5 | $3.20 | $16.00 | 200K |
| OpenAI GPT-4o | $2.80 | $11.20 | 128K |
| Google Gemini 2.5 Pro | $1.40 | $8.50 | 1M |
| Anthropic Claude Opus 4 | $16.00 | $80.00 | 200K |
| DeepSeek V3 | $0.32 | $1.10 | 128K |
| Meta LLaMA 3.3 70B | $0.30 | $0.40 | 128K |
| Mistral Large 2 | $2.80 | $8.40 | 128K |
| Qwen 2.5 72B | $0.40 | $0.50 | 128K |
Для разработчиков из РФ главное — поддержка оплаты криптой (USDT через Coinbase, BTC напрямую). Создаёте аккаунт, пополняете баланс через Coinbase Onramp или прямой перевод, используете API-ключ. Подробнее про обход российских ограничений — в материале по Claude Code API.
Паттерны использования
1. Унификация для нескольких провайдеров
Типичная production-архитектура: один клиент на всех провайдеров, переключение через env-variable:
# config.py
import os
MODELS = {
"fast": "openai/gpt-4o-mini",
"smart": "anthropic/claude-sonnet-4.5",
"budget": "meta-llama/llama-3.3-70b-instruct",
"long-context": "google/gemini-2.5-pro", # 1M context
}
PROVIDER_MAP = {
"fast": MODELS["fast"],
"smart": MODELS["smart"],
}
def get_model(tier: str) -> str:
return PROVIDER_MAP.get(tier, MODELS["smart"])
2. Fallback между провайдерами
Если Anthropic API недоступен — OpenRouter автоматически переключится на OpenAI или Google (если настроен fallback). Это критично для production-систем, где простой LLM-API = простой всего приложения.
from openai import OpenAI
import openai
client = OpenAI(base_url="https://openrouter.ai/api/v1", api_key=KEY)
def call_with_fallback(prompt: str) -> str:
models = ["anthropic/claude-sonnet-4.5", "openai/gpt-4o", "google/gemini-2.5-pro"]
for model in models:
try:
r = client.chat.completions.create(
model=model,
messages=[{"role": "user", "content": prompt}],
timeout=30,
)
return r.choices[0].message.content
except openai.APITimeoutError:
continue
raise RuntimeError("All models failed")
3. Cost-based routing
Для задач, где важен cost-per-call (например, обработка 100K пользовательских запросов в день):
def cheap_or_smart(prompt: str, complexity: int) -> str:
# Простые задачи → cheap модель, сложные → smart
model = "meta-llama/llama-3.3-70b-instruct" if complexity < 5 else "anthropic/claude-sonnet-4.5"
return call(prompt, model=model)
Реальная экономия: на задачах классификации / sentiment / extraction LLaMA 3.3 70B справляется на 95% уровне Sonnet 4.5, но в 10 раз дешевле.
4. Параллельные запросы для голосования (Self-consistency)
Для задач с высокой ценой ошибки (генерация SQL, извлечение сущностей):
from concurrent.futures import ThreadPoolExecutor
def parallel_vote(prompt: str, n: int = 5) -> str:
with ThreadPoolExecutor(max_workers=n) as ex:
futures = [
ex.submit(call, prompt, model="anthropic/claude-sonnet-4.5")
for _ in range(n)
]
responses = [f.result() for f in futures]
# Majority voting
return max(set(responses), key=responses.count)
Стоит 5x больше, но точность существенно растёт для критичных задач.
Сравнение с прямыми API и LiteLLM
| Аспект | Прямые API (Anthropic, OpenAI) | OpenRouter | LiteLLM |
|---|---|---|---|
| Setup | Регистрация у каждого | Один аккаунт | Self-hosted Python |
| Биллинг | Несколько счетов | Один счёт | Свой (оплата провайдерам) |
| Оплата из РФ | Сложно | Крипта или карта | Сложно (через прокси) |
| Цена | Прямая | +5-10% наценка | Прямая |
| Данные | Не уходят third-party | Идут через OpenRouter | Не уходят |
| Failover | Ручной | Автоматический | Ручной (нужно настраивать) |
| DevOps | Нет | Нет | Нужен для развертывания |
| Latency | Минимальная | +30-100ms маршрутизации | Минимальная |
OpenRouter лучше всего подходит:
- Solo-разработчикам и небольшим командам
- Проектам, где нужно A/B-тестировать разные модели без переписывания кода
- Командам, где нужна простота над полным контролем
LiteLLM лучше для:
- Enterprise-систем с on-call-инфраструктурой
- Когда нужна интеграция с internal auth, observability, логированием
- Compliance-требования (данные не должны покидать инфраструктуру)
Streaming, function calling, structured output
OpenRouter поддерживает все современные API-features через OpenAI-совместимое API:
# Streaming (Server-Sent Events)
stream = client.chat.completions.create(
model="anthropic/claude-sonnet-4.5",
messages=messages,
stream=True,
)
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
# Function calling
response = client.chat.completions.create(
model="anthropic/claude-sonnet-4.5",
messages=messages,
tools=[{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get current weather",
"parameters": {
"type": "object",
"properties": {"location": {"type": "string"}},
"required": ["location"],
},
},
}],
)
# JSON-mode для structured output
response = client.chat.completions.create(
model="anthropic/claude-sonnet-4.5",
messages=[{"role": "user", "content": "Extract entities from: ..."}],
response_format={"type": "json_object"},
)
data = json.loads(response.choices[0].message.content)
Все это работает прозрачно через OpenAI-совместимое API — OpenRouter передаёт провайдер-специфичные параметры внутри.
Аналитика и observability
OpenRouter Dashboard показывает:
- Расходы по моделям в реальном времени
- Latency p50/p95/p99 по каждой модели
- Error rate и причины (rate limit, timeout, content filter)
- Usage по приложениям (если указывать HTTP-Referer)
Для production-систем это полезно для cost-attribution: какое приложение сколько жжёт. Если нужна более глубокая интеграция (логирование запросов в свой observability-стек), OpenRouter поддерживает custom headers для прокидывания trace-id.
Лимиты и rate limits
У каждой модели в OpenRouter свои лимиты, зависящие от провайдера:
- Anthropic Claude: ~50 req/min на аккаунт для paid tier
- OpenAI GPT-4o: ~500 req/min для tier 1+ аккаунтов
- Google Gemini: ~60 req/min (можно увеличить)
- Open-source модели: обычно 1000+ req/min (rate-limit есть, но высокий)
При агрессивной нагрузке можно упереться в rate-limit. OpenRouter показывает текущий usage в Dashboard; для масштабирования выше лимита — multi-account setup или fallback на другие модели.
Когда НЕ использовать OpenRouter
Sensitive данные. OpenRouter — third-party, и ваши промпты идут через их инфраструктуру. Для GDPR / HIPAA / финансовых данных self-hosted LiteLLM или прямые API-ключи предпочтительнее.
Высокочастотный streaming с минимальной latency. OpenRouter добавляет 30-100ms к latency. Если ваш use-case чувствителен к каждой миллисекунде (real-time voice, gaming), прямые API быстрее.
Когда провайдер заблокирован. OpenRouter поддерживает почти все модели, но если вы работаете в стране, где Anthropic / OpenAI / Google заблокированы, OpenRouter — SaaS, тоже блокируется. Для self-hosted альтернативы — Ollama + локальные модели.
Заключение
OpenRouter — рабочий инструмент для solo-разработчиков и небольших команд, особенно в странах с ограничениями на оплату провайдерам напрямую. Для production-grade enterprise-систем self-hosted LiteLLM остаётся более гибким выбором. На практике большинство LLM-приложений могут начинаться с OpenRouter (быстрый старт, не нужна своя инфраструктура) и мигрировать на прямые API или LiteLLM, когда это станет оправданным по объёму или compliance-требованиям.
Если вы только начинаете интеграцию с LLM — начните с OpenAI-совместимого клиента с базой на OpenRouter. Это даёт гибкость пробовать разные модели без переписывания кода. По мере роста системы можете мигрировать на прямые API для снижения наценки или на LiteLLM для self-hosted варианта.
Часто задаваемые вопросы
Что такое OpenRouter простыми словами
OpenRouter — это прокси-сервис, который даёт единый OpenAI-совместимый endpoint для 100+ LLM от разных провайдеров: Anthropic, OpenAI, Google, Meta, Mistral, DeepSeek и других. Один API-ключ OpenRouter даёт доступ ко всем моделям, оплата — в одном месте (USD или крипта), роутинг между моделями — прозрачный. Для интеграции в код меняется только base_url.
Чем OpenRouter лучше прямых API Anthropic и OpenAI
Главные преимущества: единый аккаунт и биллинг (нет нужды регистрироваться у каждого провайдера), оплата криптой или картами (актуально для разработчиков из РФ), автоматический fallback между моделями если один провайдер недоступен, агрегированная аналитика использования. Недостаток — наценка к прямым ценам провайдеров (обычно 5-10%) и дополнительная точка отказа в маршруте запроса.
Как OpenRouter сравнить с LiteLLM
LiteLLM — это open-source прокси-сервер на Python, который разворачивается self-hosted (на своём сервере). OpenRouter — managed-сервис (SaaS). LiteLLM даёт полный контроль, но требует DevOps для развертывания и поддержки; OpenRouter — мгновенный старт без инфраструктуры, но данные идут через third-party. Для команд с on-call-инфраструктурой LiteLLM лучше, для solo-разработчиков и быстрых прототипов — OpenRouter.
Какие модели доступны через OpenRouter
Полный список — в их роутере моделей, но основные: Claude Sonnet 4.5 / Opus 4, GPT-4o / o1 / o3, Gemini 2.5 Pro / Flash, LLaMA 3.3 70B / 405B, Mistral Large, Mixtral 8x22B, DeepSeek V3, Qwen 2.5 Max, Cohere Command R+, и десятки open-source-моделей (LLaMA, Mistral, Qwen) через партнёрские провайдеры. Можно фильтровать по провайдеру, цене, контекст-окну, capabilities (tools, vision, JSON-mode).
Сколько стоит OpenRouter
OpenRouter берёт небольшую наценку сверх прямых цен провайдеров (обычно 5-10%, зависит от модели). Например, Claude Sonnet 4.5: $3/$15 за 1M input/output токенов у Anthropic напрямую, ~$3.20/$16 через OpenRouter. Для пользователей из РФ главное преимущество — оплата криптой (USDT, BTC) или международной картой, что обходит ограничения российских карт.
Можно ли использовать OpenRouter как drop-in замену OpenAI API
Да. OpenRouter полностью совместим с OpenAI Chat Completions API. Для миграции достаточно поменять base_url на https://openrouter.ai/api/v1 и использовать OpenRouter-ключ вместо OpenAI-ключа. В коде: OpenAI-клиент с другим base_url, или прямая fetch-инструкция. LangChain, LlamaIndex, Haystack, Vercel AI SDK поддерживают OpenRouter как провайдер из коробки.