Spaces:
Sleeping
Sleeping
| import os | |
| from dotenv import load_dotenv | |
| # ---------------------------- | |
| # Load .env | |
| # ---------------------------- | |
| load_dotenv() | |
| def get_env_var(name: str, required: bool = True, default: str | None = None) -> str | None: | |
| """Safely get an environment variable or raise a clear error if missing.""" | |
| value = os.getenv(name, default) | |
| if required and not value: | |
| raise ValueError(f"Missing required environment variable: {name}") | |
| return value | |
| # ---------------------------- | |
| # Detect which mode we're in | |
| # ---------------------------- | |
| PROXY_TOKEN = os.getenv("PROXY_API_KEY") | |
| PROXY_BASE_URL = os.getenv("PROXY_BASE_URL") | |
| if PROXY_TOKEN and PROXY_BASE_URL: | |
| MODE = "proxy" | |
| os.environ["OPENAI_API_KEY"] = PROXY_TOKEN | |
| os.environ["OPENAI_BASE_URL"] = PROXY_BASE_URL | |
| else: | |
| MODE = "direct" | |
| os.environ["OPENAI_API_KEY"] = get_env_var("OPENAI_API_KEY") | |
| if base_url := os.getenv("OPENAI_BASE_URL"): | |
| os.environ["OPENAI_BASE_URL"] = base_url | |
| # ---------------------------- | |
| # Exported values | |
| # ---------------------------- | |
| OPENAI_API_KEY = os.environ["OPENAI_API_KEY"] | |
| OPENAI_BASE_URL = os.environ.get("OPENAI_BASE_URL", "https://api.openai.com/v1") | |
| # ---------------------------- | |
| # Optional logging for clarity | |
| # ---------------------------- | |
| print(f"[config] Mode: {MODE.upper()} | Base URL: {OPENAI_BASE_URL}") | |
| LLM_MODEL = os.getenv("OPENAI_MODEL", "gpt-4o-mini") # or gpt-4o, gpt-4o-mini | |
| LLM_TEMPERATURE = float(os.getenv("LLM_TEMPERATURE", "0")) | |
| # Hard blocks (defense-in-depth) | |
| FORBIDDEN_KEYWORDS = { | |
| "ATTACH", "PRAGMA", | |
| "CREATE", "DROP", "ALTER", "VACUUM", "REINDEX", "TRIGGER", | |
| "INSERT", "UPDATE", "DELETE", "REPLACE", | |
| "GRANT", "REVOKE", | |
| "BEGIN", "END", "COMMIT", "ROLLBACK", | |
| "DETACH", | |
| } | |
| FORBIDDEN_TABLES = {"sqlite_master", "sqlite_temp_master"} | |