Agente de tradução: tradução agente usando fluxo de trabalho de reflexão
Esta é uma demonstração em Python de um fluxo de trabalho de agente de reflexão para tradução automática. As principais etapas são:
- Solicitar a um LLM que traduza um texto do
source_language
para target_language
; - Faça com que o LLM reflita sobre a tradução para apresentar sugestões construtivas para melhorá-la;
- Use as sugestões para melhorar a tradução.
Personalização
Ao usar um LLM como o coração do mecanismo de tradução, este sistema é altamente orientável. Por exemplo, ao alterar os prompts, é mais fácil usar esse fluxo de trabalho do que um sistema tradicional de tradução automática (MT) para:
- Modifique o estilo da saída, como formal/informal.
- Especifique como lidar com expressões idiomáticas e termos especiais, como nomes, termos técnicos e siglas. Por exemplo, incluir um glossário no prompt permite garantir que termos específicos (como código aberto, H100 ou GPU) sejam traduzidos de forma consistente.
- Especifique o uso regional específico do idioma, ou dialetos específicos, para atender um público-alvo. Por exemplo, o espanhol falado na América Latina é diferente do espanhol falado na Espanha; O francês falado no Canadá é diferente de como é falado na França.
Este não é um software maduro e é o resultado de Andrew brincando com traduções nos finais de semana nos últimos meses, além de colaboradores (Joaquin Dominguez, Nedelina Teneva, John Santerre) ajudando a refatorar o código.
De acordo com as nossas avaliações utilizando a pontuação BLEU em conjuntos de dados de tradução tradicionais, este fluxo de trabalho é por vezes competitivo, mas por vezes pior do que as principais ofertas comerciais. No entanto, ocasionalmente também obtivemos resultados fantásticos (superiores às ofertas comerciais) com esta abordagem. Acreditamos que este é apenas um ponto de partida para traduções agenticas e que esta é uma direção promissora para a tradução, com espaço significativo para melhorias futuras, e é por isso que estamos lançando esta demonstração para encorajar mais discussão, experimentação, pesquisa e código aberto contribuições.
Se as traduções agênticas podem gerar melhores resultados do que as arquiteturas tradicionais (como um transformador ponta a ponta que insere um texto e produz diretamente uma tradução) - que muitas vezes são mais rápidas/baratas de executar do que a nossa abordagem aqui - isso também fornece uma mecanismo para gerar automaticamente dados de treinamento (corpora de texto paralelo) que podem ser usados para treinar e melhorar algoritmos tradicionais. (Veja também este artigo no The Batch sobre o uso de LLMs para gerar dados de treinamento.)
Comentários e sugestões sobre como melhorar isso são muito bem-vindos!
Começando
Para começar a usar translation-agent
, siga estas etapas:
Instalação:
- O gerenciador de pacotes Poetry é necessário para instalação. Instalação do Poetry Dependendo do seu ambiente, isso pode funcionar:
- Um arquivo .env com OPENAI_API_KEY é necessário para executar o fluxo de trabalho. Veja o arquivo .env.sample como exemplo.
git clone https://github.com/andrewyng/translation-agent.git
cd translation-agent
poetry install
poetry shell # activates virtual environment
Uso:
import translation_agent as ta
source_lang , target_lang , country = "English" , "Spanish" , "Mexico"
translation = ta . translate ( source_lang , target_lang , source_text , country )
Veja exemplos/example_script.py para ver um exemplo de script para testar.
Licença
O Agente de Tradução é lançado sob a licença MIT . Você é livre para usar, modificar e distribuir o código para fins comerciais e não comerciais.
Ideias para extensões
Aqui estão ideias que não tivemos tempo de experimentar, mas esperamos que a comunidade de código aberto o faça:
- Experimente outros LLMs. Fizemos o protótipo disso principalmente usando gpt-4-turbo. Adoraríamos que outros experimentassem outros LLMs, bem como outras opções de hiperparâmetros, e ver se alguns se saem melhor do que outros para pares de idiomas específicos.
- Criação de glossário. Qual é a melhor maneira de construir de forma eficiente um glossário - talvez usando um LLM - dos termos mais importantes que queremos traduzidos de forma consistente? Por exemplo, muitas empresas utilizam termos especializados que não são amplamente utilizados na Internet e que os LLMs desconhecem, e também há muitos termos que podem ser traduzidos de diversas maneiras. Por exemplo, “código aberto” em espanhol pode ser “Código abierto” ou “Fuente abierta”; ambos estão bem, mas é melhor escolher um e mantê-lo em um único documento.
- Uso e implementação do glossário. Dado um glossário, qual é a melhor maneira de incluí-lo no prompt?
- Avaliações em diferentes idiomas. Como seu desempenho varia em diferentes idiomas? Existem mudanças que fazem com que funcione melhor para determinados idiomas de origem ou de destino? (Observe que para níveis muito altos de desempenho, aos quais os sistemas MT estão se aproximando, não temos certeza se o BLEU é uma ótima métrica.) Além disso, seu desempenho em linguagens de recursos mais baixos precisa de mais estudos.
- Análise de erros. Descobrimos que especificar um idioma e um país/região (por exemplo, “Espanhol como é falado coloquialmente no México”) é um ótimo trabalho para nossas aplicações. Onde a abordagem atual é insuficiente? Também estamos particularmente interessados em compreender seu desempenho em temas especializados (como direito, medicina) ou tipos especiais de texto (como legendas de filmes) para compreender suas limitações.
- Melhores avaliações. Finalmente, pensamos que melhores avaliações (evals) são um tema de investigação enorme e importante. Tal como acontece com outras aplicações LLM que geram texto livre, as métricas de avaliação atuais parecem insuficientes. Por exemplo, descobrimos que mesmo em documentos em que nosso fluxo de trabalho de agência captura melhor o contexto e a terminologia, resultando em traduções que nossos avaliadores humanos preferem às ofertas comerciais atuais, a avaliação no nível da frase (usando o conjunto de dados FLORES) resultou na pontuação mais baixa do sistema de agência. no BLEU. Podemos projetar melhores métricas (talvez usando um LLM para avaliar traduções?) que capturem a qualidade da tradução em um nível de documento que se correlacione melhor com as preferências humanas?
Trabalho relacionado
Alguns grupos de pesquisa acadêmica também estão começando a olhar para a tradução baseada em LLM e com agentes. Achamos que ainda é cedo para este campo!
- ChatGPT MT: Competitivo para linguagens de recursos altos (mas não baixos) , Robinson et al. (2023), https://arxiv.org/pdf/2309.07423
- Como projetar prompts de tradução para ChatGPT: um estudo empírico , Gao et al. (2023), https://arxiv.org/pdf/2304.02182v2
- Além da tradução humana: aproveitando a colaboração multiagente para a tradução de textos literários ultralongos , Wu et al. (2024), https://arxiv.org/pdf/2405.11804