Misbah17311/financial-intelligence-agent
1
1# One-shot setup script — downloads data, builds indexes, verifies everything2# Usage: python setup.py3 4import sys5import os6sys.path.insert(0, os.path.dirname(__file__))7 8from src.logger import logger9 10 11def main():12 logger.info("=" * 60)13 logger.info("FINANCIAL INTELLIGENCE AGENT — SETUP")14 logger.info("=" * 60)15 16 # step 1: check .env17 from src.config import LLM_PROVIDER, OPENAI_API_KEY, ANTHROPIC_API_KEY, GROQ_API_KEY18 env_path = os.path.join(os.path.dirname(__file__), ".env")19 if not os.path.exists(env_path):20 logger.error(21 "No .env file found. Copy .env.example to .env and fill in your API key:\n"22 " cp .env.example .env"23 )24 sys.exit(1)25 26 key_map = {"openai": OPENAI_API_KEY, "anthropic": ANTHROPIC_API_KEY, "groq": GROQ_API_KEY}27 active_key = key_map.get(LLM_PROVIDER, "")28 if not active_key or active_key.startswith("sk-your") or active_key.startswith("gsk_your"):29 logger.error(30 f"LLM_PROVIDER is set to '{LLM_PROVIDER}' but the API key looks unset. "31 f"Edit your .env file."32 )33 sys.exit(1)34 35 logger.info(f"LLM provider: {LLM_PROVIDER}")36 37 # step 2: ingest data38 logger.info("\n--- Step 1: Data Ingestion ---")39 from src.data_platform.ingest import run_ingestion40 run_ingestion()41 42 # step 3: load into DuckDB43 logger.info("\n--- Step 2: DuckDB Setup ---")44 from src.data_platform.duckdb_store import init_tables, get_schema_info45 init_tables()46 print(get_schema_info())47 48 # step 4: build ChromaDB vector index49 logger.info("\n--- Step 3: ChromaDB Vector Index ---")50 from src.data_platform.chroma_store import build_index as build_chroma51 build_chroma()52 53 # step 5: build BM25 keyword index54 logger.info("\n--- Step 4: BM25 Keyword Index ---")55 from src.data_platform.bm25_store import build_index as build_bm2556 build_bm25()57 58 # step 6: quick sanity test59 logger.info("\n--- Step 5: Sanity Test ---")60 from src.agents.graph import run_query61 test_q = "What is the average revenue of Technology sector companies in 2024?"62 logger.info(f"Test query: {test_q}")63 result = run_query(test_q)64 print(f"\nAnswer:\n{result['answer'][:500]}")65 print(f"\nConfidence: {result['confidence']}")66 67 logger.info("\n" + "=" * 60)68 logger.info("SETUP COMPLETE")69 logger.info("Run the UI with: streamlit run src/ui/app.py")70 logger.info("Run evaluation with: python evaluation/evaluate.py")71 logger.info("=" * 60)72 73 74if __name__ == "__main__":75 main()76 