Spaces:
Sleeping
Sleeping
| import os | |
| # --- API Keys & Secrets --- | |
| # GOOGLE_API_KEY = os.environ.get("GOOGLE_API_KEY", "") | |
| PINECONE_API_KEY = os.environ.get("PINECONE_API_KEY", "") | |
| GOOGLE_CLIENT_ID = os.environ.get("GOOGLE_CLIENT_ID", "") | |
| # Optional: shared fallback key (users bring their own via BYOK) | |
| OPENROUTER_API_KEY = os.environ.get("OPENROUTER_API_KEY", "") | |
| # Optional: shared Tavily web-search fallback key (users bring their own via BYOK) | |
| TAVILY_API_KEY = os.environ.get("TAVILY_API_KEY", "") | |
| # --- LangSmith (tracing & analytics) --- | |
| os.environ["LANGCHAIN_TRACING_V2"] = os.environ.get("LANGSMITH_TRACING", "true") | |
| os.environ["LANGCHAIN_API_KEY"] = os.environ.get("LANGSMITH_API_KEY", "") | |
| os.environ["LANGCHAIN_PROJECT"] = os.environ.get("LANGCHAIN_PROJECT", "stemcopilot-canvas") | |
| # --- Pinecone --- | |
| PINECONE_INDEX = "stem-embed" | |
| # --- Embedding --- | |
| EMBED_MODEL_NAME = "BAAI/bge-large-en-v1.5" | |
| BGE_QUERY_PREFIX = "Represent this sentence: " | |
| # --- Database --- | |
| DB_PATH = "/data/stemgraph.db" if os.path.isdir("/data") else "stemgraph.db" | |
| # Public URL of the deployed app — used as the OpenRouter HTTP-Referer header. | |
| APP_URL = os.environ.get("APP_URL", "https://moai633-stem-copilot.hf.space") | |
| # --- Defaults --- | |
| DEFAULT_PERSONA = "nerd" | |
| RETRIEVAL_TOP_K = 3 | |
| LLM_TIMEOUT = 180 # seconds — free models are slow, needs generous timeout | |
| # Number of most-recent messages sent to the LLM per request (full history is | |
| # still stored for the /history view). Caps input-token growth on long chats. | |
| CONTEXT_WINDOW = int(os.environ.get("CONTEXT_WINDOW", "10")) | |
| # Minimum Pinecone relevance score for a chunk to be injected as context. | |
| RETRIEVAL_MIN_SCORE = float(os.environ.get("RETRIEVAL_MIN_SCORE", "0.45")) | |
| # --- Logging --- | |
| import logging | |
| logging.basicConfig( | |
| level=os.environ.get("LOG_LEVEL", "INFO").upper(), | |
| format="%(asctime)s [%(levelname)s] %(name)s: %(message)s", | |
| ) | |