Skip to content

Latest commit

 

History

137 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages