AI-модель tududi задаётся явно, правило роутинга в bifrost убрано

- с tududi 1.3.1 модель берётся из LLM_MODEL, а не захардкожена — шлём
  deepseek/deepseek-v4-pro, Bifrost резолвит провайдера по префиксу
- ключ и base URL переведены на пару LLM_*, приоритетную над OPENAI_*
- routing_rules оставлен пустым массивом, а не удалён: при
  source_of_truth=config.json отсутствующая секция не трогает строки в config.db
This commit is contained in:
av
2026-08-06 10:00:47 +03:00
parent a09f3c629e
commit 85ebeb4197
2 changed files with 17 additions and 23 deletions
+10 -18
View File
@@ -16,11 +16,15 @@
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 не трогаем.
Роутинг правилами больше не нужен: клиенты шлют имя модели с префиксом
провайдера (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). #}
{
@@ -49,18 +53,6 @@
"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
}
]
"routing_rules": []
}
}
+7 -5
View File
@@ -69,11 +69,13 @@ services:
- FF_ENABLE_MCP=true
# AI-фичи через Bifrost (drop-in OpenAI-эндпоинт в общей сети — НЕ localhost,
# это сам контейнер). Модель у tududi захардкожена как gpt-4o-mini; Bifrost
# по governance-правилу роутит её на deepseek-v4-pro. openai-node сам
# подхватывает OPENAI_BASE_URL.
- OPENAI_API_KEY={{ tududi_openai_api_key }}
- OPENAI_BASE_URL=http://bifrost_app:8080/openai
# это сам контейнер). С 1.3.1 модель задаётся переменной, а не захардкожена,
# поэтому шлём deepseek/deepseek-v4-pro сразу: Bifrost резолвит провайдера по
# префиксу, и подменять модель governance-правилом больше не нужно.
# Пара LLM_* имеет приоритет над устаревшей OPENAI_*, значения те же.
- LLM_API_KEY={{ tududi_openai_api_key }}
- LLM_BASE_URL=http://bifrost_app:8080/openai
- LLM_MODEL=deepseek/deepseek-v4-pro
networks:
web_proxy_network: