OpenRouter
Конвертация OpenRouter API в Meridian — маршрутизация на нескольких провайдеров, поддержка reasoning, обработка параметров и стриминг.
Обзор
OpenRouter — это OpenAI-совместимый сервис маршрутизации, который даёт доступ к моделям нескольких поставщиков (OpenAI, Anthropic, Google, Meta и других) через единый интерфейс. Meridian делегирует выполнение в OpenAI-реализацию с особой обработкой reasoning-моделей.
Ключевые возможности:
- Агрегация провайдеров — доступ к 100+ моделям от разных вендоров.
- Поддержка reasoning — extended thinking на совместимых моделях.
- Совместимость параметров — корректное преобразование
reasoning.effort. - Стриминг — полная поддержка SSE с usage-tracking.
- Tool calling — определения и выполнение функций.
Поддерживаемые операции
| Операция | Без стриминга | Стриминг | Эндпоинт |
|---|---|---|---|
| Chat Completions | ✅ | ✅ | /v1/chat/completions |
| Responses API | ✅ | ✅ | /v1/responses |
| Text Completions | ✅ | ✅ | /v1/completions |
| List Models | ✅ | — | /v1/models |
| Embeddings | ❌ | ❌ | — |
| Image Generation | ❌ | ❌ | — |
| Speech (TTS) | ❌ | ❌ | — |
| Transcriptions (STT) | ❌ | ❌ | — |
| Files | ❌ | ❌ | — |
| Batch | ❌ | ❌ | — |
Не поддерживаемые операции (❌): Embeddings, Image Generation, Speech, Transcriptions, Files и Batch не предоставляются апстримом OpenRouter. Запросы к ним возвращают BifrostError с кодом "unsupported_operation".
Responses API в OpenRouter сейчас находится в beta.
1. Chat Completions
Параметры запроса
OpenRouter поддерживает все стандартные параметры OpenAI chat completion. Полный справочник по параметрам и поведению — см. OpenAI → Chat Completions.
Обработка reasoning
OpenRouter поддерживает extended thinking на совместимых моделях:
// Запрос Meridian
{
"reasoning": {
"effort": "high",
"max_tokens": 10000
}
}
// Преобразование для OpenRouter
{
"reasoning_effort": "high"
}Reasoning-модели: gpt-oss-120b и совместимые модели со специальной обработкой reasoning-контента.
Удаление cache control
Cache-control директивы Anthropic автоматически удаляются:
// Meridian принимает cache control в стиле Anthropic
{
"messages": [{
"role": "user",
"content": [{
"type": "text",
"text": "...",
"cache_control": {"type": "ephemeral"}
}]
}]
}
// В OpenRouter уходит без cache-директивФильтруемые параметры
Удаляются для совместимости с OpenRouter:
prompt_cache_key— не поддерживается;verbosity— специфика Anthropic;store— не поддерживается;service_tier— специфика OpenAI.
OpenRouter поддерживает все стандартные типы сообщений, инструменты, ответы и форматы стриминга OpenAI. Подробности по обработке сообщений, преобразованию инструментов, ответам и стримингу — в разделе OpenAI → Chat Completions.
2. Responses API
Responses API в OpenRouter обрабатывается как отдельный эндпоинт /v1/responses. Сейчас этот API находится в beta.
Поддержка параметров — та же, что у Chat Completions; запросы пробрасываются напрямую на Responses-эндпоинт без конверсии в Chat Completions.
Особая обработка сообщений (gpt-oss vs другие модели). Подробности о том, как reasoning обрабатывается по-разному в gpt-oss и в остальных моделях, — см. OpenAI → Responses API: там описана конверсия reasoning между summaries и content blocks.
3. Text Completions
OpenRouter поддерживает legacy text completion:
| Параметр | Маппинг |
|---|---|
prompt | Прямое проксирование |
max_tokens | max_tokens |
temperature, top_p | Прямое проксирование |
stop | Стоп-последовательности |
4. List Models
Возвращает список 100+ моделей, доступных через OpenRouter, в том числе:
- OpenAI (GPT-4, GPT-4 Turbo и т. д.);
- Anthropic (семейство Claude 3);
- Google (Gemini);
- Meta (Llama);
- Mistral;
- и многие другие.
Что не поддерживается
| Возможность | Причина |
|---|---|
| Embeddings | Не предоставляются OpenRouter API |
| Image Generation | Не предоставляются OpenRouter API |
| Speech / TTS | Не предоставляются OpenRouter API |
| Transcription / STT | Не предоставляются OpenRouter API |
| Batch | Не предоставляются OpenRouter API |
| Files | Не предоставляются OpenRouter API |