Обзор
Meridian поддерживает множество LLM-провайдеров через единый OpenAI-совместимый интерфейс. Переключайтесь между провайдерами без изменения кода приложения.
Обзор
Meridian поддерживает широкий набор LLM-провайдеров — все они доступны через один OpenAI-совместимый интерфейс. Стандартизация позволяет переключаться между провайдерами без правок в приложении: ответы возвращаются в одном и том же формате независимо от того, какая модель и какой провайдер обработали запрос.
Meridian также может выступать как provider-compatible шлюз — например, для Anthropic, Google Gemini, Cohere, Bedrock и других. В этом режиме Meridian отдаёт provider-specific эндпоинты, и вы используете существующие SDK провайдеров без изменений в коде. Подробнее — на странице интеграций.
Матрица поддержки
В таблице ниже сведено, какие операции поддерживаются каждым провайдером через единый интерфейс Meridian.
| Провайдер | Models | Text | Text (stream) | Chat | Chat (stream) | Responses | Responses (stream) | Images | Images (stream) | Image Edit | Image Edit (stream) | Image Variation | Embeddings | TTS | TTS (stream) | STT | STT (stream) | Files | Batch | Count tokens |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Anthropic (anthropic/<model>) | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ |
Azure (azure/<model>) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ❌ |
Bedrock (bedrock/<model>) | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ |
Cerebras (cerebras/<model>) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
Cohere (cohere/<model>) | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
Elevenlabs (elevenlabs/<model>) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
Fireworks (fireworks/<model>) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
Gemini (gemini/<model>) | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Groq (groq/<model>) | ✅ | 🟡 | 🟡 | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
Hugging Face (huggingface/<model>) | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
Mistral (mistral/<model>) | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ |
Nebius (nebius/<model>) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
Ollama (ollama/<model>) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
OpenAI (openai/<model>) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
OpenRouter (openrouter/<model>) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
Parasail (parasail/<model>) | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
Perplexity (perplexity/<model>) | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
Replicate (replicate/<model>) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ |
SGL (sgl/<model>) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
Vertex AI (vertex/<model>) | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
vLLM (vllm/<model>) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ |
xAI (xai/<model>) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
Условные обозначения:
- ✅ — операция поддерживается провайдером напрямую либо реализована внутри Meridian.
- 🟡 — операция не поддерживается провайдером, но Meridian эмулирует её внутри как fallback.
- ❌ — операция не поддерживается провайдером и недоступна через Meridian.
Некоторые операции у апстрима недоступны, и их внутренняя реализация в Meridian опциональна (отметка 🟡). Например, text completions не поддерживаются Groq, но Meridian умеет эмулировать их через Chat Completions API. По умолчанию эмуляция выключена; включить её можно флагом enable_litellm_fallbacks: true в client-конфигурации.
Мы не рекомендуем такие фолбэки в продакшене — text completions и chat completions фундаментально различаются. Опция оставлена для пользователей, мигрирующих с LiteLLM.
Расшифровка столбцов:
- Models — операция list models (
/v1/models). - Text — классический text completion (
/v1/completions). - Responses — OpenAI Responses API (
/v1/responses). В зависимости от провайдера Meridian использует либо нативный responses-эндпоинт, либо проксирует на эквивалентный chat-API. - Reranking (
/v1/rerank) — поддерживается для Cohere, Bedrock, Vertex AI и vLLM. Подробности — на страницах конкретных провайдеров. - Images — Image Generation API (
/v1/images/generations). - Image Edit — Image Edit API (
/v1/images/edits). - Image Variation — Image Variation API (
/v1/images/variations). - TTS —
/v1/audio/speech; STT —/v1/audio/transcriptions. - Files — Files API (
/v1/files): загрузка, листинг, чтение, удаление. - Batch — Batch API (
/v1/batches): создание, листинг, отмена, получение результатов batch-задач.
Формат ответа
Все провайдеры возвращают ответы в OpenAI-совместимом формате. Meridian берёт на себя трансляцию между provider-specific форматами.
# Формат ответа одинаков независимо от провайдера
curl -X POST http://localhost:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-4o-mini",
"messages": [{"role": "user", "content": "Hello!"}]
}'
# Возвращает OpenAI-совместимую структуру:
{
"id": "chatcmpl-123",
"object": "chat.completion",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Hello! How can I help you?"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 10,
"completion_tokens": 9,
"total_tokens": 19
}
}Custom-провайдеры
Помимо встроенных провайдеров, Meridian поддерживает custom-конфигурации. Они позволяют создавать несколько экземпляров одного и того же базового провайдера с разными настройками, ограничениями по типам запросов и шаблонами доступа. Это полезно для конфигураций по окружениям, контроля доступа на уровне ролей и тестирования новых возможностей.
Преимущества единого интерфейса
- Переключение провайдеров без изменений в коде приложения.
- Конфигурации фолбэков для повышения надёжности.
- Балансировка нагрузки между несколькими провайдерами.
- OpenAI-совместимые шаблоны для всех провайдеров.
Метаданные провайдера
Информация о провайдере включается в секцию extra_fields каждого ответа: вы видите, какой провайдер обработал запрос, и получаете provider-specific метаданные.
Сырые запрос и ответ
Meridian опционально возвращает оригинальный запрос, отправленный провайдеру, и оригинальный ответ от него. Это полезно для отладки, аудита и понимания того, как Meridian трансформирует запросы между разными provider-specific форматами.
Что попадает в ответ:
raw_request— точное тело запроса (JSON / структура данных), отправленное на API провайдера.raw_response— точное тело ответа провайдера до нормализации в Meridian.- Детали трансформации — видно, как именно Meridian привёл ваш входной формат к provider-specific.
Пример. При отправке Chat Completions запроса с max_completion_tokens к Anthropic Meridian преобразует параметр в max_tokens в исходящем запросе. Включение raw request/response делает эту трансформацию явной:
{
"extra_fields": {
"provider": "anthropic",
"raw_request": {
"model": "claude-3-5-sonnet",
"max_tokens": 4096,
"messages": [...]
},
"raw_response": {
"id": "msg_...",
"type": "message",
"content": [...],
"usage": {
"input_tokens": 123,
"output_tokens": 456
}
}
}
}Сценарии использования:
- Отладка — проверка, как ваш запрос был преобразован под конкретного провайдера.
- Аудит — фиксация того, что именно ушло во внешний API.
- Анализ расходов — реальные счётчики токенов до нормализации Meridian.
- Интеграционное тестирование — валидация provider-specific трансформаций.
Где включается:
- Через API, веб-интерфейс или
config.json— см. Настройка провайдеров.
Включение raw request/response увеличивает размер payload и оказывает минимальное влияние на производительность. Используйте опцию выборочно — в окружениях для отладки и тестирования или там, где нужен audit trail.
Защита от опустошения бюджета и отказа в обслуживании
Иерархические бюджеты, предварительная оценка стоимости каждого запроса и rate limits на стороне шлюза гарантируют, что баг в коде или внешняя атака не превратятся в катастрофический счёт от провайдера.
Anthropic
Конвертация Anthropic API в Meridian — структурные различия, обработка сообщений, thinking/reasoning и преобразование инструментов.