bat-6 commited on
Commit
76d7c95
·
verified ·
1 Parent(s): c3cf4e5

Update: config.py

Browse files
Files changed (1) hide show
  1. src/recommendation_engine/config.py +88 -88
src/recommendation_engine/config.py CHANGED
@@ -1,88 +1,88 @@
1
- import os
2
- from pathlib import Path
3
- from dotenv import load_dotenv
4
-
5
- BASE_DIR = Path(__file__).resolve().parent.parent.parent
6
- ENV_PATH = BASE_DIR / ".env"
7
-
8
- if ENV_PATH.exists():
9
- load_dotenv(ENV_PATH)
10
-
11
- ENV = os.getenv("ENV", "development")
12
- DEBUG_MODE = os.getenv("DEBUG_MODE", "true").lower() == "true"
13
-
14
- GEMINI_API_KEY = os.getenv("GEMINI_API_KEY", "")
15
-
16
- # Primary model — reads GEMINI_MODEL_NAME from .env first, then PRIMARY_MODEL,
17
- # then falls back to gemini-2.5-pro (smart: advanced reasoning, high quality output).
18
- MODEL_CANDIDATES = [
19
- os.getenv("GEMINI_MODEL_NAME") or os.getenv("PRIMARY_MODEL", "gemini-2.5-pro"),
20
- os.getenv("FAST_MODEL", "gemini-2.5-flash"), # fast fallback
21
- os.getenv("BALANCED_MODEL", "gemini-2.5-flash"), # same tier fallback
22
- os.getenv("QUALITY_MODEL", "gemini-3.1-flash-lite"), # lightweight last resort
23
- ]
24
-
25
- _seen = set()
26
- MODEL_CANDIDATES = [
27
- m for m in MODEL_CANDIDATES
28
- if m and not (m in _seen or _seen.add(m))
29
- ]
30
-
31
- IDEA_TEMPERATURE = float(os.getenv("IDEA_TEMPERATURE", 0.9))
32
- FEATURE_TEMPERATURE = float(os.getenv("FEATURE_TEMPERATURE", 0.6))
33
- CHAT_TEMPERATURE = float(os.getenv("CHAT_TEMPERATURE", 0.7))
34
- INTENT_TEMPERATURE = float(os.getenv("INTENT_TEMPERATURE", 0.0))
35
-
36
- IDEA_MAX_TOKENS = int(os.getenv("IDEA_MAX_TOKENS", 800))
37
- FEATURE_MAX_TOKENS = int(os.getenv("FEATURE_MAX_TOKENS", 600))
38
- CHAT_MAX_TOKENS = int(os.getenv("CHAT_MAX_TOKENS", 700))
39
- INTENT_MAX_TOKENS = int(os.getenv("INTENT_MAX_TOKENS", 20))
40
-
41
- TOP_P = float(os.getenv("TOP_P", 0.95))
42
- TOP_K = int(os.getenv("TOP_K", 40))
43
-
44
- REQUEST_TIMEOUT = int(os.getenv("REQUEST_TIMEOUT", 30))
45
- MAX_RETRIES = int(os.getenv("MAX_RETRIES", 3))
46
- RETRY_DELAY_SECONDS = int(os.getenv("RETRY_DELAY_SECONDS", 2))
47
-
48
- DEFAULT_FEATURE_COUNT = int(os.getenv("DEFAULT_FEATURE_COUNT", 5))
49
- DEFAULT_IDEA_COUNT = int(os.getenv("DEFAULT_IDEA_COUNT", 5))
50
- GENERATION_BATCH_SIZE = int(os.getenv("GENERATION_BATCH_SIZE", 10))
51
-
52
- IDEA_DUPLICATE_THRESHOLD = float(
53
- os.getenv("IDEA_DUPLICATE_THRESHOLD", 0.15)
54
- )
55
-
56
- FEATURE_DUPLICATE_THRESHOLD = float(
57
- os.getenv("FEATURE_DUPLICATE_THRESHOLD", 0.75)
58
- )
59
-
60
- MAX_IDEA_RETRIES = int(os.getenv("MAX_IDEA_RETRIES", 3))
61
- MAX_IDEA_LIMIT = int(os.getenv("MAX_IDEA_LIMIT", 20))
62
-
63
- SIMILARITY_TOP_K = int(os.getenv("SIMILARITY_TOP_K", 5))
64
-
65
- MAX_HISTORY = int(os.getenv("MAX_HISTORY", 20))
66
- MAX_FEATURES = int(os.getenv("MAX_FEATURES", 20))
67
- MAX_IDEAS = int(os.getenv("MAX_IDEAS", 10))
68
-
69
- ENABLE_SEMANTIC_INTENT = os.getenv(
70
- "ENABLE_SEMANTIC_INTENT", "true"
71
- ).lower() == "true"
72
-
73
- ENABLE_LOGGING = os.getenv("ENABLE_LOGGING", "true").lower() == "true"
74
- LOG_LEVEL = os.getenv("LOG_LEVEL", "INFO")
75
-
76
- if not GEMINI_API_KEY:
77
- raise ValueError(
78
- "❌ GEMINI_API_KEY is missing. Please set it in .env file."
79
- )
80
-
81
- if DEBUG_MODE and ENV == "development":
82
- print("\n CONFIG LOADED:")
83
- print(f"ENV: {ENV}")
84
- print(f"DEBUG_MODE: {DEBUG_MODE}")
85
- print(f"MODELS: {MODEL_CANDIDATES}")
86
- print(f"MAX_RETRIES: {MAX_RETRIES}")
87
- print(f"IDEA_TEMP: {IDEA_TEMPERATURE}")
88
- print("=================================\n")
 
1
+ import os
2
+ from pathlib import Path
3
+ from dotenv import load_dotenv
4
+
5
+ BASE_DIR = Path(__file__).resolve().parent.parent.parent
6
+ ENV_PATH = BASE_DIR / ".env"
7
+
8
+ if ENV_PATH.exists():
9
+ load_dotenv(ENV_PATH)
10
+
11
+ ENV = os.getenv("ENV", "development")
12
+ DEBUG_MODE = os.getenv("DEBUG_MODE", "true").lower() == "true"
13
+
14
+ GEMINI_API_KEY = os.getenv("GEMINI_API_KEY", "")
15
+
16
+ # Primary model — reads GEMINI_MODEL_NAME from .env first, then PRIMARY_MODEL,
17
+ # then falls back to gemini-2.5-pro (smart: advanced reasoning, high quality output).
18
+ MODEL_CANDIDATES = [
19
+ os.getenv("GEMINI_MODEL_NAME") or os.getenv("PRIMARY_MODEL", "gemini-2.5-pro"),
20
+ os.getenv("FAST_MODEL", "gemini-2.5-flash"), # fast fallback
21
+ os.getenv("BALANCED_MODEL", "gemini-2.5-flash"), # same tier fallback
22
+ os.getenv("QUALITY_MODEL", "gemini-3.1-flash-lite"), # lightweight last resort
23
+ ]
24
+
25
+ _seen = set()
26
+ MODEL_CANDIDATES = [
27
+ m for m in MODEL_CANDIDATES
28
+ if m and not (m in _seen or _seen.add(m))
29
+ ]
30
+
31
+ IDEA_TEMPERATURE = float(os.getenv("IDEA_TEMPERATURE", 0.9))
32
+ FEATURE_TEMPERATURE = float(os.getenv("FEATURE_TEMPERATURE", 0.6))
33
+ CHAT_TEMPERATURE = float(os.getenv("CHAT_TEMPERATURE", 0.7))
34
+ INTENT_TEMPERATURE = float(os.getenv("INTENT_TEMPERATURE", 0.0))
35
+
36
+ IDEA_MAX_TOKENS = int(os.getenv("IDEA_MAX_TOKENS", 800))
37
+ FEATURE_MAX_TOKENS = int(os.getenv("FEATURE_MAX_TOKENS", 600))
38
+ CHAT_MAX_TOKENS = int(os.getenv("CHAT_MAX_TOKENS", 700))
39
+ INTENT_MAX_TOKENS = int(os.getenv("INTENT_MAX_TOKENS", 20))
40
+
41
+ TOP_P = float(os.getenv("TOP_P", 0.95))
42
+ TOP_K = int(os.getenv("TOP_K", 40))
43
+
44
+ REQUEST_TIMEOUT = int(os.getenv("REQUEST_TIMEOUT", 30))
45
+ MAX_RETRIES = int(os.getenv("MAX_RETRIES", 3))
46
+ RETRY_DELAY_SECONDS = int(os.getenv("RETRY_DELAY_SECONDS", 2))
47
+
48
+ DEFAULT_FEATURE_COUNT = int(os.getenv("DEFAULT_FEATURE_COUNT", 5))
49
+ DEFAULT_IDEA_COUNT = int(os.getenv("DEFAULT_IDEA_COUNT", 5))
50
+ GENERATION_BATCH_SIZE = int(os.getenv("GENERATION_BATCH_SIZE", 10))
51
+
52
+ IDEA_DUPLICATE_THRESHOLD = float(
53
+ os.getenv("IDEA_DUPLICATE_THRESHOLD", 0.15)
54
+ )
55
+
56
+ FEATURE_DUPLICATE_THRESHOLD = float(
57
+ os.getenv("FEATURE_DUPLICATE_THRESHOLD", 0.75)
58
+ )
59
+
60
+ MAX_IDEA_RETRIES = int(os.getenv("MAX_IDEA_RETRIES", 3))
61
+ MAX_IDEA_LIMIT = int(os.getenv("MAX_IDEA_LIMIT", 20))
62
+
63
+ SIMILARITY_TOP_K = int(os.getenv("SIMILARITY_TOP_K", 5))
64
+
65
+ MAX_HISTORY = int(os.getenv("MAX_HISTORY", 20))
66
+ MAX_FEATURES = int(os.getenv("MAX_FEATURES", 20))
67
+ MAX_IDEAS = int(os.getenv("MAX_IDEAS", 10))
68
+
69
+ ENABLE_SEMANTIC_INTENT = os.getenv(
70
+ "ENABLE_SEMANTIC_INTENT", "true"
71
+ ).lower() == "true"
72
+
73
+ ENABLE_LOGGING = os.getenv("ENABLE_LOGGING", "true").lower() == "true"
74
+ LOG_LEVEL = os.getenv("LOG_LEVEL", "INFO")
75
+
76
+ if not GEMINI_API_KEY:
77
+ raise ValueError(
78
+ "❌ GEMINI_API_KEY is missing. Please set it in .env file."
79
+ )
80
+
81
+ if DEBUG_MODE and ENV == "development":
82
+ print("\n CONFIG LOADED:")
83
+ print(f"ENV: {ENV}")
84
+ print(f"DEBUG_MODE: {DEBUG_MODE}")
85
+ print(f"MODELS: {MODEL_CANDIDATES}")
86
+ print(f"MAX_RETRIES: {MAX_RETRIES}")
87
+ print(f"IDEA_TEMP: {IDEA_TEMPERATURE}")
88
+ print("=================================\n")