
#TranslationAgent源码和架构分析 [TOC]
TranslationAgent概述
基于反思工作流的智能翻译Agent,模拟了人类翻译专家的思考过程,分成三个流程。 核心流程: 1.初始翻译:利用LLM对文本进行初步翻译,得到初步的翻译结果 2.翻译与改进:引导LLM对自身翻译结果进行反思,并提出修改意见,例如不准确、不流畅和语言习惯等问题 3.优化输出:根据LLM提出的改进意见对翻译结果再次进行优化,得到最终结果
完整流程图

TranslationAgent简单实践
安装配置环境
首先我们安装一下
poetry
依赖。
bash
pip install poetry

拉取相关代码。
bash
git clone https://github.com/andrewyng/translation-agent.git
cd translation-agent
接下来我们通过poetry应用进行安装软件,和虚拟环境的激活。
bash
poetry install
poetry env activate
然后执行相关命令进行激活。

打开新的命令窗口执行这个命令并且退出conda的虚拟环境。
bash
source /Users/hebo/Library/Caches/pypoetry/virtualenvs/translation-agent-1fCiI_fd-py3.11/bin/activate
conda deactivate

添加相关文档
首先准备我们的
静夜思.txt
文本,放入translation-agent/examples/sample-texts
下面。
bash
Thoughts on a Quiet Night \n
The moonlight shines before my bed, like frost upon the ground.\n
I look up to see the moon, then lower my gaze, overwhelmed by homesickness.\n
然后在
translation-agent/examples
下面创建我们的example_script.py
文件,下面是一个简单的translation_agent
的一个示例,主要是将英文翻译成中文,示例文本如下:
python
import os
import translation_agent as ta
if __name__ == "__main__":
source_lang, target_lang, country = "English", "Chinese", "China"
relative_path = "sample-texts/静夜思.txt"
script_dir = os.path.dirname(os.path.abspath(__file__))
full_path = os.path.join(script_dir, relative_path)
with open(full_path, encoding="utf-8") as file:
source_text = file.read()
print(f"Source text:\n\n{source_text}\n------------\n")
translation = ta.translate(
source_lang=source_lang,
target_lang=target_lang,
source_text=source_text,
country=country,
)
print(f"Translation:\n\n{translation}")
在执行之前注意添加好我们的
OPENAI_API_KEY
,接着我们开始运行:
bash
export OPENAI_API_KEY=你的API key
python example_script.py

我们可以看到它可以很清楚的翻译成我们想要的中文古诗。 接着我们直接使用
gpt-4o-mini
使用会发现它的效果其实没有那么好。
bash
from openai import OpenAI
client = OpenAI(
api_key="你的api key",
)
completion = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{
"role": "system",
"content": "将以下英文翻译成中文",
},
{
"role": "user",
"content": "Thoughts on a Quiet Night\nThe moonlight shines before my bed, like frost upon the ground.\nI look up to see the moon, then lower my gaze, overwhelmed by homesickness.",
},
],
)
print(completion.choices[0].message.content)

源码解析:初始翻译
one_chunk_initial_translation:进行初始翻译 输入:原始文本 输出:初始译文

从
{source_lang}
翻译为{target_lang}
,通过提示语"除了翻译之外,不要提供任何解释或文字"提升翻译的准确率(幻觉)
源码解析:结果反思
one_chunk_reflect_on_translation:对初始翻译结果进行反思,让LLM给出优化建议 输入:原始文本、初始译文 输出:反思改进建议

核心提示语: 翻译的最终风格要符合
{coutry}
口语的风格 准确性:纠正、遗留或者未翻译的错误 流畅性:语法、拼写和标点规则,避免重复 风格:对翻译过后的文本同时考虑文化背景 术语:确保术语的一致性 列出具体、有用且有建设性的建议,以改进翻译。
源码解析:结果改进
ne_chunk_improve_translation:根据反思结果重新改进初始 翻译结果,生成最终译文 输入:反思改进建议、原始文本、初始译文 输出:最终译文

核心提示语: 仔细阅读专家的建议和建设性批评 考虑准确性、流畅性、风格、术语、其他 只输出新的译文
优势和不足
优势: 1.基于反思工作流,翻译效果优于普通翻译工具 2.可定制化 不足 1.翻译效果依赖于LLM的智力 2.相比较商业翻译引擎在特定专业领域略显不足 3.使用有一定的门槛 4.基于固定流程,没有使用Agent自我思考的循环机制