Melika Kheirieh commited on
Commit
8ee86d2
·
1 Parent(s): cdc2a04

feat(config): unify proxy and direct OpenAI env handling

Browse files
Files changed (2) hide show
  1. config.py +22 -35
  2. requirements.txt +1 -0
config.py CHANGED
@@ -1,50 +1,37 @@
1
  import os
2
  from dotenv import load_dotenv
3
 
4
- # ----------------------------
5
- # Load .env
6
- # ----------------------------
7
  load_dotenv()
8
 
9
 
10
  def get_env_var(name: str, required: bool = True, default: str | None = None) -> str | None:
11
- """Safely get an environment variable or raise a clear error if missing."""
12
- value = os.getenv(name, default)
13
- if required and not value:
14
  raise ValueError(f"Missing required environment variable: {name}")
15
- return value
16
-
17
- # ----------------------------
18
- # Detect which mode we're in
19
- # ----------------------------
20
- PROXY_TOKEN = os.getenv("PROXY_API_KEY")
21
- PROXY_BASE_URL = os.getenv("PROXY_BASE_URL")
22
-
23
- if PROXY_TOKEN and PROXY_BASE_URL:
24
- MODE = "proxy"
25
- os.environ["OPENAI_API_KEY"] = PROXY_TOKEN
26
- os.environ["OPENAI_BASE_URL"] = PROXY_BASE_URL
27
- else:
28
- MODE = "direct"
29
- os.environ["OPENAI_API_KEY"] = get_env_var("OPENAI_API_KEY")
30
- if base_url := os.getenv("OPENAI_BASE_URL"):
31
- os.environ["OPENAI_BASE_URL"] = base_url
32
-
33
- # ----------------------------
34
- # Exported values
35
- # ----------------------------
36
- OPENAI_API_KEY = os.environ["OPENAI_API_KEY"]
37
- OPENAI_BASE_URL = os.environ.get("OPENAI_BASE_URL", "https://api.openai.com/v1")
38
-
39
- # ----------------------------
40
- # Optional logging for clarity
41
- # ----------------------------
42
- print(f"[config] Mode: {MODE.upper()} | Base URL: {OPENAI_BASE_URL}")
43
 
44
  LLM_MODEL = os.getenv("OPENAI_MODEL", "gpt-4o-mini") # or gpt-4o, gpt-4o-mini
45
  LLM_TEMPERATURE = float(os.getenv("LLM_TEMPERATURE", "0"))
46
 
47
- # Hard blocks (defense-in-depth)
48
  FORBIDDEN_KEYWORDS = {
49
  "ATTACH", "PRAGMA",
50
  "CREATE", "DROP", "ALTER", "VACUUM", "REINDEX", "TRIGGER",
 
1
  import os
2
  from dotenv import load_dotenv
3
 
 
 
 
4
  load_dotenv()
5
 
6
 
7
  def get_env_var(name: str, required: bool = True, default: str | None = None) -> str | None:
8
+ val = os.getenv(name, default)
9
+ if required and not val:
 
10
  raise ValueError(f"Missing required environment variable: {name}")
11
+ return val
12
+
13
+ proxy_key = os.getenv("PROXY_API_KEY")
14
+ proxy_base = os.getenv("PROXY_BASE_URL")
15
+ openai_key = os.getenv("OPENAI_API_KEY")
16
+ openai_base = os.getenv("OPENAI_BASE_URL")
17
+
18
+ api_key = proxy_key or openai_key
19
+ if not api_key:
20
+ raise ValueError("Missing API key: set PROXY_API_KEY or OPENAI_API_KEY in environment/secrets.")
21
+
22
+ base_url = proxy_base or openai_base or "https://api.openai.com/v1"
23
+
24
+ os.environ["OPENAI_API_KEY"] = api_key
25
+ os.environ["OPENAI_BASE_URL"] = base_url
26
+
27
+ MODE = "proxy" if proxy_key else "direct"
28
+ OPENAI_API_KEY = api_key
29
+ OPENAI_BASE_URL = base_url
30
+
 
 
 
 
 
 
 
 
31
 
32
  LLM_MODEL = os.getenv("OPENAI_MODEL", "gpt-4o-mini") # or gpt-4o, gpt-4o-mini
33
  LLM_TEMPERATURE = float(os.getenv("LLM_TEMPERATURE", "0"))
34
 
 
35
  FORBIDDEN_KEYWORDS = {
36
  "ATTACH", "PRAGMA",
37
  "CREATE", "DROP", "ALTER", "VACUUM", "REINDEX", "TRIGGER",
requirements.txt CHANGED
@@ -4,3 +4,4 @@ langchain-openai
4
  sqlglot
5
  openai
6
  python-dotenv
 
 
4
  sqlglot
5
  openai
6
  python-dotenv
7
+ dotenv