mmqa-chatbot / README.md
quyk67uet
Add Hugging Face metadata to README 2
bdd85b8

A newer version of the Streamlit SDK is available: 1.49.1

Upgrade
metadata
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

pip install -r requirements.txt

2. Thiết lập Google AI API Key

export GOOGLE_API_KEY="your_api_key_here"

Hoặc trên Windows:

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

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 để lấy key.