Ryan2219's picture
Upload 70 files
e1ced8e verified
import os
from dotenv import load_dotenv
# Explicit path so .env is found regardless of the working directory
_THIS_DIR = os.path.dirname(os.path.abspath(__file__))
load_dotenv(os.path.join(_THIS_DIR, ".env"))
# --- API Keys ---
GOOGLE_API_KEY = os.environ.get("GOOGLE_API_KEY", "")
OPENAI_API_KEY = os.environ.get("OPENAI_API_KEY", "")
# --- Model Names ---
PLANNER_MODEL = "gemini-3-flash-preview"
CROPPER_MODEL = "gemini-3-flash-preview"
ANNOTATOR_MODEL = "gemini-2.5-flash-image"
ANALYZER_MODEL = "gemini-3-flash-preview"
CODE_LOOKUP_MODEL = "gpt-5-mini"
DELIBERATION_MODEL = "gpt-5.2"
VERDICT_MODEL = "gemini-3-flash-preview"
METADATA_MODEL = "gemini-3-flash-preview"
# --- ChromaDB ---
CHROMA_DB_PATH = os.path.join(os.path.dirname(__file__), "data", "nyc_code_db")
CHROMA_COLLECTION_NAME = "nyc_building_codes"
EMBEDDING_MODEL_NAME = "BAAI/bge-large-en-v1.5"
# --- Processing Constants ---
PDF_RENDER_DPI = 100
MAX_INVESTIGATION_ROUNDS = 3
CROP_PADDING_PX = 40
# --- Code Lookup Budgets (per individual query, queries run in parallel) ---
MAX_DISCOVER_CALLS = 1
MAX_FETCH_CALLS = 1
MAX_CODE_LOOKUP_TURNS = 5
# --- Search Defaults ---
DISCOVER_N_RESULTS = 50 # Retrieve more candidates for re-ranking
RERANK_TOP_K = 20 # Return top-K after re-ranking
FETCH_MAX_SECTIONS = 30 # Max sections per chapter fetch