- Nguyễn Thế Giáp (Leader) - B22DCCN251
- Nguyễn Đình Dũng - B22DCCN131
- Phạm Minh Đức - B22DCCN239
Smart Trans AI là một hệ thống hỗ trợ dịch thuật học thuật chuyên ngành (Computer-Assisted Translation - CAT Tool thế hệ mới) được thiết kế lai (hybrid), hỗ trợ vận hành song song trên môi trường Web đám mây hoặc đóng gói thành phần mềm Desktop offline an toàn trên thiết bị biên.
Hệ thống ứng dụng mô hình dịch thuật chuyên biệt NMT (Neural Machine Translation) cục bộ (opus-mt-en-vi dung lượng siêu nhẹ ~300MB) chạy mượt mà hoàn toàn offline trên CPU thông thường mà không cần GPU đắt đỏ, kết hợp với cơ chế RAG thuật ngữ thông minh và vòng lặp tự học trực tuyến từ phản hồi con người:
- Tích hợp Tauri Desktop (Rust + Webview): Sử dụng Rust làm cầu nối bảo mật bọc ngoài React Frontend, tự động khởi chạy và quản lý vòng đời của FastAPI Python backend dưới dạng tiến trình con chạy ngầm (Sidecar), giải phóng hoàn toàn bộ nhớ khi tắt app.
- Học ngữ cảnh động (Translation Memory): Tự động lưu lại các bản dịch được con người hiệu chỉnh làm ví dụ Few-shot trong ngữ cảnh dịch của các câu tiếp theo, giúp mô hình bắt chước văn phong và tự sửa lỗi thói quen.
- Tự cập nhật Glossary động (Auto-Glossary Update): Tự động nhận diện sự thay đổi từ dịch thuật ngữ chuyên ngành do người dùng sửa đổi trực tiếp để cập nhật ngược lại SQLite database cục bộ, áp dụng ngay lập tức cho các câu sau.
- Bảo toàn định dạng tài liệu: Giữ nguyên 100% định dạng in đậm, in nghiêng, công thức toán học LaTeX, các bảng biểu và ký tự đặc biệt của file gốc.
Dự án được thiết kế phân lớp và hỗ trợ cả đóng gói Tauri sidecar:
smart-trans-ai/
│
├── backend/ # Backend Source Code (FastAPI + SQLite)
│ ├── app/
│ │ ├── main.py # Khởi tạo FastAPI, CORS, serving static
│ │ ├── core/ # Cấu hình hệ thống (Config, Security, Settings)
│ │ ├── database.py # Quản lý DB Session
│ │ ├── models.py # Định nghĩa DB Models (User, Doc, Chunk, Glossary)
│ │ ├── api/ # Tiếp nhận Requests (auth, document, glossary)
│ │ ├── services/
│ │ │ ├── doc_processor.py # Tiền xử lý tài liệu (PDF/Word/TXT)
│ │ │ ├── vector_service.py # RAG đối sánh Cosine Similarity trên SQLite
│ │ │ └── nmt_service.py # [NEW] Mô hình dịch thuật NMT offline cục bộ
│ │ └── llm_provider.py # Quản lý kết nối LLM (Gemini, Llama-3, OPUS-MT)
│ ├── requirements.txt # Các thư viện Python cần thiết
│ └── run_desktop.py # Điểm bắt đầu khởi chạy backend cục bộ
│
├── frontend/ # Frontend Source Code (React.js + Vite)
│ ├── src/
│ │ ├── components/ # UI Components dùng chung
│ │ ├── features/ # Chia thư mục theo cụm tính năng (auth, workspace...)
│ │ └── main.jsx
│ └── src-tauri/ # [NEW] Thư mục cấu hình Tauri Desktop App (Rust)
│ ├── src/main.rs # Rust code quản lý spawn/kill sidecar Python backend
│ ├── Cargo.toml # Quản lý dependency của Tauri app
│ └── tauri.conf.json # Cấu hình ứng dụng Tauri (Window size, Sidecar externalBin...)
│
├── data/ # Thư mục chứa tài nguyên thực nghiệm
│ ├── input_academic.txt # File câu gốc CNTT kiểm thử
│ ├── glossary.json # Từ điển thuật ngữ CNTT mẫu
│ ├── ground_truth.json # Bản dịch đối chứng chuẩn của con người
│ └── evaluation_results.md # Báo cáo kết quả BLEU, TER, GCR thực tế
│
├── build_desktop.py # Script tự động đóng gói FastAPI + React + Tauri thành app cài đặt
├── run_evaluation.py # Script chạy thực nghiệm tự động
└── README.md # Hướng dẫn dự án
- Python 3.10 trở lên
- Node.js 18 trở lên (đã tích hợp npm)
Ứng dụng Tauri yêu cầu trình biên dịch Rust để build mã nguồn hệ thống:
- Windows: Tải và cài đặt Rustup thông qua rustup.rs. Ngoài ra cần cài đặt gói công cụ build của C++ thông qua Visual Studio Build Tools (chọn C++ build tools).
Hệ thống hỗ trợ 3 cách chạy chính tùy theo mục đích phát triển và kiểm thử:
Dành cho lập trình viên muốn deploy web, chỉnh sửa code hot-reload cho cả backend và frontend.
Tạo file .env tại thư mục /backend (sử dụng nội dung từ mẫu dưới đây):
DATABASE_URL=sqlite:///./smart_trans.db
JWT_SECRET=supersecretjwtkeychangeinproduction12345
JWT_ALGORITHM=HS256
ACCESS_TOKEN_EXPIRE_MINUTES=1440
# Cấu hình OpenRouter API phục vụ chế độ dịch hybrid online
OPENROUTER_API_KEY=your_openrouter_api_key_here
OPENROUTER_MODEL=google/gemini-2.5-pro
OPENROUTER_BASE_URL=https://openrouter.ai/api/v1- Mở terminal mới, di chuyển vào thư mục backend:
cd backend - Cài đặt các thư viện cần thiết:
pip install -r requirements.txt
- Khởi chạy server API:
python -m uvicorn app.main:app --host 127.0.0.1 --port 8000 --reload
API docs tương tác sẽ tự động hiển thị tại: http://127.0.0.1:8000/docs
- Mở terminal song song khác, di chuyển vào thư mục frontend:
cd frontend - Cài đặt các package:
npm install
- Chạy client ở chế độ phát triển:
npm run dev
- Truy cập giao diện chính của hệ thống tại: http://localhost:5173
Dành cho lập trình viên muốn chạy thử nghiệm trực tiếp cửa sổ ứng dụng Desktop cục bộ và kiểm tra tính tương thích của Webview với OS.
- Đảm bảo file chạy backend sidecar đã được tạo tại
frontend/src-tauri/src/bin/SmartTransAI-x86_64-pc-windows-msvc.exe. Cách đơn giản nhất để tạo nó là chạy lệnh đóng gói dưới đây một lần:(Sau khi file sidecar đã được tạo, các lần chạy thử nghiệm sau sẽ tự động bỏ qua đóng gói backend và khởi chạy rất nhanh).python build_desktop.py
- Di chuyển vào thư mục frontend:
cd frontend - Chạy ứng dụng Tauri ở chế độ phát triển:
npm run tauri dev
- Cửa sổ Desktop của ứng dụng Smart Trans AI sẽ tự động hiển thị trực quan mà không cần mở trình duyệt web.
Dành cho việc đóng gói bản phân phối release độc lập dạng file cài đặt, tự động bọc backend FastAPI làm sidecar tiến trình con.
- Tại thư mục gốc của dự án, mở terminal PowerShell và chạy lệnh:
python build_desktop.py
- Quy trình đóng gói tự động:
- Build React frontend thành file tĩnh trong thư mục
frontend/dist. - Tối ưu hóa bỏ qua đóng gói (Skip-rebuild): Để tiết kiệm thời gian (tránh biên dịch lại PyInstaller mất 10 phút), script sẽ tự động kiểm tra và sử dụng lại file sidecar có sẵn nếu nó đã tồn tại trong
frontend/src-tauri/src/bin/. - Bắt buộc đóng gói lại backend (Force-rebuild): Nếu bạn sửa đổi code của FastAPI Backend và muốn bắt buộc đóng gói lại backend, hãy thêm tham số
--force-backend:python build_desktop.py --force-backend
- Gọi Rust Compiler biên dịch mã nguồn Tauri thành file chạy desktop cài đặt hoàn chỉnh.
- Build React frontend thành file tĩnh trong thư mục
- Kết quả đầu ra: Gói cài đặt
.msivà.exesẽ được tạo ra tại thư mụcfrontend/src-tauri/target/release/bundle/. - Tải và cài đặt file này trên Windows, ứng dụng sẽ chạy offline hoàn toàn độc lập, tự động bật/tắt FastAPI backend ngầm mỗi khi bạn mở/đóng app.
Để đo đạc BLEU, TER, và tỷ lệ tuân thủ Glossary (GCR) thực tế của mô hình NMT cục bộ so với các baseline dịch thô trực tuyến:
- Đảm bảo đã điền API Key trong
/backend/.env. - Mở terminal tại thư mục gốc của dự án và chạy:
python run_evaluation.py
- Cơ chế Fast Offline Fallback:
- Script sẽ tự động kiểm tra nhanh kết nối và quota của OpenRouter API key.
- Nếu phát hiện mất kết nối hoặc API key hết credits (lỗi 402), hệ thống tự động kích hoạt Fast Offline Fallback Mode, lập tức giả lập lỗi LLM để chuyển hướng Proposed Model sang dịch offline bằng mô hình NMT chuyên dụng cục bộ.
- Điều này giúp script chạy cực kỳ nhanh (mất 5 giây thay vì 10 phút chờ timeout DNS trên Windows) và bảo đảm việc thử nghiệm luôn hoạt động ổn định.
- Kết quả bảng số liệu thực nghiệm đối sánh chi tiết sẽ được hiển thị trực tiếp và lưu tại file
data/evaluation_results.md.