nl2sql-copilot / config.py
Melika Kheirieh
style: format code with ruff
c1bc4eb
raw
history blame
1.38 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"}