# NOVA = research pipeline (agent) + single-PDF Q&A (chatbot) + Gradio UI. # One environment runs all three. Versions below match what both sub-projects # were already pinned to, so nothing gets upgraded out from under them. # --- ZeroGPU --- # `spaces` provides the @spaces.GPU decorator. ZeroGPU refuses to start a Space # that has none ("No @spaces.GPU function detected during startup"), and it only # attaches a GPU for the duration of such a call. See ui/gpu.py for the one # function that uses it. Off ZeroGPU the decorator is a transparent no-op, so # this package is harmless locally and on CPU hardware. spaces # --- torch --- # 2.11.0 exactly: ZeroGPU accepts only 2.11.0 / 2.10.0 / 2.9.1 / 2.8.0 and fails # the build at config-check otherwise. 2.11.0 is the newest it allows. # # Plain (CUDA) build on purpose — ZeroGPU rejects the `+cpu` local version, since # it needs a CUDA-capable torch to hand the GPU over. That means ~2.5 GB of # nvidia-* wheels; unavoidable on this hardware. # # For CPU-only hardware (Spaces "CPU basic", or a local box), these lines are # smaller and faster and still work — NOVA falls back to CPU automatically: # --extra-index-url https://download.pytorch.org/whl/cpu # torch==2.11.0+cpu ; sys_platform == "linux" # torch ; sys_platform != "linux" torch==2.11.0 # --- UI --- # 6.0 is a hard floor, not caution: launch() takes theme/css/js (Blocks did in 5), # and Chatbot speaks {"role","content"} natively (5 needed type="messages"). gradio>=6.0 # --- research agent (intent + search/cluster graphs) --- langgraph langchain-core langchain-groq langchain-tavily sentence-transformers # SPECTER reranker in the search graph python-dotenv pydantic requests numpy # --- chatbot (single-PDF Q&A) --- langchain langchain-community # HuggingFaceCrossEncoder, HuggingFaceBgeEmbeddings langchain-classic # CrossEncoderReranker + ContextualCompressionRetriever langchain-text-splitters langchain-chroma chromadb pymupdf # `import fitz`