mmqa-chatbot / README.md
quyk67uet
Add Hugging Face metadata to README 2
bdd85b8
---
title: MMQA Chatbot
emoji: 🤖
colorFrom: yellow
colorTo: blue
sdk: streamlit
app_file: app.py
pinned: false
---
# 🤖 Chatbot Gia sư Toán AI Đa Agent
Một ứng dụng chatbot thông minh sử dụng kiến trúc đa agent để hỗ trợ học sinh lớp 9 học Toán theo chương trình Việt Nam.
## 🎯 Tính năng chính
### 5 Agent thông minh:
1. **Informer Agent**: Giải bài toán dựa trên sách giáo khoa (RAG)
2. **Practice Agent**: Tạo bài tập và đề xuất video phù hợp
3. **Insight Agent**: Phân tích điểm yếu và cảm xúc học sinh
4. **Verifier Agent**: Kiểm tra tính đúng đắn của câu trả lời
5. **Tutor Agent**: Điều phối các agent và quản lý hội thoại
### Các luồng tương tác:
-**Giải toán chi tiết**: Trả lời từng bước với kiểm tra chéo
- 🎯 **Luyện tập chủ động**: Tự động đề xuất bài tập dựa trên điểm yếu
- 💚 **Hỗ trợ cảm xúc**: Nhận biết stress và phản hồi đồng cảm
- 🚫 **Từ chối an toàn**: Chỉ tập trung vào toán học
## 🛠️ Thiết lập
### 1. Cài đặt dependencies
```bash
pip install -r requirements.txt
```
### 2. Thiết lập Google AI API Key
```bash
export GOOGLE_API_KEY="your_api_key_here"
```
Hoặc trên Windows:
```cmd
set GOOGLE_API_KEY=your_api_key_here
```
### 3. Chuẩn bị dữ liệu
Đảm bảo có 2 file trong thư mục gốc:
- `embedded_documents.pkl`: Documents sách giáo khoa đã được embedding
- `videos.json`: Danh sách thông tin video bài giảng
### 4. Chạy ứng dụng
```bash
streamlit run app.py
```
## 📚 Cấu trúc hệ thống
### Kiến trúc Multi-Agent
```
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Tutor │────│ Informer │────│ Verifier │
│ Agent │ │ Agent │ │ Agent │
│ (Điều phối) │ │ (RAG) │ │ (Kiểm tra) │
└─────────────┘ └─────────────┘ └─────────────┘
│ │
▼ ▼
┌─────────────┐ ┌─────────────┐
│ Practice │ │ Insight │
│ Agent │ │ Agent │
│(Tạo bài tập)│ │(Phân tích) │
└─────────────┘ └─────────────┘
```
### Luồng xử lý
1. **Phân loại ý định** → Xác định loại câu hỏi
2. **Điều phối agent** → Gọi agent phù hợp
3. **Xử lý và kiểm tra** → Tạo câu trả lời + verification
4. **Phân tích chủ động** → Đề xuất bài tập theo điểm yếu
## 🎮 Cách sử dụng
### Các loại câu hỏi được hỗ trợ:
1. **Câu hỏi toán học**:
- "Giải phương trình x + 5 = 10"
- "Tính diện tích hình tròn bán kính 3cm"
- "Chứng minh định lý Pythagore"
2. **Yêu cầu luyện tập**:
- "Cho tôi bài tập về phương trình"
- "Tôi muốn luyện tập thêm"
3. **Biểu đạt stress**:
- "Tôi mệt quá"
- "Khó hiểu quá"
- "Không làm được"
4. **Câu hỏi ngoài chuyên môn**:
- Hệ thống sẽ từ chối và hướng về toán học
## 🔧 Công nghệ sử dụng
- **Framework**: Haystack-AI 2.x
- **LLM**: Google Gemini 1.5 Pro
- **Embedding**: Vietnamese BI-Encoder
- **UI**: Streamlit + Streamlit-Chat
- **Vector Store**: InMemoryDocumentStore
## 📊 Tối ưu hóa
### Caching thông minh:
- `@st.cache_resource` cho việc tải models
- Session state cho lịch sử chat
- Embedding được cache tự động
### Memory Management:
- Giới hạn lịch sử chat (10 tin nhắn gần nhất)
- Lazy loading cho các component
## 🤝 Đóng góp
Dự án này là case study cho AIQAM'25 Workshop. Nếu bạn muốn đóng góp:
1. Fork repository
2. Tạo feature branch
3. Commit changes
4. Push và tạo Pull Request
## 📄 License
MIT License - Chi tiết xem file LICENSE
## 🎓 Tác giả
Dự án được phát triển cho Workshop AIQAM'25 về Interactive QA Systems.
---
**Lưu ý**: Cần thiết lập Google AI API key để sử dụng. Tham khảo [Google AI Studio](https://makersuite.google.com/app/apikey) để lấy key.