- с tududi 1.3.1 модель берётся из LLM_MODEL, а не захардкожена — шлём deepseek/deepseek-v4-pro, Bifrost резолвит провайдера по префиксу - ключ и base URL переведены на пару LLM_*, приоритетную над OPENAI_* - routing_rules оставлен пустым массивом, а не удалён: при source_of_truth=config.json отсутствующая секция не трогает строки в config.db
59 lines
3.3 KiB
JSON
59 lines
3.3 KiB
JSON
{# Конфиг 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).
|
||
|
||
Роутинг правилами больше не нужен: клиенты шлют имя модели с префиксом
|
||
провайдера (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
|
||
},
|
||
"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" }
|
||
},
|
||
"logs_store": {
|
||
"enabled": true,
|
||
"type": "sqlite",
|
||
"config": { "path": "/app/store/logs.db" }
|
||
},
|
||
"governance": {
|
||
"routing_rules": []
|
||
}
|
||
}
|