# AI Prof configuration. # Leave everything blank to run in MOCK mode (no weights needed — great for UI dev / demo recording). # --- Eyes: MiniCPM-V (vision) --- # Hosted on Modal through llama.cpp (modal_app_vision.py). # Bring up with: modal run modal_app_vision.py::download_model # modal run modal_app_vision.py::warm # modal deploy modal_app_vision.py # Set VISION_BASE_URL to the printed serve URL, with or without /v1. VISION_BASE_URL= VISION_API_KEY=sk-no-key-required VISION_MODEL=minicpm-v # --- Brain: Nemotron 3 Nano (explanation + Q&A) --- # Any OpenAI-compatible chat endpoint (vLLM, llama.cpp, etc.) # vllm serve nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16 --port 8000 BRAIN_BASE_URL= BRAIN_API_KEY=sk-no-key-required BRAIN_MODEL=nemotron-3-nano # --- Voice (TTS): VoxCPM2 served via vLLM-Omni (modal_app_vox.py) --- # Used by the WebRTC voice layer (ai_prof/rtc.py) to speak AI Prof answers aloud. # Bring up with: modal run modal_app_vox.py::download_model # modal run modal_app_vox.py::warm # modal deploy modal_app_vox.py # Set TTS_BASE_URL to either the printed *.modal.run URL or that URL + /v1. # Leave blank to fall back to a silent-audio mock (voice UI still works, just mute). TTS_BASE_URL= TTS_API_KEY=sk-no-key-required TTS_MODEL=voxcpm2 # Use a precomputed vLLM-Omni voice name when available. Otherwise AI Prof # creates one voice on the first utterance and reuses it for the lecture. TTS_VOICE=default # --- Voice (STT): distil-whisper-large-v3 via faster-whisper-server (modal_app_vox.py) --- # Used to transcribe student microphone audio (push-to-talk + WebRTC interjections). # Bring up with: modal run modal_app_vox.py::download_stt # modal deploy modal_app_vox.py # Set STT_BASE_URL to the `transcribe` function URL, with or without /v1. # Leave blank to fall back to a "[voice input]" mock. STT_BASE_URL= STT_API_KEY=sk-no-key-required STT_MODEL=distil-whisper-large-v3 # Rendering DPI for slide images (higher = sharper, slower vision pass) SLIDE_DPI=150 # --- Processed deck cache --- # Every uploaded PDF is hashed. Rendered slide images, text layers, MiniCPM-V # readings, and the complete deck index are cached locally under DECK_CACHE_DIR. DECK_CACHE_DIR=.cache/ai-prof/decks # Optional shared Hugging Face dataset cache. Public repos can be read without a # token; private repos require HF_TOKEN. Keep writes disabled for arbitrary user # uploads unless the dataset is private or you have explicit permission to # publish the lecture material. HF_DECK_CACHE_REPO= HF_TOKEN= HF_DECK_CACHE_WRITE=false