MegaRayquaza21032005/translation-app

Python

0

1 commits

updated May 1, 2026

See the code

README

🌐 HyMT Translation Web App

Ứng dụng dịch thuật AI hỗ trợ English ↔ Vietnamese và 33 ngôn ngữ, powered by AngelSlim/Hy-MT1.5-1.8B-1.25bit.

✨ Features

  • 🇻🇳 English ↔ Vietnamese — Cặp ngôn ngữ mặc định
  • 🌍 33 Languages — Hỗ trợ thêm Trung, Nhật, Hàn, Pháp, Đức, ...
  • 🤖 Hy-MT1.5-1.8B-1.25bit — Model dịch thuật Sherry 1.25-bit (440MB)
  • 🎨 Modern UI — Glassmorphism, dark/light theme
  • 🐳 Docker Ready — Frontend (nginx) + Backend (FastAPI)

📁 Project Structure

translation-app/
├── frontend/                         ← Frontend (HTML/CSS/JS)
│   ├── index.html
│   ├── css/style.css
│   ├── js/
│   │   ├── app.js                    # Main controller (Mediator)
│   │   ├── api-client.js             # API facade
│   │   └── language-selector.js      # Language picker (Observer)
│   ├── nginx.conf                    # Nginx config (proxy to backend)
│   └── Dockerfile                    # Nginx container
├── backend/                          ← Backend (FastAPI + Python)
│   ├── app/
│   │   ├── main.py                   # FastAPI entry + Composition Root
│   │   ├── config.py                 # Settings (pydantic-settings)
│   │   ├── core/
│   │   │   ├── model_manager.py      # Singleton model loader
│   │   │   ├── prompt_builder.py     # Strategy + Factory patterns
│   │   │   └── language_registry.py  # Repository (33 languages)
│   │   ├── schemas/
│   │   │   └── translation.py        # DTO (Pydantic models)
│   │   ├── services/
│   │   │   └── translation_service.py
│   │   └── api/
│   │       └── routes.py             # REST endpoints
│   ├── requirements.txt
│   └── Dockerfile
├── docker-compose.yml
├── .env.example
└── README.md

🏗 Design Patterns

PatternComponentPurpose
SingletonModelManagerSingle model instance in memory
StrategyPromptBuilderZH↔XX vs XX↔XX prompt templates
FactoryPromptBuilderFactoryAuto-select prompt strategy
RepositoryLanguageRegistryCentralized language catalog
DTOschemas/Clean data transfer objects
FacadeApiClient (JS)Simplified API interface
MediatorTranslationApp (JS)UI coordination
DImain.pyComposition Root

🚀 Hướng Dẫn Chạy Dự Án

Yêu Cầu Hệ Thống

Yêu cầuChi tiết
Python3.11 trở lên
RAMTối thiểu 4GB (khuyến nghị 8GB+)
Disk~2GB trống (model ~440MB + dependencies)
GPUNVIDIA GPU + CUDA (khuyến nghị, không bắt buộc)
DockerDocker Engine 24+ & Docker Compose v2 (nếu chạy Docker)

Cách 1: Chạy bằng Docker (Khuyến nghị) 🐳

Bước 1 — Clone project và tạo file .env:

cd translation-app
cp .env.example .env

Bước 2 — Chỉnh sửa .env nếu cần (xem Cấu hình Environment bên dưới).

Bước 3 — Build và chạy cả 2 services:

# Chạy foreground (xem log trực tiếp)
docker compose up --build

# Hoặc chạy background (detached mode)
docker compose up --build -d

⏳ Lần đầu chạy sẽ mất thời gian vì Docker cần:

  1. Build image Python + cài dependencies (~3-5 phút)
  2. Download model từ HuggingFace (~440MB)
  3. Load model vào bộ nhớ

Bước 4 — Truy cập ứng dụng:

ServiceURLMô tả
Frontendhttp://localhost:3000Giao diện dịch thuật
Backend APIhttp://localhost:8000/docsSwagger API docs
Health Checkhttp://localhost:8000/api/v1/healthKiểm tra backend

Dừng ứng dụng:

docker compose down           # Dừng containers
docker compose down -v        # Dừng + xóa volume cache model

Xem logs:

docker compose logs -f backend    # Log backend (model loading, requests)
docker compose logs -f frontend   # Log nginx

Bật GPU (NVIDIA) cho Docker

Nếu máy có GPU NVIDIA, mở docker-compose.yml và uncomment phần deploy:

backend:
  # ...
  deploy:
    resources:
      reservations:
        devices:
          - driver: nvidia
            count: 1
            capabilities: [gpu]

Yêu cầu đã cài NVIDIA Container Toolkit.


Cách 2: Chạy Local (Development) 💻

Bước 1 — Cài đặt Backend

# Di chuyển vào thư mục backend
cd translation-app/backend

# Tạo virtual environment
python3 -m venv venv

# Kích hoạt virtual environment
source venv/bin/activate        # Linux/Mac
# venv\Scripts\activate         # Windows

# Cài đặt dependencies
pip install -r requirements.txt

Bước 2 — Cấu hình Environment

# Tạo file .env từ template (ở thư mục gốc)
cp ../.env.example .env

Hoặc tạo file .env trong thư mục backend/ với nội dung:

MODEL_NAME=AngelSlim/Hy-MT1.5-1.8B-1.25bit
MODEL_DEVICE=auto
CORS_ORIGINS=*

Bước 3 — Chạy Backend Server

# Chạy development server (có auto-reload khi sửa code)
python -m uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload

⏳ Lần đầu chạy, server sẽ tự động download model từ HuggingFace (~440MB). Sau khi download xong, model được cache tại ~/.cache/huggingface/. Các lần chạy sau sẽ load trực tiếp từ cache (nhanh hơn).

Khi thấy log Model loaded successfully, backend đã sẵn sàng.

Bước 4 — Chạy Frontend (Terminal mới)

# Mở terminal mới, di chuyển vào thư mục frontend
cd translation-app/frontend

# Chạy simple HTTP server
python3 -m http.server 3000

Bước 5 — Truy cập ứng dụng


⚙️ Cấu Hình Environment

Các biến môi trường trong file .env:

BiếnMặc địnhMô tả
MODEL_NAMEAngelSlim/Hy-MT1.5-1.8B-1.25bitTên model trên HuggingFace
MODEL_DEVICEautoDevice: auto, cpu, cuda, cuda:0
MODEL_MAX_NEW_TOKENS2048Số token tối đa model sinh ra
MODEL_TOP_K20Top-K sampling
MODEL_TOP_P0.6Top-P (nucleus) sampling
MODEL_TEMPERATURE0.7Nhiệt độ sampling
MODEL_REPETITION_PENALTY1.05Phạt lặp từ
CORS_ORIGINS*Allowed origins (CORS)
BACKEND_PORT8000Port backend (Docker)
FRONTEND_PORT3000Port frontend (Docker)

Lưu ý: Nếu chỉ có CPU, đặt MODEL_DEVICE=cpu. Dịch sẽ chậm hơn (~10-30s/request) nhưng vẫn hoạt động.


🔧 Troubleshooting

Vấn đềGiải pháp
CUDA out of memoryĐặt MODEL_DEVICE=cpu trong .env
Model download chậm/timeoutDùng mirror: HF_ENDPOINT=https://hf-mirror.com
Frontend hiện "Offline"Kiểm tra backend đã chạy chưa, port 8000 có đúng không
ModuleNotFoundErrorKiểm tra đã activate venv và pip install -r requirements.txt
Docker build failKiểm tra Docker version: docker --version (cần 24+)
Port đã bị chiếmĐổi port trong .env: BACKEND_PORT=8001

📡 API Endpoints

MethodEndpointDescription
POST/api/v1/translateDịch văn bản
GET/api/v1/languagesDanh sách ngôn ngữ
GET/api/v1/model/statusTrạng thái model
GET/api/v1/healthHealth check

Example

curl -X POST http://localhost:8000/api/v1/translate \
  -H "Content-Type: application/json" \
  -d '{
    "source_text": "Hello, how are you?",
    "source_language": "en",
    "target_language": "vi"
  }'

📝 Model Info

  • Model: AngelSlim/Hy-MT1.5-1.8B-1.25bit
  • Size: ~440MB (Sherry 1.25-bit quantized)
  • Base: Tencent HY-MT1.5-1.8B
  • Languages: 33 languages, 1,056 translation directions

MegaRayquaza21032005/translation-app

Python

0

1 commits

updated May 1, 2026

See the code

README

🌐 HyMT Translation Web App

Ứng dụng dịch thuật AI hỗ trợ English ↔ Vietnamese và 33 ngôn ngữ, powered by AngelSlim/Hy-MT1.5-1.8B-1.25bit.

✨ Features

  • 🇻🇳 English ↔ Vietnamese — Cặp ngôn ngữ mặc định
  • 🌍 33 Languages — Hỗ trợ thêm Trung, Nhật, Hàn, Pháp, Đức, ...
  • 🤖 Hy-MT1.5-1.8B-1.25bit — Model dịch thuật Sherry 1.25-bit (440MB)
  • 🎨 Modern UI — Glassmorphism, dark/light theme
  • 🐳 Docker Ready — Frontend (nginx) + Backend (FastAPI)

📁 Project Structure

translation-app/
├── frontend/                         ← Frontend (HTML/CSS/JS)
│   ├── index.html
│   ├── css/style.css
│   ├── js/
│   │   ├── app.js                    # Main controller (Mediator)
│   │   ├── api-client.js             # API facade
│   │   └── language-selector.js      # Language picker (Observer)
│   ├── nginx.conf                    # Nginx config (proxy to backend)
│   └── Dockerfile                    # Nginx container
├── backend/                          ← Backend (FastAPI + Python)
│   ├── app/
│   │   ├── main.py                   # FastAPI entry + Composition Root
│   │   ├── config.py                 # Settings (pydantic-settings)
│   │   ├── core/
│   │   │   ├── model_manager.py      # Singleton model loader
│   │   │   ├── prompt_builder.py     # Strategy + Factory patterns
│   │   │   └── language_registry.py  # Repository (33 languages)
│   │   ├── schemas/
│   │   │   └── translation.py        # DTO (Pydantic models)
│   │   ├── services/
│   │   │   └── translation_service.py
│   │   └── api/
│   │       └── routes.py             # REST endpoints
│   ├── requirements.txt
│   └── Dockerfile
├── docker-compose.yml
├── .env.example
└── README.md

🏗 Design Patterns

PatternComponentPurpose
SingletonModelManagerSingle model instance in memory
StrategyPromptBuilderZH↔XX vs XX↔XX prompt templates
FactoryPromptBuilderFactoryAuto-select prompt strategy
RepositoryLanguageRegistryCentralized language catalog
DTOschemas/Clean data transfer objects
FacadeApiClient (JS)Simplified API interface
MediatorTranslationApp (JS)UI coordination
DImain.pyComposition Root

🚀 Hướng Dẫn Chạy Dự Án

Yêu Cầu Hệ Thống

Yêu cầuChi tiết
Python3.11 trở lên
RAMTối thiểu 4GB (khuyến nghị 8GB+)
Disk~2GB trống (model ~440MB + dependencies)
GPUNVIDIA GPU + CUDA (khuyến nghị, không bắt buộc)
DockerDocker Engine 24+ & Docker Compose v2 (nếu chạy Docker)

Cách 1: Chạy bằng Docker (Khuyến nghị) 🐳

Bước 1 — Clone project và tạo file .env:

cd translation-app
cp .env.example .env

Bước 2 — Chỉnh sửa .env nếu cần (xem Cấu hình Environment bên dưới).

Bước 3 — Build và chạy cả 2 services:

# Chạy foreground (xem log trực tiếp)
docker compose up --build

# Hoặc chạy background (detached mode)
docker compose up --build -d

⏳ Lần đầu chạy sẽ mất thời gian vì Docker cần:

  1. Build image Python + cài dependencies (~3-5 phút)
  2. Download model từ HuggingFace (~440MB)
  3. Load model vào bộ nhớ

Bước 4 — Truy cập ứng dụng:

ServiceURLMô tả
Frontendhttp://localhost:3000Giao diện dịch thuật
Backend APIhttp://localhost:8000/docsSwagger API docs
Health Checkhttp://localhost:8000/api/v1/healthKiểm tra backend

Dừng ứng dụng:

docker compose down           # Dừng containers
docker compose down -v        # Dừng + xóa volume cache model

Xem logs:

docker compose logs -f backend    # Log backend (model loading, requests)
docker compose logs -f frontend   # Log nginx

Bật GPU (NVIDIA) cho Docker

Nếu máy có GPU NVIDIA, mở docker-compose.yml và uncomment phần deploy:

backend:
  # ...
  deploy:
    resources:
      reservations:
        devices:
          - driver: nvidia
            count: 1
            capabilities: [gpu]

Yêu cầu đã cài NVIDIA Container Toolkit.


Cách 2: Chạy Local (Development) 💻

Bước 1 — Cài đặt Backend

# Di chuyển vào thư mục backend
cd translation-app/backend

# Tạo virtual environment
python3 -m venv venv

# Kích hoạt virtual environment
source venv/bin/activate        # Linux/Mac
# venv\Scripts\activate         # Windows

# Cài đặt dependencies
pip install -r requirements.txt

Bước 2 — Cấu hình Environment

# Tạo file .env từ template (ở thư mục gốc)
cp ../.env.example .env

Hoặc tạo file .env trong thư mục backend/ với nội dung:

MODEL_NAME=AngelSlim/Hy-MT1.5-1.8B-1.25bit
MODEL_DEVICE=auto
CORS_ORIGINS=*

Bước 3 — Chạy Backend Server

# Chạy development server (có auto-reload khi sửa code)
python -m uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload

⏳ Lần đầu chạy, server sẽ tự động download model từ HuggingFace (~440MB). Sau khi download xong, model được cache tại ~/.cache/huggingface/. Các lần chạy sau sẽ load trực tiếp từ cache (nhanh hơn).

Khi thấy log Model loaded successfully, backend đã sẵn sàng.

Bước 4 — Chạy Frontend (Terminal mới)

# Mở terminal mới, di chuyển vào thư mục frontend
cd translation-app/frontend

# Chạy simple HTTP server
python3 -m http.server 3000

Bước 5 — Truy cập ứng dụng


⚙️ Cấu Hình Environment

Các biến môi trường trong file .env:

BiếnMặc địnhMô tả
MODEL_NAMEAngelSlim/Hy-MT1.5-1.8B-1.25bitTên model trên HuggingFace
MODEL_DEVICEautoDevice: auto, cpu, cuda, cuda:0
MODEL_MAX_NEW_TOKENS2048Số token tối đa model sinh ra
MODEL_TOP_K20Top-K sampling
MODEL_TOP_P0.6Top-P (nucleus) sampling
MODEL_TEMPERATURE0.7Nhiệt độ sampling
MODEL_REPETITION_PENALTY1.05Phạt lặp từ
CORS_ORIGINS*Allowed origins (CORS)
BACKEND_PORT8000Port backend (Docker)
FRONTEND_PORT3000Port frontend (Docker)

Lưu ý: Nếu chỉ có CPU, đặt MODEL_DEVICE=cpu. Dịch sẽ chậm hơn (~10-30s/request) nhưng vẫn hoạt động.


🔧 Troubleshooting

Vấn đềGiải pháp
CUDA out of memoryĐặt MODEL_DEVICE=cpu trong .env
Model download chậm/timeoutDùng mirror: HF_ENDPOINT=https://hf-mirror.com
Frontend hiện "Offline"Kiểm tra backend đã chạy chưa, port 8000 có đúng không
ModuleNotFoundErrorKiểm tra đã activate venv và pip install -r requirements.txt
Docker build failKiểm tra Docker version: docker --version (cần 24+)
Port đã bị chiếmĐổi port trong .env: BACKEND_PORT=8001

📡 API Endpoints

MethodEndpointDescription
POST/api/v1/translateDịch văn bản
GET/api/v1/languagesDanh sách ngôn ngữ
GET/api/v1/model/statusTrạng thái model
GET/api/v1/healthHealth check

Example

curl -X POST http://localhost:8000/api/v1/translate \
  -H "Content-Type: application/json" \
  -d '{
    "source_text": "Hello, how are you?",
    "source_language": "en",
    "target_language": "vi"
  }'

📝 Model Info

  • Model: AngelSlim/Hy-MT1.5-1.8B-1.25bit
  • Size: ~440MB (Sherry 1.25-bit quantized)
  • Base: Tencent HY-MT1.5-1.8B
  • Languages: 33 languages, 1,056 translation directions