EduLight là một hệ sinh thái microservices hiện đại, được thiết kế để chuyển đổi nội dung video và âm thanh thành các tài nguyên học tập có cấu trúc. Sử dụng sức mạnh của các mô hình ngôn ngữ lớn (LLM) hàng đầu như Gemini 2.0, GPT-4 và Qwen, EduLight tự động hóa quy trình trích xuất kiến thức, tóm tắt nội dung và tạo phụ đề thông minh.
- Trích xuất phác thảo (Outline Extraction): Tự động nhận diện cấu trúc bài giảng/video.
- Phân đoạn chủ đề (Topic Clustering): Chia nhỏ video dài thành các clip ngắn theo chủ đề logic.
- Đánh giá nội dung (Content Scoring): Chấm điểm mức độ quan trọng của các đoạn hội thoại.
- Tạo Timeline: Định vị chính xác các mốc thời gian quan trọng trong video.
- Chuyển đổi Giọng nói thành Văn bản (ASR): Sử dụng AssemblyAI, OpenAI Whisper.
- Tóm tắt đa cấp độ: Cung cấp các bản tóm tắt Ngắn - Trung bình - Dài tùy theo nhu cầu.
- Phát hiện ngôn ngữ: Tự động nhận diện và xử lý đa ngôn ngữ (Tiếng Việt, Tiếng Anh, Tiếng Trung...).
- Tự động chuyển đổi: Hệ thống tự động chuyển đổi giữa 3 tài khoản API Gemini khác nhau khi gặp lỗi Quota Exceeded (429) hoặc Rate Limit.
- Tối ưu hóa chi phí & hiệu năng: Đảm bảo hệ thống hoạt động 24/7 mà không bị gián đoạn do giới hạn của nhà cung cấp API.
- API Gateway: FastAPI trung tâm điều phối tất cả các yêu cầu.
- Task Orchestrator: Sử dụng Celery và Redis để xử lý các tác vụ nặng dưới nền.
- Real-time Notifications: WebSocket cung cấp cập nhật tiến độ xử lý theo thời gian thực cho người dùng.
Hệ thống được chia thành các dịch vụ chuyên biệt:
edulight/
├── backend/
│ ├── api_gateway_fastapi/ # Cổng giao tiếp chính, quản lý Router & Middleware
│ ├── audio_summarizer_service/ # Logic xử lý & tóm tắt âm thanh
│ ├── video_processor_service/ # Logic xử lý video & cắt ghép
│ ├── user_auth_service/ # Quản lý định danh & phân quyền (Supabase)
│ ├── notification_service/ # WebSocket & Thông báo thời gian thực
│ ├── task_orchestrator_celery/ # Quản lý hàng đợi tác vụ
│ └── shared_libs/ # Thư viện dùng chung (Models, Utils, Schemas)
├── ai_models/ # Các mô hình NLP, Speech & LLM Orchestrator
├── infrastructure/ # Cấu hình Docker, Database migrations (Alembic)
├── scripts/ # Scripts quản trị & giám sát hệ thống
└── config/ # Quản lý cấu hình tập trung (YAML/Env)
- Ngôn ngữ: Python 3.10+
- Web Framework: FastAPI (Asynchronous)
- Task Queue: Celery + Redis
- Cơ sở dữ liệu: PostgreSQL (Lưu trữ quan hệ), Redis (Caching & Pub/Sub)
- Migration: Alembic
- Object Storage: Cloudflare R2 / MinIO (S3-compatible)
- Authentication: Supabase Auth
- LLMs: Google Gemini (Primary), OpenAI GPT-4, Aliyun Qwen.
- Speech-to-Text: AssemblyAI, OpenAI Whisper.
- Video Processing: FFmpeg.
- Python 3.10 trở lên.
- PostgreSQL & Redis đã được cài đặt và đang chạy.
- Node.js (nếu sử dụng Frontend - optional).
git clone https://github.com/quangkmhd/edulight.git
cd edulight
pip install -r requirements.txtSao chép file .env.example thành .env và điền đầy đủ các thông tin:
cp .env.example .envCác khóa API quan trọng:
DATABASE_URL: Đường dẫn kết nối PostgreSQL.REDIS_URL: Đường dẫn kết nối Redis.GEMINI_API_KEY_VIDEO: Tài khoản A cho xử lý Video.GEMINI_API_KEY_AUDIO: Tài khoản B cho xử lý Audio.GEMINI_API_KEY_FALLBACK: Tài khoản C dự phòng.
Dự án cung cấp bộ công cụ script mạnh mẽ để quản lý toàn bộ dịch vụ:
chmod +x start_all.sh
./start_all.shScript này sẽ tự động:
- Kiểm tra & khởi động PostgreSQL/Redis.
- Khởi chạy API Gateway (Uvicorn).
- Khởi chạy Celery Workers.
- Kiểm tra trạng thái sức khỏe của các dịch vụ.
./status_all.sh./stop_all.shEduLight giải quyết vấn đề giới hạn API bằng một giải pháp sáng tạo được cấu hình trong config/global.yaml:
api:
enable_quota_fallback: true
gemini_api_keys:
- "GEMINI_API_KEY_VIDEO" # Primary for Video
- "GEMINI_API_KEY_AUDIO" # Primary for Audio
- "GEMINI_API_KEY_FALLBACK" # Universal BackupCơ chế hoạt động:
- Khi một worker xử lý video, nó sử dụng Key Video.
- Nếu gặp lỗi
Resource Exhausted (429), hệ thống sẽ ghi log⚠️ Primary API key hit quota. - Tự động chuyển nốt phần công việc đang dang dở sang Key Fallback.
- Sau một khoảng thời gian cooldown, hệ thống sẽ tự động thử lại với Key chính.
Logs được chia thành các file riêng biệt để dễ dàng theo dõi:
logs/backend.log: Logs của API Gateway.logs/celery.log: Logs của quá trình xử lý ngầm.logs/api_requests.log: Lịch sử các yêu cầu HTTP.
Bạn có thể sử dụng script giám sát API theo thời gian thực:
python scripts/monitor_api_logs.py --follow