""" Study Ocean RAG — Main Entry Point Usage: python main.py ingest # Ingest PDFs and build vector store python main.py chat # Launch the Gradio web UI python main.py ask # Ask a single question in the terminal """ import sys def print_banner(): print(""" ╔══════════════════════════════════════════════════════════╗ ║ 🎓 Study Ocean AI Mentor ║ ║ RAG-based Student Doubt Solver ║ ╠══════════════════════════════════════════════════════════╣ ║ ║ ║ Commands: ║ ║ python main.py ingest — Process PDFs & build index ║ ║ python main.py chat — Launch web chat interface ║ ║ python main.py ask — Ask a question in terminal ║ ║ ║ ╚══════════════════════════════════════════════════════════╝ """) def run_ingest(): """Run the PDF ingestion pipeline.""" from ingest import run_ingestion run_ingestion() def run_chat(): """Launch the Gradio web interface.""" from app import app print("\n🌐 Starting Study Ocean AI Mentor web interface...") print(" Open http://localhost:7860 in your browser\n") app.launch( server_name="0.0.0.0", server_port=7860, share=False, show_error=True, ) def run_ask(): """Interactive terminal Q&A mode.""" from rag_chain import get_chain, ask_question print("\n🎓 Study Ocean AI Mentor — Terminal Mode") print(" Type your question and press Enter.") print(" Type 'quit' or 'exit' to stop.\n") chain = get_chain() while True: try: question = input("\n🙋 Your doubt: ").strip() except (KeyboardInterrupt, EOFError): print("\n\n👋 Goodbye! Keep studying! 📚") break if question.lower() in ("quit", "exit", "q"): print("\n👋 Goodbye! Keep studying! 📚") break if not question: print(" ⚠ Please type a question.") continue print("\n🔍 Searching study material...\n") result = ask_question(chain, question) print("─" * 50) print(f"\n🎓 Mentor's Answer:\n") print(result["answer"]) if result["sources"]: print(f"\n📖 Sources:") for i, src in enumerate(result["sources"], 1): print(f" {i}. [{src['subject']}] {src['file']}") print("\n" + "─" * 50) def main(): if len(sys.argv) < 2: print_banner() sys.exit(0) command = sys.argv[1].lower() if command == "ingest": run_ingest() elif command == "chat": run_chat() elif command == "ask": run_ask() else: print(f"❌ Unknown command: {command}") print_banner() sys.exit(1) if __name__ == "__main__": main()