이전에 소개시켜드린바가 있지만, 새로운 기능을 업데이트 하고 리팩토링 작업을 하게 되어 공유합니다.
저는 글로벌 게임 데이터 서비스 OP.GG를 창업하고 운영중입니다.
저희는 15개 국어가 넘는 언어를 서비스중인데, 그동안 사람 번역가를 이용하면서 몇 달간 일정이 미뤄진다던가, 번역 업체들이 몰래 기계 번역기를 이용하여 번역을 해서 오는 어뷰징을 당한다던가, 번역 퀄리티가 너무 낮다던가 하는 일들을 많이 겪으면서 새롭게 구상한 프로젝트입니다.
이 프로젝트는 3개 이상의 언어를 번역할 때 사람에게 맡기는 것 보다 훨씬 빠르게 (수분 내), 그리고 최상의 퀄리티는 아니지만 최소한 중간 이상의 퀄리티를 보장하기 위해서 AI기술을 사용해서 만들어봐야겠다는 목표로 만들기 시작했습니다. 목표는 사람 번역이 90점이고 구글 번역기가 30점이라면, 이 번역기는 80점을 만드는 것이 목표입니다. 그리고 LLM의 발전에 따라, 1-2년 내 90점 이상까지도 바라볼 수 있을 것 같습니다. 물론 비용은 사람보다 훨씬 낮습니다.
주요 고려된 기능들은 다음과 같습니다.
- 가능한 많은 연관 String 을 AI 요청시 컨텍스트에 포함하여 번역의 일관성과 단어 사용의 일관성을 높힙니다. 소스 언어의 스트링과, 타겟 언어의 이미 번역된 스트링을 컨텍스트에 포함합니다. [신규기능]
- 소셜 번역 플랫폼이자 외주를 쉽게 맡길 수 있는 업체들이 연동되어 있는 번역 플랫폼인 CrowdIn 을 이용하신다면, CrowdIn 의 프로젝트도 번역할 수 있는 기능이 숨어있습니다. 라라벨과 전혀 연관 없는 프로젝트셔도 활용하실 수 있습니다. 문서에는 없지만, 저희 내부용으로 개발했습니다. (명령어: ai-translator:translate-crowdin) [신규기능]
- LLM이 지원하는 전세계 모든 언어 설정 가능
- 나만의 언어 기능 추가 가능. 북한 문화어, 레딧 용어등이 README.md 에 예제로 제시되어 있음.
- Claude, OpenAI 지원 (단, Claude 모델 사용이 퀄리티가 높아서 추천드림)
- Claude 3.7 Deep Thinking 지원 [신규기능]
- 라라벨 로컬리제이션 기능중 복수 처리 (Plural) 지원
- 언어를 똑똑하게 번역하도록 함
- 문장인지, 단어인지 구분하여 번역함
- Key 를 보고 가능한 개발자의 의도에 맞게 번역함 (따라서 key 를 매우 명확하게 잘 표현해주셔야함)
- 각 언어와 프로젝트별로 컨텍스트를 추가하여, 프로젝트를 번역할 때 훨씬 더 자연스럽게 번역할 수 있도록 함 (핵심)
- 그냥 번역을 시키는 것 보다 AI에게 이 프로젝트의 어떤 특정 단어는 어떤 것을 의미하는지 명확하게 알려주는 것이 퀄리티 향상에 매우 중요합니다.
- 예를들어 영어로 'Champion' 이라는 단어를 사용할 때, 한국어로 번역할 때는 '챔피언'이라고 번역을 해야하고, 중국어로 번역할 때는 英雄(영웅) 으로 번역한다던가 하는 것을 알려주면 훨씬 더 자연스럽게 번역합니다.
Prompt 작성에 대한 공부를 하시는 분이라면 이 폴더에 방문하셔서 제가 만든 프롬프트를 둘러보세요. 그리고 더해주시고 싶으신 아이디어가 있으면 Pull Request 를 부탁드립니다.