File size: 3,369 Bytes
11a8951
ac35688
 
 
 
 
 
 
 
 
 
 
 
 
 
44b65e5
ac35688
11a8951
ac35688
 
 
 
 
 
11a8951
0990d08
ac35688
 
 
 
 
 
 
 
 
 
 
0990d08
ac35688
dfce113
 
 
08ef0df
dfce113
 
 
ac35688
 
08ef0df
ac35688
 
 
 
dfce113
44b65e5
ac35688
 
 
 
 
0990d08
 
 
 
 
ac35688
 
0990d08
 
 
ac35688
 
0990d08
08ef0df
44b65e5
08ef0df
 
44b65e5
11a8951
0990d08
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# FILE: modules/config_settings_public.py (Definitive Final Version 3 - Corrected Gemma Repo ID)

import os
import sys
import logging
from huggingface_hub import hf_hub_download

logger = logging.getLogger("ZOTHEOS_Config")
if not logger.handlers:
    handler = logging.StreamHandler(sys.stdout)
    formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - [%(funcName)s] - %(message)s')
    handler.setFormatter(formatter)
    logger.addHandler(handler)
    logger.setLevel(logging.INFO)

IS_WEB_MODE = os.path.exists("/home/user/app")

# --- βœ…βœ…βœ… CORRECTED GEMMA REPO ID (2B, not 2b) βœ…βœ…βœ… ---
MODEL_DEFINITIONS = {
    "mistral": {
        "repo_id": "TheBloke/Mistral-7B-Instruct-v0.2-GGUF",
        "filename": "mistral-7b-instruct-v0.2.Q4_K_M.gguf"
    },
    "gemma": {
        "repo_id": "TheBloke/gemma-2B-it-GGUF", # Corrected from 2b to 2B
        "filename": "gemma-2b-it.Q4_K_M.gguf"
    },
    "qwen": {
        "repo_id": "Qwen/Qwen1.5-1.8B-Chat-GGUF",
        "filename": "qwen1.5-1.8b-chat.Q4_K_M.gguf"
    }
}

MODEL_PATHS = {}

if IS_WEB_MODE:
    logger.info("βœ…βœ…βœ… RUNNING IN WEB MODE (Hugging Face Space) βœ…βœ…βœ…")
    N_GPU_LAYERS_FALLBACK = 0
    for name, model_info in MODEL_DEFINITIONS.items():
        logger.info(f"Downloading model: {name} from repo: {model_info['repo_id']}")
        try:
            MODEL_PATHS[name] = hf_hub_download(repo_id=model_info["repo_id"], filename=model_info["filename"])
            logger.info(f"βœ… Successfully downloaded {name}.")
        except Exception as e:
            logger.error(f"❌ FAILED to download model {name}. Error: {e}")
            raise e
else: # LOCAL MODE
    logger.info("βœ…βœ…βœ… RUNNING IN LOCAL MODE (Desktop/PC) βœ…βœ…βœ…")
    APP_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    BASE_MODELS_DIR = os.path.join(APP_DIR, "models")
    for name, model_info in MODEL_DEFINITIONS.items():
        MODEL_PATHS[name] = os.path.join(BASE_MODELS_DIR, model_info["filename"])
    N_GPU_LAYERS_FALLBACK = -1

# --- Shared Configurations ---
MAX_CONCURRENT_MODELS = 3
N_CTX_FALLBACK = 2048
VERBOSE_LLAMA_CPP = True
MODEL_SPECIFIC_PARAMS = {
    "_default": {
        "n_gpu_layers": N_GPU_LAYERS_FALLBACK, "n_ctx": N_CTX_FALLBACK, "f16_kv": True,
        "use_mmap": True, "verbose": VERBOSE_LLAMA_CPP
    },
    "mistral": {"chat_format": "mistral-instruct"}, "gemma": {"chat_format": "gemma"},
    "qwen": {"chat_format": "chatml"}
}
INFERENCE_PRESETS = {
    "balanced": {"temperature": 0.7, "top_p": 0.9, "top_k": 40, "repeat_penalty": 1.1, "max_tokens": 1024},
    "precise": {"temperature": 0.2, "top_p": 0.7, "top_k": 20, "repeat_penalty": 1.05, "max_tokens": 1536},
    "creative": {"temperature": 0.9, "top_p": 0.95, "top_k": 60, "repeat_penalty": 1.15, "max_tokens": 1024}
}
DEFAULT_INFERENCE_PRESET = "balanced"
DEFAULT_SYSTEM_PROMPT = "You are ZOTHEOS, an ethical AI developed to help humanity."
MODEL_ROLES = {"mistral": "analyst", "gemma": "humanist", "qwen": "skeptic"}
MODEL_ROLE_SYSTEM_PROMPTS = {
    "analyst": "You are an impartial analyst.", "humanist": "You are a human-centered assistant.",
    "skeptic": "You are a critical evaluator and a respectful skeptic.", "general": DEFAULT_SYSTEM_PROMPT
}
ZOTHEOS_VERSION = "2.1 (Live)"
logger.info(f"Config loaded. Version: {ZOTHEOS_VERSION}, Web Mode: {IS_WEB_MODE}")