Update 9 files

- /rag/config_models.py
- /rag/utils/config_loader.py
- /rag/auth.py
- /rag/rag_server.py
- /rag/rag_api.py
- /rag/rag_orchestrator.py
- /rag/__init__.py
- /bots/xmpp/client.py
- /bots/rag_client.py
This commit is contained in:
Markov Andrey
2026-06-30 14:27:34 +00:00
parent 068504c988
commit 59feffc190
9 changed files with 180 additions and 179 deletions

View File

@@ -174,6 +174,11 @@ class WebScraperConfig(BaseModel):
max_depth: int = Field(1, description="Максимальная глубина рекурсии")
class AuthConfig(BaseModel):
"""Настройки аутентификации."""
api_key_env: str = Field("RAG_API_KEY", description="Имя переменной окружения с API-ключом для доступа к RAG-серверу")
# ============================================================
# Главная модель конфигурации приложения
# ============================================================
@@ -213,6 +218,7 @@ class AppConfig(BaseModel):
ai: AIConfig
prompts: PromptsConfig
web_scraper: WebScraperConfig = Field(default_factory=WebScraperConfig)
auth: AuthConfig = Field(default_factory=AuthConfig)
# Дополнительные поля для путей (заполняются при загрузке)
profile_dir: Optional[Path] = Field(None, description="Корень профиля")
@@ -226,11 +232,17 @@ class AppConfig(BaseModel):
# Промпты (загружаются из файлов)
prompts_content: Optional[Dict[str, str]] = Field(default_factory=dict, description="Содержимое промптов")
# Приватное поле для API-ключа RAG (не сериализуется)
_rag_api_key: Optional[str] = Field(None, description="API-ключ RAG-сервера", exclude=True)
# ------------------------------------------------------------------
# Прокси-свойства для обратной совместимости со старым BotConfig
# ------------------------------------------------------------------
# База данных
@property
def rag_api_key(self) -> Optional[str]:
return self._rag_api_key
@property
def db_host(self) -> str:
return self.database.host
@@ -259,7 +271,6 @@ class AppConfig(BaseModel):
def db_ssl_mode(self) -> Optional[str]:
return self.database.ssl_mode
# Qdrant
@property
def qdrant_host(self) -> str:
return self.qdrant.host
@@ -284,7 +295,6 @@ class AppConfig(BaseModel):
def qdrant_distance(self) -> str:
return self.qdrant.distance
# GigaChat
@property
def gigachat_api_key(self) -> Optional[str]:
return self.gigachat.api_key
@@ -305,7 +315,6 @@ class AppConfig(BaseModel):
def gigachat_temperature(self) -> float:
return self.gigachat.temperature
# Embedding
@property
def embedding_cache_size(self) -> int:
return self.embedding.cache_size
@@ -322,7 +331,6 @@ class AppConfig(BaseModel):
def embedding_verify_ssl(self) -> bool:
return self.embedding.verify_ssl_certs
# Chunking
@property
def chunking_enabled(self) -> bool:
return self.chunking.enabled
@@ -347,7 +355,6 @@ class AppConfig(BaseModel):
def chunking_approx_overlap_chars(self) -> int:
return self.chunking.approx_overlap_chars
# RAG
@property
def rag_default_top_k(self) -> int:
return self.rag.default_top_k
@@ -380,7 +387,6 @@ class AppConfig(BaseModel):
def rerank_min_length(self) -> int:
return self.rag.rerank_min_length
# HTTP
@property
def http_download_timeout(self) -> int:
return self.http.download_timeout
@@ -389,7 +395,6 @@ class AppConfig(BaseModel):
def http_upload_timeout(self) -> int:
return self.http.upload_timeout
# Features
@property
def file_processing(self) -> bool:
return self.features.file_processing
@@ -442,7 +447,6 @@ class AppConfig(BaseModel):
def mention_keyword(self) -> Optional[str]:
return self.features.mention_keyword
# AI
@property
def ai_model(self) -> str:
return self.ai.model or self.gigachat.model_generation
@@ -455,7 +459,6 @@ class AppConfig(BaseModel):
def ai_timeout(self) -> int:
return self.ai.timeout
# Cleanup
@property
def temp_cleanup_days(self) -> int:
return self.cleanup.temp_days
@@ -472,7 +475,6 @@ class AppConfig(BaseModel):
def user_data_cleanup_days(self) -> int:
return self.cleanup.user_data_days
# Web scraper
@property
def ws_max_pages(self) -> int:
return self.web_scraper.max_pages
@@ -481,7 +483,6 @@ class AppConfig(BaseModel):
def ws_max_depth(self) -> int:
return self.web_scraper.max_depth
# Prompts temperatures
@property
def intent_temperature(self) -> float:
return self.prompts.intent.temperature
@@ -522,7 +523,6 @@ class AppConfig(BaseModel):
def generate_document_temperature(self) -> float:
return self.prompts.generate_document.temperature
# File permissions
@property
def file_mode(self) -> int:
return int(self.file_permissions.mode, 8)