Files
pet-project-server/files/bifrost/config.template.json
T
av 41284ed33f bifrost: добавлен провайдер bothub и срок хранения логов
- bothub заведён custom-провайдером (base_provider_type openai, адрес без /v1):
  из него ходит diet, нативному DeepSeek снимки еды не по силам
- client.log_retention_days = 30: тело запроса пишется в logs.db целиком,
  снимок в 2500 px даёт запись около 911 КБ
2026-09-06 11:50:29 +03:00

81 lines
4.8 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{# Конфиг Bifrost ИСТОЧНИК ПРАВДЫ. Рендерится в config_dir/config.json (app-dir
Bifrost смонтирован на /app/data), Bifrost читает его при старте.
source_of_truth=config.json: на каждом старте секции этого файла авторитетно
перезаписывают состояние в config.db (git выигрывает у правок через UI).
Раскладка каталогов (по требованию «конфиги/данные раздельно»):
- config_dir -> /app/data : сам config.json (app-dir Bifrost по умолчанию);
- data_dir -> /app/store : config.db + logs.db (пути заданы явно ниже).
Несекретные настройки (base URL провайдера, имя модели) заданы здесь прямо
строками они больше нигде не переиспользуются. Секреты (ключ DeepSeek,
encryption_key) рендерятся строками из vars/secrets.yml, поэтому готовый
config.json секретный файл (плейбук пишет его на 0600).
DeepSeek с v1.6.3 НАТИВНЫЙ провайдер Bifrost (dedicated request handling,
thinking-mode gating, корректные reasoning-поля для v4-моделей issue #3139):
не нужны ни custom_provider_config, ни base_url (дефолт api.deepseek.com).
bothub агрегатор, нативным провайдером Bifrost не является: заводится custom
с base_provider_type=openai и своим base_url. Адрес указывается БЕЗ /v1
версию шлюз дописывает сам. Из него ходит diet: vision-модель читает снимки
еды (нативному DeepSeek такое не по силам), текстовая сводит позиции.
log_retention_days=30 в client: тело запроса пишется в logs.db целиком, а
снимок в 2500 px даёт запись около 911 КБ порядка 0,9 ГБ в месяц. Месяц
выбран потому, что отладка промпта смотрит на вчерашние запросы. Документированный
logs_store.retention_days для SQLite не делает ничего он про ClickHouse.
После чистки файл не уменьшается: auto_vacuum выключен, место переиспользуется.
Роутинг правилами больше не нужен: клиенты шлют имя модели с префиксом
провайдера (tududi deepseek/deepseek-v4-pro на drop-in эндпоинт /openai),
Bifrost резолвит провайдера сам. Раньше здесь жило правило, подменявшее
захардкоженное у tududi gpt-4o-mini; с tududi 1.3.1 модель задаётся переменной.
routing_rules оставлен ПУСТЫМ МАССИВОМ, а не удалён: при source_of_truth=config.json
авторитетно перезаписываются только присутствующие секции, а отсутствующие
оставляют строки в config.db нетронутыми удали ключ, и старое правило
продолжило бы жить в БД (config.go, isGovernanceSectionPresent).
Эти Jinja-комментарии в готовый config.json не попадают (на выходе чистый JSON). #}
{
"$schema": "https://www.getbifrost.ai/schema",
"encryption_key": {{ bifrost_encryption_key | to_json }},
"source_of_truth": "config.json",
"client": {
"enable_logging": true,
"log_retention_days": 30
},
"providers": {
"deepseek": {
"keys": [
{ "name": "deepseek-primary", "value": {{ bifrost_deepseek_api_key | to_json }}, "models": ["*"], "weight": 1.0 }
],
"network_config": { "max_retries": 2 }
},
"bothub": {
"keys": [
{ "name": "bothub-primary", "value": {{ bifrost_bothub_api_key | to_json }}, "models": ["*"], "weight": 1.0 }
],
"custom_provider_config": {
"base_provider_type": "openai",
"allowed_requests": { "chat_completion": true, "list_models": true }
},
"network_config": { "base_url": "https://openai.bothub.chat", "max_retries": 1 }
}
},
"config_store": {
"enabled": true,
"type": "sqlite",
"config": { "path": "/app/store/config.db" }
},
"logs_store": {
"enabled": true,
"type": "sqlite",
"config": { "path": "/app/store/logs.db" }
},
"governance": {
"routing_rules": []
}
}