Spaces:
Running
on
T4
Running
on
T4
import os | |
from typing import Dict, Any | |
from dotenv import load_dotenv | |
# تحميل متغيرات البيئة من ملف .env | |
load_dotenv() | |
# إعدادات عامة | |
APP_NAME = "نظام تحليل المناقصات" | |
APP_VERSION = "1.0.0" | |
DEBUG = os.getenv("DEBUG", "False").lower() in ("true", "1", "t") | |
# مسارات الملفات | |
DATA_DIR = os.getenv("DATA_DIR", "data") | |
TEMPLATES_DIR = os.path.join(DATA_DIR, "templates") | |
VECTOR_DB_DIR = os.path.join(DATA_DIR, "vector_db") | |
OUTPUT_DIR = os.getenv("OUTPUT_DIR", "output") | |
LOGS_DIR = os.getenv("LOGS_DIR", "logs") | |
# التأكد من وجود المجلدات | |
for directory in [DATA_DIR, TEMPLATES_DIR, VECTOR_DB_DIR, OUTPUT_DIR, LOGS_DIR]: | |
os.makedirs(directory, exist_ok=True) | |
# إعدادات API | |
API_KEYS = { | |
"ANTHROPIC_API_KEY": os.getenv("ANTHROPIC_API_KEY"), | |
"MUNAFASAT_API_KEY": os.getenv("MUNAFASAT_API_KEY"), | |
"ETIMAD_API_KEY": os.getenv("ETIMAD_API_KEY"), | |
"BALADY_API_KEY": os.getenv("BALADY_API_KEY") | |
} | |
# إعدادات نماذج الذكاء الاصطناعي | |
AI_MODELS = { | |
"default_llm": os.getenv("DEFAULT_LLM", "claude-3-haiku-20240307"), | |
"use_rag": os.getenv("USE_RAG", "True").lower() in ("true", "1", "t"), | |
"embedding_model": os.getenv("EMBEDDING_MODEL", "huggingface/arabic-embedding-base") | |
} | |
# إعدادات المحتوى المحلي | |
LOCAL_CONTENT = { | |
"min_percentage": { | |
"الإنشاءات": 30, | |
"تقنية المعلومات": 25, | |
"عام": 20 | |
}, | |
"target_percentage": { | |
"الإنشاءات": 60, | |
"تقنية المعلومات": 50, | |
"عام": 40 | |
} | |
} | |
# إعدادات واجهة المستخدم | |
UI_SETTINGS = { | |
"theme": os.getenv("UI_THEME", "light"), | |
"language": os.getenv("UI_LANGUAGE", "ar"), | |
"page_size": int(os.getenv("UI_PAGE_SIZE", "10")), | |
"charts_theme": os.getenv("UI_CHARTS_THEME", "blue") | |
} | |
# إعدادات قاعدة البيانات | |
DB_SETTINGS = { | |
"vector_db": { | |
"path": VECTOR_DB_DIR, | |
"dimension": 384, | |
"similarity_threshold": 0.75 | |
} | |
} | |
# وظيفة للحصول على إعدادات محددة | |
def get_config(section: str = None) -> Dict[str, Any]: | |
""" | |
الحصول على إعدادات محددة أو جميع الإعدادات | |
المعاملات: | |
---------- | |
section : str, optional | |
اسم قسم الإعدادات المطلوب (افتراضي: None = جميع الإعدادات) | |
المخرجات: | |
-------- | |
Dict[str, Any] | |
الإعدادات المطلوبة | |
""" | |
config = { | |
"app": { | |
"name": APP_NAME, | |
"version": APP_VERSION, | |
"debug": DEBUG | |
}, | |
"paths": { | |
"data_dir": DATA_DIR, | |
"templates_dir": TEMPLATES_DIR, | |
"vector_db_dir": VECTOR_DB_DIR, | |
"output_dir": OUTPUT_DIR, | |
"logs_dir": LOGS_DIR | |
}, | |
"api_keys": API_KEYS, | |
"ai_models": AI_MODELS, | |
"local_content": LOCAL_CONTENT, | |
"ui": UI_SETTINGS, | |
"db": DB_SETTINGS | |
} | |
if section: | |
return config.get(section, {}) | |
return config |