Files
multilingual-translation/README.md
jungwoo choi f586f930b6 Initial commit: Multilingual Translation API
- Implemented REST API for 105+ language translation
- Used Facebook M2M100 model (Apache 2.0 License - Commercial use allowed)
- Supports any-to-any translation between 105 languages
- Major languages: English, Chinese, Spanish, Arabic, Russian, Japanese, Korean, etc.
- Southeast Asian: Malay, Indonesian, Thai, Vietnamese, Tagalog, Burmese, Khmer, Lao
- South Asian: Bengali, Hindi, Urdu, Tamil, Telugu, Marathi, Gujarati, etc.
- European: German, French, Italian, Spanish, Portuguese, Russian, etc.
- African: Swahili, Amharic, Hausa, Igbo, Yoruba, Zulu, Xhosa
- And many more languages

Tech Stack:
- FastAPI for REST API
- Transformers (Hugging Face) for ML model
- PyTorch for inference
- Docker for containerization
- M2M100 418M parameter model

Features:
- Health check endpoint
- Supported languages listing
- Dynamic language validation
- Model caching for performance
- GPU support (auto-detection)
- CORS enabled for web clients

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-10 14:11:20 +09:00

138 lines
3.3 KiB
Markdown

# Malaysian Language Translation API
말레이시아어(Bahasa Melayu)와 영어 간의 자연스러운 번역을 제공하는 REST API 서비스입니다.
## 주요 기능
- 말레이시아어 ↔ 영어 양방향 번역
- Helsinki-NLP의 OPUS-MT 신경망 기계 번역 모델 사용
- FastAPI 기반 고성능 REST API
- Docker를 통한 간편한 배포
- 자동 API 문서화 (Swagger UI)
## 빠른 시작
### 1. 로컬 환경 설정
```bash
# Python 가상환경 생성 및 활성화
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# 의존성 설치
pip install -r requirements.txt
# 환경변수 설정 (선택사항)
cp .env.example .env
# 서버 실행
python run.py
```
서버가 실행되면 http://localhost:8000 에서 API에 접근할 수 있습니다.
### 2. Docker로 실행
```bash
# Docker Compose로 실행
docker-compose up -d
# 로그 확인
docker-compose logs -f
```
## API 사용법
### 번역 요청
```bash
curl -X POST "http://localhost:8000/api/translate" \
-H "Content-Type: application/json" \
-d '{
"text": "Selamat pagi, apa khabar?",
"source_lang": "ms",
"target_lang": "en"
}'
```
응답:
```json
{
"original_text": "Selamat pagi, apa khabar?",
"translated_text": "Good morning, how are you?",
"source_lang": "ms",
"target_lang": "en",
"model_used": "Helsinki-NLP/opus-mt-ms-en"
}
```
### 지원 언어 확인
```bash
curl http://localhost:8000/api/supported-languages
```
### 헬스체크
```bash
curl http://localhost:8000/health
```
## API 문서
서버 실행 후 다음 URL에서 자동 생성된 API 문서를 확인할 수 있습니다:
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
## 지원 언어
- **ms**: 말레이시아어 (Bahasa Melayu)
- **en**: 영어 (English)
## 프로젝트 구조
```
site13/
├── app/
│ ├── __init__.py
│ ├── main.py # FastAPI 애플리케이션 및 엔드포인트
│ ├── models.py # Pydantic 데이터 모델
│ ├── translator.py # 번역 서비스 로직
│ └── config.py # 설정 관리
├── models/ # 다운로드된 번역 모델 캐시 (자동 생성)
├── requirements.txt # Python 의존성
├── run.py # 서버 실행 스크립트
├── Dockerfile # Docker 이미지 빌드 설정
├── docker-compose.yml # Docker Compose 설정
└── README.md # 프로젝트 문서
```
## 환경 변수
`.env` 파일에서 다음 설정을 변경할 수 있습니다:
- `API_HOST`: API 서버 호스트 (기본값: 0.0.0.0)
- `API_PORT`: API 서버 포트 (기본값: 8000)
- `MODEL_CACHE_DIR`: 모델 캐시 디렉토리 (기본값: ./models)
- `MAX_LENGTH`: 최대 번역 길이 (기본값: 512)
- `ALLOWED_ORIGINS`: CORS 허용 오리진 (기본값: *)
## 성능 최적화
- 첫 실행 시 모델을 다운로드하므로 시간이 걸릴 수 있습니다
- 모델은 `models/` 디렉토리에 캐시되어 재사용됩니다
- GPU가 있는 경우 자동으로 감지하여 사용합니다
- Docker volume을 사용하여 모델을 영구 저장합니다
## 개발
```bash
# 개발 모드로 실행 (자동 재시작)
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
```
## 라이선스
이 프로젝트는 Helsinki-NLP의 OPUS-MT 모델을 사용합니다.