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:
@@ -16,11 +16,15 @@
|
|||||||
thinking-mode gating, корректные reasoning-поля для v4-моделей — issue #3139):
|
thinking-mode gating, корректные reasoning-поля для v4-моделей — issue #3139):
|
||||||
не нужны ни custom_provider_config, ни base_url (дефолт api.deepseek.com).
|
не нужны ни custom_provider_config, ни base_url (дефолт api.deepseek.com).
|
||||||
|
|
||||||
Роутинг — декларативно через governance.routing_rules (требует включённого
|
Роутинг правилами больше не нужен: клиенты шлют имя модели с префиксом
|
||||||
config_store). tududi ходит на drop-in эндпоинт /openai и шлёт ЗАХАРДКОЖЕННОЕ
|
провайдера (tududi — deepseek/deepseek-v4-pro на drop-in эндпоинт /openai),
|
||||||
имя модели gpt-4o-mini «голым». Правило ловит его по cel и подменяет на
|
Bifrost резолвит провайдера сам. Раньше здесь жило правило, подменявшее
|
||||||
реальную модель deepseek/deepseek-v4-pro. Фолбэка нет — единственный провайдер.
|
захардкоженное у tududi gpt-4o-mini; с tududi 1.3.1 модель задаётся переменной.
|
||||||
Чтобы сменить бэкенд-модель, правим ТОЛЬКО этот файл, конфиг tududi не трогаем.
|
|
||||||
|
routing_rules оставлен ПУСТЫМ МАССИВОМ, а не удалён: при source_of_truth=config.json
|
||||||
|
авторитетно перезаписываются только присутствующие секции, а отсутствующие
|
||||||
|
оставляют строки в config.db нетронутыми — удали ключ, и старое правило
|
||||||
|
продолжило бы жить в БД (config.go, isGovernanceSectionPresent).
|
||||||
|
|
||||||
Эти Jinja-комментарии в готовый config.json не попадают (на выходе чистый JSON). #}
|
Эти Jinja-комментарии в готовый config.json не попадают (на выходе чистый JSON). #}
|
||||||
{
|
{
|
||||||
@@ -49,18 +53,6 @@
|
|||||||
"config": { "path": "/app/store/logs.db" }
|
"config": { "path": "/app/store/logs.db" }
|
||||||
},
|
},
|
||||||
"governance": {
|
"governance": {
|
||||||
"routing_rules": [
|
"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
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -69,11 +69,13 @@ services:
|
|||||||
- FF_ENABLE_MCP=true
|
- FF_ENABLE_MCP=true
|
||||||
|
|
||||||
# AI-фичи через Bifrost (drop-in OpenAI-эндпоинт в общей сети — НЕ localhost,
|
# AI-фичи через Bifrost (drop-in OpenAI-эндпоинт в общей сети — НЕ localhost,
|
||||||
# это сам контейнер). Модель у tududi захардкожена как gpt-4o-mini; Bifrost
|
# это сам контейнер). С 1.3.1 модель задаётся переменной, а не захардкожена,
|
||||||
# по governance-правилу роутит её на deepseek-v4-pro. openai-node сам
|
# поэтому шлём deepseek/deepseek-v4-pro сразу: Bifrost резолвит провайдера по
|
||||||
# подхватывает OPENAI_BASE_URL.
|
# префиксу, и подменять модель governance-правилом больше не нужно.
|
||||||
- OPENAI_API_KEY={{ tududi_openai_api_key }}
|
# Пара LLM_* имеет приоритет над устаревшей OPENAI_*, значения те же.
|
||||||
- OPENAI_BASE_URL=http://bifrost_app:8080/openai
|
- LLM_API_KEY={{ tududi_openai_api_key }}
|
||||||
|
- LLM_BASE_URL=http://bifrost_app:8080/openai
|
||||||
|
- LLM_MODEL=deepseek/deepseek-v4-pro
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
web_proxy_network:
|
web_proxy_network:
|
||||||
|
|||||||
Reference in New Issue
Block a user