번역 큐: 일괄 처리 시스템

이 문서에서는 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 비용을 줄이고 번역 품질을 향상시킵니다.


← 문서 색인으로 돌아가기