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 — основная модель Claude
  • deepseek/deepseek-chat-v3:free — бесплатная модель DeepSeek (rate-limited)
  • meta-llama/llama-3.3-70b-instruct:nitro — ускоренный роутинг для LLaMA 3.3 70B

Модели и цены (2026)

Цены OpenRouter — это цены провайдеров + 5-10% наценка. Реальные цифры для популярных моделей:

МодельInput $/1MOutput $/1MКонтекст
Anthropic Claude Sonnet 4.5$3.20$16.00200K
OpenAI GPT-4o$2.80$11.20128K
Google Gemini 2.5 Pro$1.40$8.501M
Anthropic Claude Opus 4$16.00$80.00200K
DeepSeek V3$0.32$1.10128K
Meta LLaMA 3.3 70B$0.30$0.40128K
Mistral Large 2$2.80$8.40128K
Qwen 2.5 72B$0.40$0.50128K

Для разработчиков из РФ главное — поддержка оплаты криптой (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)OpenRouterLiteLLM
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 как провайдер из коробки.