nl2sql-copilot / config.py
Melika Kheirieh
feat(config): unify proxy and direct OpenAI env handling
8ee86d2
raw
history blame
1.3 kB
import os
from dotenv import load_dotenv
load_dotenv()
def get_env_var(name: str, required: bool = True, default: str | None = None) -> str | None:
val = os.getenv(name, default)
if required and not val:
raise ValueError(f"Missing required environment variable: {name}")
return val
proxy_key = os.getenv("PROXY_API_KEY")
proxy_base = os.getenv("PROXY_BASE_URL")
openai_key = os.getenv("OPENAI_API_KEY")
openai_base = os.getenv("OPENAI_BASE_URL")
api_key = proxy_key or openai_key
if not api_key:
raise ValueError("Missing API key: set PROXY_API_KEY or OPENAI_API_KEY in environment/secrets.")
base_url = proxy_base or openai_base or "https://api.openai.com/v1"
os.environ["OPENAI_API_KEY"] = api_key
os.environ["OPENAI_BASE_URL"] = base_url
MODE = "proxy" if proxy_key else "direct"
OPENAI_API_KEY = api_key
OPENAI_BASE_URL = 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"))
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"}