Сценарии использования

Снижение стоимости и сроков разработки

Новый сервис подключается к LLM за пять несколько минут вместо спринта. Retries, fallbacks, семантический кэш, телеметрия и governance уже есть на стороне шлюза.

Проблема

Когда команда впервые добавляет LLM-функцию в продукт, бóльшая часть времени уходит не на саму функцию, а на инфраструктурный «налог»:

  • получение ключа провайдера и согласование бюджета с финансами;
  • настройка retries и тайм-аутов под особенности конкретного провайдера;
  • обвязка для смены провайдера в будущем («чтобы потом не больно»);
  • интеграция с корпоративным логированием и метриками;
  • кэширование одинаковых запросов для экономии;
  • ограничение доступа и rate limits.

Эта работа повторяется в каждом сервисе. Команда тратит один–два спринта на инфраструктуру вокруг одного client.chat.completions.create(). Смена провайдера через год — переписывать обвязку заново.

Кого это касается: product engineering teams, lead-разработчики продуктов, желающие выводить AI-фичи в продакшен быстрее и без дублирования инфраструктурного кода.

Решение

  • Подключение нового сервиса к LLM: 1–2 спринта → 10 минут. Готовый OpenAI-совместимый эндпоинт + готовый VK = готовая интеграция.
  • Смена провайдера — без релиза приложения. Изменение в конфигурации VK; код не трогается. Подробнее в Защита от vendor lock.
  • Экономия на дубликатах. Семантический кэш отдаёт ответ на повторные/похожие промпты, не уходя в LLM. Особенно эффективен для коротких системных подсказок и FAQ-сценариев.
  • Готовая наблюдаемость. Метрики, трейсы, логи без подключения дополнительных библиотек в каждом сервисе.
  • Контроль расходов с первого дня. VK имеет бюджет и rate limit; команда не может «случайно» выйти за лимит.

Что предлагает Meridian

Meridian переносит весь инфраструктурный слой со стороны приложения на сторону шлюза:

  • Drop-in replacement OpenAI API — приложение использует существующий openai SDK, только меняет base_url и api_key. Никакого нового SDK учить не нужно.
  • Retries & fallbacks — автоматические повторы и аварийное переключение на резервного провайдера выполняются Meridian, не приложением.
  • Семантическое кэширование — повторные запросы с близкими по смыслу промптами обслуживаются из кэша; экономия мгновенная и без изменений в коде.
  • Телеметрия — Prometheus-метрики и OpenTelemetry-трейсы доступны без подключения дополнительных библиотек.
  • Governance — бюджет, rate limit, фильтрация моделей задаются конфигурацией VK, не кодом приложения.

С Meridian

Сервис
5 строк кода

Meridian

OpenAI / Anthropic / ...

До Meridian

Сервис

Retry-логика

Fallback-обвязка

Кэш в Redis

Prometheus client

Учёт бюджета вручную

OpenAI

Сценарий

Команда alpha разрабатывает новую функцию: автогенерацию title для пользовательских заметок.

Без Meridian (типичный путь):

  1. Запросить ключ OpenAI у платформы (1 день).
  2. Получить ключ, прописать его в Secrets (полдня).
  3. Написать клиент с retries, exponential backoff, тайм-аутами (1 день).
  4. Прикрутить корпоративные метрики и трейсы (1 день).
  5. Добавить кэш в Redis для повторяющихся запросов (2 дня).
  6. Сделать review безопасности, согласовать с финансами (3 дня).

Итого: много кода который надо поддерживать, отладка, релиз через несколько дней.

С Meridian:

  1. Лид команды через UI выпускает Virtual Key с бюджетом и rate limit (5 минут).
  2. Разработчик пишет:
    from openai import OpenAI
    client = OpenAI(base_url="https://meridian/v1", api_key=VK)
    client.chat.completions.create(model="openai/gpt-4o-mini", messages=[...])
  3. С первого запроса работают retries, fallback-цепочка (если задана в fallbacks), семантический кэш, метрики, бюджет, логирование.

Итого: ~день до первого продакшен-вызова.

Конфигурация

Для команды-потребителя единственное действие — получить от платформы VK и подставить его в base_url/api_key приложения.

Для платформенной команды первичная настройка делается один раз:

  1. Providers — подключить провайдеров (OpenAI, Anthropic, Bedrock).
  2. Settings → Cache — включить семантический кэш с подходящим vector store (Redis/Qdrant/Weaviate).
  3. Settings → Logging — включить логирование (postgres backend).
  4. Observability — включить Prometheus и OpenTelemetry.

После этого каждая новая команда получает VK через портал самообслуживания и сразу пользуется всеми возможностями.

Минимальный код приложения (Python, существующий openai SDK):

from openai import OpenAI

client = OpenAI(
    base_url="https://meridian/v1",
    api_key="sk-bf-alpha-prod"
)

response = client.chat.completions.create(
    model="openai/gpt-4o-mini",
    messages=[{"role": "user", "content": "Сгенерируй title для заметки..."}],
    extra_body={
        "fallbacks": ["anthropic/claude-3-5-sonnet-20241022"]
    }
)

TypeScript (Vercel AI SDK или OpenAI SDK):

import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://meridian/v1",
  apiKey: process.env.MERIDIAN_VK!,
});

const completion = await client.chat.completions.create({
  model: "openai/gpt-4o-mini",
  messages: [{ role: "user", content: "..." }],
});

curl:

curl -X POST https://meridian/v1/chat/completions \
  -H "Authorization: Bearer sk-bf-alpha-prod" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openai/gpt-4o-mini",
    "messages": [{"role": "user", "content": "..."}]
  }'

Платформенная конфигурация, которая делает всё перечисленное «из коробки»:

{
  "client": {
    "enable_logging": true,
    "enforce_auth_on_inference": true
  },
  "providers": {
    "openai":    { "keys": [ { "id": "k1", "value": "env.OPENAI_API_KEY",    "models": ["*"], "weight": 1.0 } ] },
    "anthropic": { "keys": [ { "id": "k1", "value": "env.ANTHROPIC_API_KEY", "models": ["*"], "weight": 1.0 } ] }
  },
  "vector_store": {
    "type": "redis",
    "config": { "address": "env.REDIS_ADDR" }
  },
  "plugins": {
    "semantic_cache": {
      "enabled": true,
      "ttl_seconds": 3600,
      "similarity_threshold": 0.95
    },
    "prometheus": { "enabled": true },
    "otel":       { "enabled": true, "endpoint": "env.OTEL_EXPORTER_OTLP_ENDPOINT" }
  },
  "logs_store": {
    "type": "postgres",
    "config": { "dsn": "env.LOGS_DB_DSN" }
  }
}

Связанные материалы

Содержание