Добавлен автоподбор моделей для задач DevConsole

Этот коммит содержится в:
Виктор
2026-05-11 22:22:44 +09:00
родитель dde6818480
Коммит 1331dcc2e4
+56
Просмотреть файл
@@ -0,0 +1,56 @@
from enum import Enum
from backend.config_store import get_setting
class TaskType(str, Enum):
GENERAL = 'general'
CODING = 'coding'
SERVER = 'server'
ANDROID = 'android'
TEST = 'test'
CHEAP = 'cheap'
DEFAULT_MODELS = {
'default': 'gpt-5',
'coding': 'gpt-5',
'cheap': 'gpt-5-mini',
}
def get_model_profile() -> dict:
return {
'default': get_setting('OPENAI_MODEL_DEFAULT') or get_setting('OPENAI_MODEL') or DEFAULT_MODELS['default'],
'coding': get_setting('OPENAI_MODEL_CODING') or DEFAULT_MODELS['coding'],
'cheap': get_setting('OPENAI_MODEL_CHEAP') or DEFAULT_MODELS['cheap'],
}
def choose_model(task_type: str | None = None, prompt: str = '') -> str:
profile = get_model_profile()
normalized_type = (task_type or '').strip().lower()
text = prompt.lower()
if normalized_type in {TaskType.CODING, TaskType.SERVER, TaskType.ANDROID, TaskType.TEST}:
return profile['coding']
if normalized_type == TaskType.CHEAP:
return profile['cheap']
coding_markers = [
'код', 'ошибка', 'traceback', 'exception', 'pytest', 'php', 'python', 'fastapi',
'android', 'flutter', 'gradle', 'apk', 'server', 'docker', 'nginx', 'systemd',
'build', 'test', 'fix', 'refactor', 'repository', 'git', 'api', 'sql'
]
cheap_markers = [
'кратко', 'название', 'заголовок', 'переведи', 'summary', 'classify'
]
if any(marker in text for marker in coding_markers):
return profile['coding']
if len(text) < 500 and any(marker in text for marker in cheap_markers):
return profile['cheap']
return profile['default']