v1.5.3
Накопительный релиз с настраиваемыми политиками резервирования бюджета, явным сбросом бюджетов и серией исправлений учёта расходов.
Что добавлено
Настраиваемые политики резервирования бюджета
Появилась глобальная секция governance.reservation в config.json, которая задаёт сколько именно Meridian резервирует на этапе RESERVE. Три режима:
- Flat $0.05 (по умолчанию) — фиксированная сумма на запрос, высокая пропускная способность для параллельных вызовов.
- Worst-case — каталожная верхняя оценка стоимости, строгий контроль перерасхода.
- Disabled (sentinel) — отключённое резервирование, отказы только пост-фактум.
Поддерживаются переопределения по моделям через glob-шаблоны: например, flat-резерв на дешёвые модели и worst-case на премиум-классы (claude-opus-*, gpt-4o) одновременно.
Подробнее — в разделе Политики резервирования бюджета.
Явный сброс бюджетов и календарное выравнивание
Появилась опция calendar_aligned: true для бюджетов с интервалами сброса 1d, 1w, 1M, 1Y — сброс происходит ровно в начале календарного периода в UTC, одинаково для всех клиентов с этой настройкой.
Подробнее — в разделе Бюджеты и лимиты → Calendar-aligned бюджеты.
Anthropic Claude Opus 4.7 и связанные обновления ядра
Поддержка Claude Opus 4.7: режим summarized для reasoning-вывода по умолчанию, корректная конверсия tool_choice для Bedrock в режим auto, обновлённые зависимости для трассировки длинных streamed-ответов.
Embeddings через OpenRouter
OpenRouter теперь поддерживается как провайдер embeddings (помимо chat completions). Единая VK-конфигурация перекрывает оба типа запросов без отдельного провайдера для embeddings.
Azure OpenAI passthrough
Добавлена сквозная поддержка Azure OpenAI: запросы можно отправлять в нативном Azure-формате через /azure/openai/*-пути без преобразования в OpenAI-совместимый формат.
Документация
В разделе Использование появились страницы со сценариями (multi-provider routing, fallbacks по бюджету, semantic caching, governance для AI SaaS). API-схема и config.json-схема собираются автоматически из исходников при каждом релизе документации.
Что исправлено
Учёт расходов для очень долгих запросов (главное исправление 1.5.3)
Запросы, длительность которых превышала cluster_config.raft.reservation_ttl, могли быть не учтены в бюджете.
Исправление: reservation_ttl по умолчанию увеличен до 1 часа, что покрывает любой реальный запрос.
Принцип: каждое резервирование завершается списанием — actualCost когда известен, MaxCost когда нет.
Тихие потери списаний (Defects A + B)
Две регрессии в shard-обходе governance-слоя приводили к тому, что часть успешных запросов не доходила до RaftGroup при выборе шарда:
- Defect A — пропуск инкремента счётчика usage при отсутствии actualCost (например, для image-generation, где token-usage отсутствует).
- Defect B —
EstimateMaxCost == 0блокировалReserveBudgetдля non-text request типов, что обнуляло учёт image, TTS и embedding-вызовов.
Исправлены оба пути; добавлена трёхуровневая логика в EstimateMaxCost (Tier 1 catalog, Tier 2 per-request-type, Tier 3 резерв).
Валидация владения VK и тип SQLite
Форма редактирования виртуального ключа в Web UI не пропускала корректные edit-операции при определённых сочетаниях ownership-флагов; параллельно багфикс в драйвере SQLite (некорректная сериализация некоторых nullable-полей).
Бухгалтерия per-shard и кластерные правки
- Settled-only accounting:
CurrentUsageтеперь хранит только финализированные суммы; pending-reservations считаются отдельно. Исключает отображение резервов в UI и API. - Календарное выравнивание (
CalendarAligned+ResetDurationStr) теперь корректно переносится через snapshot-восстановление и миграцию команд между шардами.
Прочие исправления
- Bedrock: корректная конверсия
tool_choice: required→autoпри отсутствии прямого аналога в Bedrock API. - MCP: исправлены логи выполнения MCP-инструментов при ошибках клиента.
- Auth (frontend): добавлены guard-проверки и корректный редирект на страницу входа.
Обновление с 1.4.16
Миграции не требуется, внутренние миграции отсутствуют.