Files
av 94d070b219
Linting / YAML Lint (push) Has been cancelled
Linting / Ansible Lint (push) Has been cancelled
Bifrost: update to 1.6.3
with native deepseek provider
2026-07-07 09:00:21 +03:00

67 lines
3.3 KiB
JSON
Raw Permalink 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).
Роутинг декларативно через governance.routing_rules (требует включённого
config_store). tududi ходит на drop-in эндпоинт /openai и шлёт ЗАХАРДКОЖЕННОЕ
имя модели gpt-4o-mini «голым». Правило ловит его по cel и подменяет на
реальную модель deepseek/deepseek-v4-pro. Фолбэка нет единственный провайдер.
Чтобы сменить бэкенд-модель, правим ТОЛЬКО этот файл, конфиг tududi не трогаем.
Эти Jinja-комментарии в готовый config.json не попадают (на выходе чистый JSON). #}
{
"$schema": "https://www.getbifrost.ai/schema",
"encryption_key": {{ bifrost_encryption_key | to_json }},
"client": {
"enable_logging": true
},
"providers": {
"deepseek": {
"keys": [
{ "name": "deepseek-primary", "value": {{ bifrost_deepseek_api_key | to_json }}, "models": ["*"], "weight": 1.0 }
],
"network_config": { "max_retries": 2 }
}
},
"config_store": {
"enabled": true,
"type": "sqlite",
"config": { "path": "/app/store/config.db" },
"source_of_truth": "config.json"
},
"logs_store": {
"enabled": true,
"type": "sqlite",
"config": { "path": "/app/store/logs.db" }
},
"governance": {
"routing_rules": [
{
"id": "tududi-gpt4omini-to-deepseek-pro",
"name": "Tududi gpt-4o-mini -> DeepSeek v4 Pro",
"enabled": true,
"cel_expression": "model == 'gpt-4o-mini'",
"targets": [
{ "provider": "deepseek", "model": "deepseek-v4-pro", "weight": 1 }
],
"scope": "global",
"priority": 0
}
]
}
}