Skip to content

soonvro/gemini-translator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Gemini-Translator

주요 기능

  • 대용량 텍스트 번역: 텍스트를 관리 가능한 청크(chunk)로 분할하여 이론상 무제한 길이의 텍스트를 번역할 수 있습니다.
  • 스마트 청크 분할: 임의의 길이가 아닌 자연스러운 경계(문장, 절)를 기준으로 텍스트를 청크로 나누어 번역 컨텍스트를 보존하고 번역 품질을 향상시킵니다.
  • LLM 출력 토큰 제한 처리: 텍스트를 적절한 크기의 세그먼트로 처리하여 LLM의 출력 토큰 제한 내에서 작동하도록 설계되었습니다.
  • RPM (Rate Limit) 관리: asyncio 큐(queue)와 락(lock) 메커니즘을 사용하여 LLM API 속도 제한(분당 요청 수)을 효과적으로 관리합니다. 제한을 초과하는 요청은 큐에 대기시킨 후 순차적으로 처리하여 API 오류를 방지합니다.
  • 강력한 오류 처리 및 재시도: 일반적인 일시적 LLM API 오류(예: 속도 제한, 서버 오류)에 대해 **지수 백오프(exponential backoff)**를 사용한 자동 재시도를 구현하여 안정성을 높입니다.
  • 테스트 주도 개발 (TDD): 코드 품질과 유지보수성을 보장하기 위해 TDD에 중점을 두고 개발되었습니다.
  • 명확한 테스트 분리: 포괄적인 검증을 위해 단위 테스트(모의 객체(mock) 사용, 실제 API 호출 없음)와 통합 테스트(API 호출 필요)를 명확하게 분리하여 포함합니다.
  • 모의 객체(Mock)를 이용한 단위 테스트: 단위 테스트는 모의 객체를 활용하여 컴포넌트를 격리하고 외부 API 호출 없이 로직을 테스트하여 속도와 독립성을 보장합니다.
  • 비동기 처리: asyncio를 활용하여 텍스트 청크를 동시에 처리함으로써 대용량 문서 번역 속도를 잠재적으로 향상시킵니다.

이 프로젝트를 만든 이유

LLM API와의 표준적인 상호작용은 종종 다음과 같은 문제에 직면합니다:

  1. 토큰 제한: 대부분의 LLM에는 입력 및 출력 토큰 제한이 있어 긴 문서를 직접 번역하는 것이 불가능합니다.
  2. 속도 제한: API는 분당 요청 수(RPM) 또는 유사한 할당량을 강제하며, 이는 대용량 텍스트를 여러 청크로 나누어 처리할 때 쉽게 초과될 수 있습니다.
  3. API 오류: 네트워크 문제나 일시적인 서비스 중단으로 인해 번역 프로세스가 중단될 수 있습니다.

이 프로젝트는 다음을 통해 이러한 문제를 해결합니다:

  • 자연어 구조를 존중하는 지능적인 텍스트 분할 메커니즘 구현.
  • 지정된 RPM 제한 내에서 API 호출을 관리하기 위해 비동기 프로그래밍 및 큐 시스템 사용.
  • 일시적인 API 오류에 대한 강력한 재시도 로직 통합.
  • 포괄적인 테스트를 통한 TDD 원칙 준수로 안정성 보장.

이 프로젝트는 최신 LLM의 강력한 기능을 사용하여 상당한 양의 텍스트를 번역하기 위한 개발자 친화적이고 복원력 있는 솔루션을 제공하는 것을 목표로 합니다.

About

Gemini API를 이용한 LLM 기반 번역기

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages