Update 5 files
- /rag/config_models.py - /rag/utils/config_loader.py - /rag/rag_orchestrator.py - /rag/rag_server.py - /rag/rag_api.py
This commit is contained in:
@@ -9,14 +9,11 @@ import os
|
||||
import yaml
|
||||
import logging
|
||||
from pathlib import Path
|
||||
from typing import Optional, Dict, Any
|
||||
from typing import Dict, Any
|
||||
|
||||
from dotenv import load_dotenv
|
||||
|
||||
from .config_models import AppConfig, DatabaseConfig, QdrantConfig, GigaChatConfig, \
|
||||
EmbeddingConfig, ChunkingConfig, RAGConfig, HTTPServerConfig, HTTPConfig, \
|
||||
SummarizationConfig, PathsConfig, FeaturesConfig, CleanupConfig, FilePermissionsConfig, \
|
||||
AIConfig, PromptsConfig, PromptTemperatures
|
||||
from ..config_models import AppConfig
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
@@ -66,16 +63,13 @@ def load_config(profile_dir: str) -> AppConfig:
|
||||
}
|
||||
|
||||
# Подставляем пароли и ключи в секции
|
||||
# В database: password_env -> фактический пароль
|
||||
if 'database' in merged and 'password_env' in merged['database']:
|
||||
env_name = merged['database']['password_env']
|
||||
merged['database']['password'] = env_vars.get(env_name)
|
||||
if not merged['database']['password']:
|
||||
raise ValueError(f"Переменная окружения {env_name} не задана или пуста")
|
||||
# удаляем password_env, чтобы не передавать в модель
|
||||
del merged['database']['password_env']
|
||||
|
||||
# Аналогично для gigachat
|
||||
if 'gigachat' in merged and 'credentials_env' in merged['gigachat']:
|
||||
env_name = merged['gigachat']['credentials_env']
|
||||
merged['gigachat']['api_key'] = env_vars.get(env_name)
|
||||
@@ -83,7 +77,6 @@ def load_config(profile_dir: str) -> AppConfig:
|
||||
raise ValueError(f"Переменная окружения {env_name} не задана или пуста")
|
||||
del merged['gigachat']['credentials_env']
|
||||
|
||||
# Для XMPP пароля
|
||||
if 'password_env' in merged:
|
||||
env_name = merged['password_env']
|
||||
merged['xmpp_password'] = env_vars.get(env_name)
|
||||
@@ -91,30 +84,30 @@ def load_config(profile_dir: str) -> AppConfig:
|
||||
raise ValueError(f"Переменная окружения {env_name} не задана или пуста")
|
||||
del merged['password_env']
|
||||
|
||||
# Для SaluteSpeech (если есть в секции features или отдельно)
|
||||
# У нас он может быть в .env, но в модели нет отдельного поля; добавим в итоговый объект
|
||||
merged['salute_speech_auth'] = env_vars.get('SALUTE_SPEECH_AUTH')
|
||||
|
||||
# Преобразуем пути в абсолютные с учётом profile_dir
|
||||
paths_section = merged.get('paths', {})
|
||||
# Если пути относительные, дополняем их относительно profile_dir
|
||||
for key in ['data_dir', 'temp_dir', 'prompts_dir', 'upload_dir', 'log_dir']:
|
||||
if key in paths_section:
|
||||
p = Path(paths_section[key])
|
||||
if not p.is_absolute():
|
||||
paths_section[key] = str(profile_path / p)
|
||||
# log_filename оставляем как есть
|
||||
|
||||
# Добавляем profile_dir в merged для передачи в модель
|
||||
# Добавляем profile_dir
|
||||
merged['profile_dir'] = str(profile_path)
|
||||
|
||||
# Создаём экземпляр AppConfig (Pydantic выполнит валидацию)
|
||||
# Добавляем web_scraper (если отсутствует)
|
||||
if 'web_scraper' not in merged:
|
||||
merged['web_scraper'] = {'max_pages': 5, 'max_depth': 1}
|
||||
|
||||
# Создаём экземпляр AppConfig
|
||||
try:
|
||||
config = AppConfig(**merged)
|
||||
except Exception as e:
|
||||
raise ValueError(f"Ошибка валидации конфигурации: {e}")
|
||||
|
||||
# Дополнительно загружаем промпты из файлов
|
||||
# Загружаем промпты из файлов
|
||||
prompts_dir = config.prompts_dir_path
|
||||
if prompts_dir and prompts_dir.exists():
|
||||
prompts_content = {}
|
||||
|
||||
Reference in New Issue
Block a user