# FULL stack: chat / RAG / pluggable LLM backends / Telegram + everything the test suite # imports. Used by CI and full local dev. For just the deterministic app + hosted demo, # the lighter `requirements.txt` is enough. numpy pandas bs4 requests requests_cache transformers sentence-transformers langchain langchain_community # LLM backends (pluggable via LLM_PROVIDER). Install only the one(s) you use. langchain_ollama # local/offline via Ollama (default) langchain-anthropic # Claude — the most reliable tool caller of the backends langchain-huggingface # hf (hosted, needs HUGGINGFACEHUB_API_TOKEN) OR hf_local (local transformers, no token) langchain-nvidia-ai-endpoints # nvidia (hosted NIM, needs NVIDIA_API_KEY) — tool-calling brain for the bot langchain-openai # openai_compat — self-hosted OpenAI-compatible tool-calling backend (e.g. vLLM/llama.cpp). Zero-proprietary-API path. # Messaging channels (the personal-assistant gateway) python-telegram-bot[job-queue]>=21 # Telegram bot (agronaut_agent/channels/telegram_adapter.py); job-queue extra powers the follow-up poller # faster-whisper # OPTIONAL: local speech-to-text for voice notes (ASR_PROVIDER=local). Install only for voice; offline after first model download. faiss-cpu rank_bm25 # keyword half of hybrid retrieval (agronaut_agent/rag.py). Imported lazily and shipped disabled by default (see hybrid_enabled()), but REQUIRED: without it hybrid silently degrades to dense-only instead of failing. pypdf # extracts text from PDF knowledge sources — FAO/extension publications are PDFs (srcs/chatbot.py _pdf_documents). Without it every PDF source silently contributes zero chunks. Pillow # renders the PNG system schematic (aqua_model/schematic.py to_png) openpyxl streamlit markdown