# ARGObot: Academic Advising Chatbot Powered with AI Agent ARGObot is a custom-built Retrieval-Augmented Generation (RAG) chatbot designed to answer university-related questions using either OpenAI or Google Gemini. It reads from official student handbooks and optionally supplements answers using Google Search. ## Features - Switchable backend (OpenAI or Gemini) - LangGraph for stateful chat memory - RAG pipeline using LangChain + ChromaDB - Clean Streamlit interface - Modular file structure - Secure `.env`-based configuration --- ## Project Structure ``` src/ ├── agents/ # Tools and prompt templates ├── chains/ # RAG pipelines ├── config/ # Environment and secrets ├── interface/ # Streamlit UI ├── state.py # LangGraph state and workflow └── main.py # Unified app entrypoint ``` --- ## Getting Started ### 1. Clone the Repository ```bash git clone https://github.com/yourusername/argobot.git cd argobot ``` ### 2. Install Requirements ```bash pip install -r requirements.txt ``` ### 3. Configure Environment Create a `.env` file based on `.env.example`: ```env MODEL_PROVIDER=openai OPENAI_API_KEY=your-openai-key GOOGLE_API_KEY=your-gemini-key PDF_PATH=resources/22_studenthandbook-22-23_f2.pdf ``` ### 4. Run the App ```bash streamlit run src/main.py ``` --- ## How It Works 1. Loads a PDF knowledge base (e.g., UWF Student Handbook) 2. Splits it into text chunks using LangChain 3. Embeds and stores chunks in a vector store 4. Uses LangGraph to manage conversation state 5. Responds via OpenAI or Gemini based on your configuration --- ## Technologies Used - [LangChain](https://www.langchain.com/) - [LangGraph](https://docs.langgraph.dev/) - [Streamlit](https://streamlit.io/) - [OpenAI](https://platform.openai.com/) - [Google Gemini](https://ai.google.dev/) - [ChromaDB](https://docs.trychroma.com/) --- ## Security Note Do **not** share your `.env` or `credentials.json` publicly. Always use `.env.example` for version control. --- ## License MIT License — free for personal and commercial use. --- ## Author **Maryam Taeb** [Contact me](mailto:mr@uwf.edu) for collaboration or custom deployments.