翻译代理:使用反思工作流的智能翻译
这是一个使用反思工作流进行机器翻译的Python演示。主要步骤如下:
- 提示LLM将文本从
源语言
翻译成目标语言
; - 让LLM反思翻译,提出建设性的改进建议;
- 利用这些建议来改进翻译。
可定制性
通过使用LLM作为翻译引擎的核心,该系统具有高度的可操控性。例如,通过更改提示,使用这种工作流比传统机器翻译(MT)系统更容易:
- 修改输出的风格,如正式/非正式。
- 指定如何处理习语和特殊术语,如名称、技术术语和缩写。例如,在提示中包含术语表可以确保特定术语(如开源、H100或GPU)的翻译保持一致。
- 指定语言的特定地区用法或特定方言,以服务于目标受众。例如,拉丁美洲使用的西班牙语与西班牙使用的不同;加拿大使用的法语与法国使用的不同。
这不是成熟的软件,而是Andrew在过去几个月的周末里玩转翻译的结果,加上合作者(Joaquin Dominguez、Nedelina Teneva、John Santerre)帮助重构代码。
根据我们使用BLEU分数在传统翻译数据集上的评估,这个工作流有时可以与领先的商业产品竞争,但有时也不如它们。然而,我们偶尔也得到了出色的结果(优于商业产品)。我们认为这只是智能翻译的起点,是一个有前景的翻译方向,还有很大的改进空间,这就是为什么我们发布这个演示来鼓励更多的讨论、实验、研究和开源贡献。
如果智能翻译能够生成比传统架构(如输入文本直接输出翻译的端到端transformer)更好的结果——这些架构通常比我们这里的方法运行得更快/更便宜——这也提供了一种自动生成训练数据(平行文本语料库)的机制,可用于进一步训练和改进传统算法。(另见The Batch的这篇文章关于使用LLM生成训练数据。)
欢迎对如何改进这一方法提出意见和建议!
入门
要开始使用translation-agent
,请按以下步骤操作:
安装:
- 安装需要Poetry包管理器。Poetry安装 根据您的环境,这可能有效:
pip install poetry
- 需要一个包含OPENAI_API_KEY的.env文件来运行工作流。请参考.env.sample文件作为示例。
git clone https://github.com/andrewyng/translation-agent.git
cd translation-agent
poetry install
poetry shell # 激活虚拟环境
使用:
import translation_agent as ta
source_lang, target_lang, country = "English", "Spanish", "Mexico"
translation = ta.translate(source_lang, target_lang, source_text, country)
参见examples/example_script.py获取示例脚本以尝试。
许可证
Translation Agent 在 MIT 许可证下发布。您可以自由使用、修改和分发代码,用于商业和非商业目的。
扩展ideas
以下是我们没有时间尝试但希望开源社区能够尝试的ideas:
- 尝试其他LLM。 我们主要使用gpt-4-turbo进行原型设计。我们希望其他人也能尝试其他LLM以及其他超参数选择,看看是否有一些在特定语言对上表现更好。
- 术语表创建。 最有效地构建术语表的最佳方法是什么——也许使用LLM——以确保最重要的术语能够一致地翻译?例如,许多企业使用的专业术语在互联网上并不广泛使用,因此LLM不了解,还有许多术语可以有多种翻译方式。例如,西班牙语中的"open source"可以是"Código abierto"或"Fuente abierta";两者都可以,但最好在一个文档中选择一个并坚持使用。
- 术语表使用和实现。 给定一个术语表,在提示中包含它的最佳方式是什么?
- 不同语言的评估。 它在不同语言中的性能如何变化?是否有一些变化可以使其在特定的源语言或目标语言中表现更好?(请注意,对于MT系统正在接近的非常高的性能水平,我们不确定BLEU是否是一个很好的指标。)此外,它在低资源语言上的性能还需要进一步研究。
- 错误分析。 我们发现,指定一种语言和一个国家/地区(例如,"墨西哥日常口语中的西班牙语")对我们的应用来说效果相当不错。当前方法在哪些方面存在不足?我们特别有兴趣了解它在专业主题(如法律、医学)或特殊类型的文本(如电影字幕)上的表现,以了解其局限性。
- 更好的评估。 最后,我们认为更好的评估(evals)是一个巨大而重要的研究课题。与其他生成自由文本的LLM应用一样,当前的评估指标似乎存在不足。例如,我们发现,即使在我们的智能工作流能更好地捕捉上下文和术语的文档中,导致我们的人类评估者更喜欢它而不是当前的商业产品,但在句子级别的评估(使用FLORES数据集)中,智能系统在BLEU上的得分反而更低。我们能否设计出更好的指标(也许使用LLM来评估翻译?)来捕捉文档级别的翻译质量,使其与人类偏好更好地相关?
相关工作
一些学术研究小组也开始关注基于LLM和智能翻译。我们认为这个领域还处于早期阶段!
- ChatGPT MT: Competitive for High- (but not Low-) Resource Languages, Robinson et al. (2023), https://arxiv.org/pdf/2309.07423
- How to Design Translation Prompts for ChatGPT: An Empirical Study, Gao et al. (2023), https://arxiv.org/pdf/2304.02182v2
- Beyond Human Translation: Harnessing Multi-Agent Collaboration for Translating Ultra-Long Literary Texts, Wu et al. (2024), https://arxiv.org/pdf/2405.11804