File size: 2,260 Bytes
94a26ba
79707c4
 
 
89bd785
79707c4
89bd785
 
 
 
 
 
79707c4
 
 
89bd785
79707c4
 
 
 
 
 
 
 
 
 
 
 
 
89bd785
79707c4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
89bd785
79707c4
 
 
 
 
 
 
 
 
89bd785
79707c4
 
 
 
 
 
 
 
 
 
89bd785
79707c4
 
 
 
 
89bd785
79707c4
 
 
 
 
89bd785
79707c4
89bd785
79707c4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
# 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.