번역 큐: 일괄 처리 시스템
이 문서에서는 AI API 사용을 최적화하기 위해 번역을 어떻게 큐에 넣고 일괄 처리하는지 설명합니다.
문제점: 주문형 번역은 비용이 많이 듭니다
콘텐츠를 주문형으로 번역하는 데는 다음과 같은 문제가 있습니다:
-
느림: 각 번역에 1-2초 소요
-
비쌈: 요청당 API 비용 발생
-
중복: 동일한 텍스트가 여러 번 번역됨
-
차단: 사용자가 번역을 기다려야 함
더 나은 접근 방식이 필요합니다.
해결책: 큐와 일괄 처리
큐: 번역 요청 수집
일괄 처리: 여러 번역을 함께 처리
캐시: 결과를 재사용 위해 저장
스케줄링: 큐를 주기적으로 처리(실시간 아님)
큐 구조
큐 파일
위치: 디스크의 JSON 파일
형식: 번역 요청 배열
필드:
-
text: 번역할 영어 텍스트 -
target_lang: 언어 코드(hi, de, fr 등) -
context: 텍스트가 나타나는 위치(제품, 쿼리, 기사) -
priority: 높음/보통/낮음
큐에 추가
번역이 누락되었을 때:
queue_translation(text, target_lang, context="product")
중복 제거: 이미 큐에 있는지 확인
검증: 무의미한 값 거부
일괄 처리
스크립트
위치: scripts/web/process_translation_queue.py
스케줄: cron을 통해 6시간마다 실행
락 파일: 동시 실행 방지
처리 흐름
1. 큐 로드: 모든 대기 중인 요청 읽기
2. 언어별 그룹화: 동일 언어 요청 일괄 처리
3. 중복 제거: 일괄 내 중복 제거
4. 캐시 확인: 이미 번역된 텍스트 건너뛰기
5. 일괄 번역: DeepSeek API로 전송
6. 결과 파싱: 응답에서 번역 추출
7. 캐시 저장: 구문 테이블에 저장
8. 큐 비우기: 처리된 요청 제거
일괄 번역
API 호출
모델: DeepSeek-V3 (Together.ai 통해)
시스템 프롬프트: 캐시됨(언어 내 모든 배치에 동일)
사용자 프롬프트: 가변적(배치별)
형식: 번호가 매겨진 목록
예시:
Translate these 10 texts:
1. Mini PC
2. Thin Client
3. Compact Desktop
...
응답:
1. मिनी पीसी
2. थिन क्लाइंट
3. कॉम्पैक्ट डेस्कटॉप
...
파싱
줄 번호로 번역 추출:
-
숫자 접두사 제거(
1.,2.등) -
위치별로 원본 텍스트와 매칭
-
개수가 일치하는지 검증
오류 처리
API 실패: 대체 API로 재시도
파싱 실패: 원본 텍스트 반환
부분적 성공: 성공한 번역 저장, 실패한 항목 재큐잉
캐싱 전략
구문 테이블
위치: 언어별 JSON 파일
형식: {"English": "Translation"}
로딩: 시작 시 한 번 로드
장점: 빠른 조회, API 호출 없음
캐시 적중률
첫 실행: 낮음(모든 것이 새로움)
후속 실행: 높음(대부분 텍스트 캐시됨)
장점: API 비용 감소
보존 규칙
번역 중 다음을 보존합니다:
브랜드 이름: Thinvent®, Intel®, AMD®
HTML 태그: <p>, <br>, <strong>
URL: https://www.thinvent.in
SKU: Treo-N100-8-256
숫자: 8GB, 256GB, 4 cores
구현: 시스템 프롬프트의 정규식 패턴
언어 감지
번역하기 전에 이미 번역되었는지 확인:
방법: 문자 집합 분석
힌디어: 데바나가리 문자
중국어: CJK 문자
아랍어: 아랍 문자
장점: 불필요한 번역 건너뜀
우선순위 처리
높음 우선순위: 제품명, 기능(먼저 처리)
보통 우선순위: 설명, 기사(두 번째 처리)
낮음 우선순위: 오래된 콘텐츠, 거의 보지 않는 콘텐츠(마지막 처리)
장점: 중요한 콘텐츠가 먼저 번역됨
스케줄링
Cron 작업
빈도: 6시간마다
명령: python3 scripts/web/process_translation_queue.py
락 파일: /tmp/process_translation_queue.lock
장점: 자동 처리, 수동 개입 없음
주간 작업
기사: 새 기사 주간 번역
Babel 문자열: 템플릿 번역 주간 업데이트
스크립트: scripts/web/translate_articles_weekly.sh
모니터링
큐 크기
대기 중인 요청 추적:
-
총 요청 수
-
언어별 요청 수
-
가장 오래된 요청 기간
경고: 큐가 너무 커지면
번역 통계
처리 추적:
-
배치당 번역 수
-
API 성공률
-
캐시 적중률
-
처리 시간
비용 추적
API 사용 모니터링:
-
일일 요청 수
-
요청당 토큰 수
-
언어별 비용
참고 자료
관련 문서
요약
번역 큐는 효율적인 일괄 처리를 가능하게 합니다:
큐:
-
✅ 번역 요청 수집
-
✅ 일괄 내 중복 제거
-
✅ 우선순위 처리
-
✅ 검증 및 필터링
일괄 처리:
-
✅ 언어별 그룹화
-
✅ DeepSeek API로 전송
-
✅ 번호가 매겨진 응답 파싱
-
✅ 구문 테이블에 저장
캐싱:
-
✅ 번역 전 캐시 확인
-
✅ 높은 캐시 적중률
-
✅ API 비용 감소
스케줄링:
-
✅ cron을 통해 6시간마다
-
✅ 락 파일로 동시 실행 방지
-
✅ 주간 기사 번역
보존:
-
✅ 브랜드 이름
-
✅ HTML 태그
-
✅ URL 및 SKU
이 접근 방식은 일괄 처리와 캐싱을 통해 API 비용을 줄이고 번역 품질을 향상시킵니다.