From 4f5a8d140073b4ad4d074e12afe71d0726bad14a Mon Sep 17 00:00:00 2001 From: Ivan Gerasimov Date: Thu, 17 Sep 2026 13:43:15 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BA=D0=BE=D0=BD=D1=84=D0=B8=D0=B3:=20=D0=B0?= =?UTF-8?q?=D0=B4=D1=80=D0=B5=D1=81=20OpenAI-=D1=81=D0=BE=D0=B2=D0=BC?= =?UTF-8?q?=D0=B5=D1=81=D1=82=D0=B8=D0=BC=D0=BE=D0=B3=D0=BE=20=D0=BF=D1=80?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0=D0=B9=D0=B4=D0=B5=D1=80=D0=B0=20LLM?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Добавлен LLM_BASE_URL — без него не подключить Cloud.ru Foundation Models и любой другой OpenAI-совместимый шлюз. Имена COMPAT_MODEL_* принимаются тоже, так их выставляет командный сниппет. Ключ в repr настроек скрыт. --- backend/app/config.py | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/backend/app/config.py b/backend/app/config.py index ed37bf1..d27e0ba 100644 --- a/backend/app/config.py +++ b/backend/app/config.py @@ -2,6 +2,7 @@ from functools import lru_cache +from pydantic import AliasChoices, Field from pydantic_settings import BaseSettings, SettingsConfigDict from app.domain.timers import NORMATIVES, TimerCode @@ -22,10 +23,21 @@ class Settings(BaseSettings): offline: bool = False # LLM. Провайдер меняется значением, не кодом (docs/arch/STACK.md). - llm_provider: str = "gigachat" - llm_api_key: str = "" - llm_model_caller: str = "" - llm_model_judge: str = "" + # Имена COMPAT_MODEL_* принимаются тоже — так их выставляет командный сниппет. + llm_provider: str = "openai_compatible" + llm_base_url: str = Field( + default="", validation_alias=AliasChoices("llm_base_url", "compat_model_url") + ) + llm_api_key: str = Field( + default="", validation_alias=AliasChoices("llm_api_key", "compat_model_api_key"), + repr=False, + ) + llm_model_caller: str = Field( + default="", validation_alias=AliasChoices("llm_model_caller", "compat_model_name") + ) + llm_model_judge: str = Field( + default="", validation_alias=AliasChoices("llm_model_judge", "compat_model_name") + ) judge_temperature: float = 0.0 # Нормативы: переопределяют значения по умолчанию из domain/timers.py