번역 에이전트: 리플렉션 워크플로를 사용한 에이전트 번역
이것은 기계 번역을 위한 리플렉션 에이전트 워크플로에 대한 Python 데모입니다. 주요 단계는 다음과 같습니다.
- LLM에게
source_language
의 텍스트를 target_language
로 번역하도록 요청합니다. - LLM이 번역을 검토하여 번역 개선을 위한 건설적인 제안을 제시하도록 하십시오.
- 번역을 개선하려면 제안 사항을 사용하세요.
맞춤화 가능성
LLM을 번역 엔진의 핵심으로 사용함으로써 이 시스템은 조정 가능성이 높습니다. 예를 들어 프롬프트를 변경하면 기존 기계 번역(MT) 시스템보다 이 워크플로를 사용하여 다음을 수행하는 것이 더 쉽습니다.
- 공식/비공식 등 출력 스타일을 수정합니다.
- 이름, 기술 용어, 두문자어와 같은 관용어 및 특수 용어를 처리하는 방법을 지정합니다. 예를 들어 프롬프트에 용어집을 포함하면 특정 용어(예: 오픈 소스, H100 또는 GPU)가 일관되게 번역되도록 할 수 있습니다.
- 대상 고객에게 서비스를 제공하기 위해 언어의 특정 지역 사용 또는 특정 방언을 지정합니다. 예를 들어, 라틴 아메리카에서 사용되는 스페인어는 스페인에서 사용되는 스페인어와 다릅니다. 캐나다에서 사용되는 프랑스어는 프랑스에서 사용되는 프랑스어와 다릅니다.
이것은 성숙한 소프트웨어가 아니며 Andrew가 지난 몇 달 동안 주말에 번역 작업을 하고 코드 리팩터링을 돕는 공동 작업자(Joaquin Dominguez, Nedelina Teneva, John Santerre)의 결과입니다.
기존 번역 데이터세트에 대한 BLEU 점수를 사용한 평가에 따르면 이 워크플로는 때로는 주요 상용 제품과 경쟁할 수도 있지만 때로는 더 나쁠 수도 있습니다. 그러나 때때로 우리는 이 접근 방식을 통해 환상적인 결과(상업적 제품보다 우수함)를 얻었습니다. 우리는 이것이 에이전트 번역의 시작점일 뿐이라고 생각하며 이것이 번역의 유망한 방향이며 추가 개선을 위한 상당한 헤드룸이 있다고 생각합니다. 이것이 바로 우리가 더 많은 토론, 실험, 연구 및 오픈 소스를 장려하기 위해 이 데모를 공개하는 이유입니다. 기여.
에이전트 번역이 기존 아키텍처(예: 텍스트를 입력하고 번역을 직접 출력하는 엔드투엔드 변환기)보다 더 나은 결과를 생성할 수 있는 경우(여기서의 접근 방식보다 실행 속도가 더 빠르고 저렴함) 이는 또한 다음을 제공합니다. 기존 알고리즘을 추가로 훈련하고 개선하는 데 사용할 수 있는 훈련 데이터(병렬 텍스트 말뭉치)를 자동으로 생성하는 메커니즘입니다. (LLM을 사용하여 교육 데이터 생성에 대한 The Batch의 이 기사도 참조하세요.)
이 문제를 개선하는 방법에 대한 의견과 제안을 환영합니다!
시작하기
translation-agent
를 시작하려면 다음 단계를 따르세요.
설치:
- 설치에는 Poetry 패키지 관리자가 필요합니다. 시 설치 환경에 따라 다음과 같이 작동할 수 있습니다.
- 워크플로를 실행하려면 OPENAI_API_KEY가 포함된 .env 파일이 필요합니다. 예제로 .env.sample 파일을 참조하세요.
git clone https://github.com/andrewyng/translation-agent.git
cd translation-agent
poetry install
poetry shell # activates virtual environment
용법:
import translation_agent as ta
source_lang , target_lang , country = "English" , "Spanish" , "Mexico"
translation = ta . translate ( source_lang , target_lang , source_text , country )
시험해 볼 예제 스크립트는 example/example_script.py를 참조하세요.
특허
번역 에이전트는 MIT 라이센스 에 따라 출시됩니다. 귀하는 상업적 목적과 비상업적 목적 모두를 위해 코드를 자유롭게 사용, 수정 및 배포할 수 있습니다.
확장 아이디어
다음은 실험할 시간이 없었지만 오픈 소스 커뮤니티에서 기대하는 아이디어입니다.
- 다른 LLM을 시도해 보세요. 우리는 주로 gpt-4-turbo를 사용하여 프로토타입을 제작했습니다. 우리는 다른 사람들이 다른 LLM 및 기타 하이퍼 매개변수 선택을 실험하고 특정 언어 쌍에 대해 일부가 다른 것보다 더 나은지 확인하고 싶습니다.
- 용어집 생성. 일관되게 번역되기를 원하는 가장 중요한 용어에 대해 LLM을 사용하여 효율적으로 용어집을 구축하는 가장 좋은 방법은 무엇입니까? 예를 들어, 많은 기업에서는 인터넷에서 널리 사용되지 않아 LLM이 알지 못하는 전문 용어를 사용하고 있으며, 다양한 방식으로 번역될 수 있는 용어도 많습니다. 예를 들어, 스페인어로 '오픈 소스'는 'Código abierto' 또는 'Fuente abierta'일 수 있습니다. 둘 다 괜찮지만 하나를 선택하여 단일 문서에 사용하는 것이 좋습니다.
- 용어집 사용 및 구현. 주어진 용어집을 프롬프트에 포함시키는 가장 좋은 방법은 무엇입니까?
- 다양한 언어에 대한 평가. 언어에 따라 성능이 어떻게 달라지나요? 특정 소스 또는 타겟 언어에 대해 더 잘 작동하도록 변경된 사항이 있습니까? (MT 시스템이 접근하고 있는 매우 높은 수준의 성능에 대해서는 BLEU가 훌륭한 지표인지 확실하지 않습니다.) 또한 리소스가 적은 언어에 대한 성능에 대해서는 추가 연구가 필요합니다.
- 오류 분석. 우리는 언어와 국가/지역(예: "멕시코에서 구어체로 사용되는 스페인어")을 지정하는 것이 우리 응용 프로그램에 매우 적합하다는 것을 발견했습니다. 현재 접근 방식이 부족한 점은 무엇입니까? 또한 우리는 전문적인 주제(법률, 의학 등) 또는 특별한 유형의 텍스트(영화 자막 등)에 대한 성능을 이해하여 한계를 이해하는 데 특히 관심이 있습니다.
- 더 나은 평가. 마지막으로, 더 나은 평가(evals)는 거대하고 중요한 연구 주제라고 생각합니다. 자유 텍스트를 생성하는 다른 LLM 응용 프로그램과 마찬가지로 현재 평가 지표는 부족한 것으로 보입니다. 예를 들어, 에이전트 워크플로가 컨텍스트와 용어를 더 잘 캡처하여 인간 평가자가 현재 상업용 제품보다 선호하는 번역을 생성하는 문서에서도 문장 수준(FLORES 데이터 세트 사용)에서의 평가로 인해 에이전트 시스템 점수가 낮아진다는 사실을 발견했습니다. BLEU에서. 인간의 선호도와 더 잘 연관되는 문서 수준에서 번역 품질을 포착하는 더 나은 지표(번역을 평가하기 위해 LLM을 사용할 수도 있음)를 설계할 수 있습니까?
관련 작품
몇몇 학술 연구 그룹도 LLM 기반 및 대리인 번역을 살펴보기 시작했습니다. 우리는 이 분야가 초기 단계라고 생각합니다!
- ChatGPT MT: 높은 리소스 언어(낮은 리소스 언어는 아님)에 대한 경쟁력 , Robinson et al. (2023), https://arxiv.org/pdf/2309.07423
- ChatGPT에 대한 번역 프롬프트를 디자인하는 방법: 실증적 연구 , Gao et al. (2023), https://arxiv.org/pdf/2304.02182v2
- 인간 번역을 넘어서: 매우 긴 문학 텍스트 번역을 위한 다중 에이전트 협업 활용 , Wu et al. (2024), https://arxiv.org/pdf/2405.11804