返回顶部
热门问答 更多热门问答
技术文章 更多技术文章

Translation Agent 引领智能翻译新方向

[复制链接]
链载Ai 显示全部楼层 发表于 昨天 15:11 |阅读模式 打印 上一主题 下一主题

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 18.24px;font-weight: bold;display: table;margin: 2em auto 1em;padding-right: 1em;padding-left: 1em;border-bottom: 2px solid rgb(15, 76, 129);color: rgb(63, 63, 63);">智能翻译新突破:吴恩达开源 Translation Agent,反思工作流打造更精准译文

ingFang SC";text-wrap: wrap;line-height: 1.75;font-size: 16px;margin: 1.5em 8px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">今年 4 月,我们曾报道了吴恩达 (Andrew Ng) 提出的 Agentic Design Patterns:AI Agent新风潮:让模型自我反思,突破性能瓶颈,其中“反思 (Reflection)”模式备受瞩目。该模式通过让 AI 模型自动评估自身输出并进行改进,从而显著提升模型性能。如今,吴恩达团队将这一理念付诸实践,并将其应用于智能翻译领域,推出了基于反思工作流的开源翻译系统——Translation Agent。

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 16px;margin: 1.5em 8px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">机器翻译,这项曾经看似遥不可及的技术,如今已经深入到我们生活的方方面面。从网页浏览到跨语言交流,机器翻译正在悄然改变着我们的世界。然而,传统的机器翻译技术,往往难以处理需要高度定制化和细粒度控制的翻译任务,例如调整输出风格、处理专业术语以及适应不同地区的语言变体等。

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 16px;margin: 1.5em 8px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">近年来,随着人工智能技术的飞速发展,智能翻译应运而生。与传统的基于规则或统计的机器翻译方法不同,智能翻译借助深度学习和大数据的力量,赋予了机器更强大的语言理解和生成能力。

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 17.6px;font-weight: bold;display: table;margin: 4em auto 2em;padding-right: 0.2em;padding-left: 0.2em;background: rgb(15, 76, 129);color: rgb(255, 255, 255);">Translation Agent:基于反思工作流的智能翻译新纪元

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 16px;margin: 1.5em 8px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">2023 年 11 月,人工智能领域泰斗级人物吴恩达(Andrew Ng)宣布开源其团队研发的智能翻译系统——Translation Agent,再次将智能翻译技术推向了新的高度。Translation Agent 不仅仅是翻译,更像是一个专业的翻译助手,它能够理解你的翻译需求,并不断优化翻译结果,直到你满意为止。

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-weight: bold;margin-top: 2em;margin-right: 8px;margin-bottom: 0.75em;padding-left: 8px;border-left: 3px solid rgb(15, 76, 129);color: rgb(63, 63, 63);">吴恩达开源 Translation Agent 项目

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 16px;margin: 1.5em 8px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">Translation Agent是一个基于 Python 的开源项目,它采用了一种新颖的“反思工作流”,旨在解决传统机器翻译系统在定制化和细粒度控制方面的不足。

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-weight: bold;margin-top: 2em;margin-right: 8px;margin-bottom: 0.75em;padding-left: 8px;border-left: 3px solid rgb(15, 76, 129);color: rgb(63, 63, 63);">Translation Agent 的工作原理:反思工作流

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 16px;margin: 1.5em 8px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">Translation Agent 的核心在于其独特的“反思工作流”,该工作流模拟了人类翻译专家的思考过程,将翻译任务分解为三个主要步骤:

  1. 1.初始翻译:Translation Agent 首先利用 LLM 对输入文本进行初步翻译,得到一个初步的译文。

  2. 2.反思与改进:与传统机器翻译系统直接输出译文不同,Translation Agent 会引导 LLM 对自身的翻译结果进行反思,并提出改进建议。例如,LLM 可能会指出译文中存在的不准确、不流畅或不符合目标语言习惯表达的地方,就像一个经验丰富的校对员一样,帮助 LLM 找出翻译中的不足之处。

  3. 3.优化输出:最后,Translation Agent 根据 LLM 提出的改进建议,对初始译文进行优化,最终生成一个更加精准、流畅且符合目标语言习惯的译文。

Translation Agent 的优势:高度可定制化

Translation Agent 的一大优势在于其高度可定制化的翻译引擎。通过在翻译过程中对 LLM 进行引导,用户可以轻松地控制翻译的各个方面,例如:

  • 调整输出风格:用户可以指定翻译的正式程度,例如是偏向于正式的商务文体,还是更加口语化的日常用语,就像告诉翻译助手你的目标读者是谁一样。

  • 处理习语和专业术语:用户可以在翻译之前提供一个术语表,确保特定的专业术语能够被准确地翻译成目标语言,就像为翻译助手准备了一本专业词典。

  • 指定特定地区或方言的语言使用:Translation Agent 可以根据用户的需求,选择使用特定地区或方言的语言变体进行翻译,例如拉丁美洲西班牙语、西班牙西班牙语、加拿大法语或法国法语等,就像告诉翻译助手你的目标受众来自哪里一样。



Translation Agent 代码实现详解

utils.py 文件概述

Translation Agent 的核心代码位于src/translation_agent/utils.py文件中。该文件包含了 Translation Agent 的主要功能函数,例如调用 OpenAI API、文本分块、翻译、反思、改进等。

核心函数解析

  • get_completion函数:调用 OpenAI API 获取 LLM 生成结果该函数负责调用 OpenAI API,将用户输入的文本和提示词发送给 LLM,并接收 LLM 生成的结果,就像是一个信使,负责在用户和 LLM 之间传递信息。

  • one_chunk_translate_text函数:单段落文本的完整翻译流程该函数用于处理单段落文本的翻译任务,它包含以下三个步骤:

    • one_chunk_initial_translation函数:单段落文本的初始翻译该函数负责对单段落文本进行初始翻译,它会将源语言文本和预先设计的提示词发送给 LLM,让 LLM 生成初步的译文。

    • one_chunk_reflect_on_translation函数:对翻译结果进行反思该函数会将源语言文本、初始译文和反思提示词发送给 LLM,让 LLM 对初始译文进行评估,并提出改进建议。

    • one_chunk_improve_translation函数:根据反思结果改进翻译该函数会将源语言文本、初始译文、反思结果和改进提示词发送给 LLM,让 LLM 根据反思结果对初始译文进行修改,生成最终译文。

  • num_tokens_in_string函数:计算文本的 token 数量该函数用于计算文本的 token 数量,token 是 LLM 处理文本的基本单位,就像英语中的单词一样。

  • multichunk_translation函数:多段落文本的完整翻译流程该函数用于处理多段落文本的翻译任务,它同样包含初始翻译、反思和改进三个步骤:

    • multichunk_initial_translation函数:多段落文本的初始翻译

    • multichunk_reflect_on_translation函数:对多段落翻译结果进行反思

    • multichunk_improve_translation函数:根据反思结果改进多段落翻译

  • calculate_chunk_size函数:计算文本分块大小该函数用于计算文本分块的大小,以便将长文本分成多个段落进行处理。

  • translate函数:Translation Agent 的主函数该函数是 Translation Agent 的主函数,它负责接收用户输入的文本、源语言、目标语言和地区信息,并调用其他函数完成翻译任务。translate函数首先会计算输入文本的 token 数量,如果 token 数量小于预设的最大值MAX_TOKENS_PER_CHUNK,则调用one_chunk_translate_text函数对文本进行单段落翻译;否则,调用multichunk_translation函数对文本进行多段落翻译。

    deftranslate(
    source_lang,
    target_lang,
    source_text,
    country,
    max_tokens=MAX_TOKENS_PER_CHUNK,
    ):
    """Translatethesource_textfromsource_langtotarget_lang."""

    num_tokens_in_text=num_tokens_in_string(source_text)

    ic(num_tokens_in_text)

    ifnum_tokens_in_text<max_tokens:
    ic("Translatingtextassinglechunk")

    final_translation=one_chunk_translate_text(
    source_lang,target_lang,source_text,country
    )

    returnfinal_translation

    else:
    ic("Translatingtextasmultiplechunks")

    token_size=calculate_chunk_size(
    token_count=num_tokens_in_text,token_limit=max_tokens
    )

    ic(token_size)

    text_splitter=RecursiveCharacterTextSplitter.from_tiktoken_encoder(
    model_name="gpt-4",
    chunk_size=token_size,
    chunk_overlap=0,
    )

    source_text_chunks=text_splitter.split_text(source_text)

    translation_2_chunks=multichunk_translation(
    source_lang,target_lang,source_text_chunks,country
    )

    return"".join(translation_2_chunks)

    translate函数的逻辑非常清晰,它就像是一个总指挥,根据输入文本的长度,决定采用单段落翻译还是多段落翻译,并将任务 delegate 给相应的函数去执行。

Translation Agent 提示词解读

提示词在 Translation Agent 中扮演着至关重要的角色,它决定了 LLM 如何理解和执行翻译任务。Translation Agent 使用了精心设计的提示词来引导 LLM 完成各个阶段的任务。

提示词的作用和重要性

提示词是指导 LLM 行为的关键因素,它为 LLM 提供了上下文信息、任务目标和输出规范。优秀的提示词能够引导 LLM 生成更准确、更符合预期的结果,而糟糕的提示词则可能导致 LLM 生成不准确、不相关甚至有害的内容。

one_chunk_initial_translation函数:单段落文本的初始翻译 提示词

Thisisan{source_lang}to{target_lang}translation,pleaseprovidethe{target_lang}translationforthistext.\
Donotprovideanyexplanationsortextapartfromthetranslation.
{source_lang}:{source_text}

{target_lang}:

说明:

  • •该提示词首先明确了翻译的方向,即从源语言{source_lang}到目标语言{target_lang}

  • •然后,它要求 LLM 只提供翻译结果,不要包含任何解释或其他无关信息,例如不要在翻译结果中添加注释或说明,以确保输出的简洁性。

  • •最后,它将源语言文本放在{source_text}占位符的位置,并将目标语言的占位符空出来,等待 LLM 填写翻译结果,这样可以确保 LLM 生成的内容格式正确,易于后续处理。

one_chunk_reflect_on_translation函数:对翻译结果进行反思 提示词

Yourtaskistocarefullyreadasourcetextandatranslationfrom{source_lang}to{target_lang},andthengiveconstructivecriticismandhelpfulsuggestionstoimprovethetranslation.\
{country_specific}
Thesourcetextandinitialtranslation,delimitedbyXMLtags<SOURCE_TEXT></SOURCE_TEXT>and<TRANSLATION></TRANSLATION>,areasfollows:

<SOURCE_TEXT>
{source_text}
</SOURCE_TEXT>

<TRANSLATION>
{translation_1}
</TRANSLATION>

Whenwritingsuggestions,payattentiontowhethertherearewaystoimprovethetranslation's\n\
(i)accuracy(bycorrectingerrorsofaddition,mistranslation,omission,oruntranslatedtext),\n\
(ii)fluency(byapplying{target_lang}grammar,spellingandpunctuationrules,andensuringtherearenounnecessaryrepetitions),\n\
(iii)style(byensuringthetranslationsreflectthestyleofthesourcetextandtakesintoaccountanyculturalcontext),\n\
(iv)terminology(byensuringterminologyuseisconsistentandreflectsthesourcetextdomain;andbyonlyensuringyouuseequivalentidioms{target_lang}).\n\

Writealistofspecific,helpfulandconstructivesuggestionsforimprovingthetranslation.
Eachsuggestionshouldaddressonespecificpartofthetranslation.
Outputonlythesuggestionsandnothingelse.

说明:

  • •该提示词首先向 LLM 明确了任务目标,即对翻译结果进行反思,并提供改进建议。这部分提示词以清晰的指令引导 LLM 进入“反思”模式。

  • •然后,它使用 XML 标签将源语言文本和初始译文分别标记出来,方便 LLM 识别。利用 XML 标签区分原文和译文,使得 LLM 更容易理解和处理文本信息。

  • •接下来,它列出了 LLM 在反思时需要关注的四个方面,即准确性 (accuracy)、流畅度 (fluency)、风格 (style) 和术语 (terminology)。这四个方面也是评价翻译质量的重要标准,提示词中对每个方面的详细说明能够引导 LLM 进行更全面的评估。

  • •最后,它要求 LLM 以列表的形式输出具体的改进建议,每个建议只针对翻译中的一个具体问题,并且不要输出任何其他内容,以确保输出格式的规范性。

one_chunk_improve_translation函数:根据反思结果改进翻译 提示词

Yourtaskistocarefullyread,thenedit,atranslationfrom{source_lang}to{target_lang},takinginto
accountalistofexpertsuggestionsandconstructivecriticisms.

Thesourcetext,theinitialtranslation,andtheexpertlinguistsuggestionsaredelimitedbyXMLtags<SOURCE_TEXT></SOURCE_TEXT>,<TRANSLATION></TRANSLATION>and<EXPERT_SUGGESTIONS></EXPERT_SUGGESTIONS>\
asfollows:

<SOURCE_TEXT>
{source_text}
</SOURCE_TEXT>

<TRANSLATION>
{translation_1}
</TRANSLATION>

<EXPERT_SUGGESTIONS>
{reflection}
</EXPERT_SUGGESTIONS>

Pleasetakeintoaccounttheexpertsuggestionswheneditingthetranslation.Editthetranslationbyensuring:

(i)accuracy(bycorrectingerrorsofaddition,mistranslation,omission,oruntranslatedtext),
(ii)fluency(byapplying{target_lang}grammar,spellingandpunctuationrulesandensuringtherearenounnecessaryrepetitions),\
(iii)style(byensuringthetranslationsreflectthestyleofthesourcetext)
(iv)terminology(inappropriateforcontext,inconsistentuse),or
(v)othererrors.

Outputonlythenewtranslationandnothingelse.

说明:

  • •该提示词首先向 LLM 明确了任务目标,即根据专家建议对初始译文进行改进。

  • •然后,它使用 XML 标签将源语言文本、初始译文和专家建议分别标记出来,方便 LLM 识别。

  • •最后,它要求 LLM 在改进译文时,要考虑专家建议,并确保译文的准确性、流畅度、风格和术语的准确性。

multichunk_initial_translation函数:多段落文本的初始翻译 提示词

Yourtaskisprovideaprofessionaltranslationfrom{source_lang}to{target_lang}ofPARTofatext.

Thesourcetextisbelow,delimitedbyXMLtags<SOURCE_TEXT>and</SOURCE_TEXT>.Translateonlythepartwithinthesourcetext
delimitedby<TRANSLATE_THIS>and</TRANSLATE_THIS>.Youcanusetherestofthesourcetextascontext,butdonottranslateany
oftheothertext.Donotoutputanythingotherthanthetranslationoftheindicatedpartofthetext.

<SOURCE_TEXT>
{tagged_text}
</SOURCE_TEXT>

Toreiterate,youshouldtranslateonlythispartofthetext,shownhereagainbetween<TRANSLATE_THIS>and</TRANSLATE_THIS>:
<TRANSLATE_THIS>
{chunk_to_translate}
</TRANSLATE_THIS>

Outputonlythetranslationoftheportionyouareaskedtotranslate,andnothingelse.

multichunk_reflect_on_translation函数:对多段落翻译结果进行反思 提示词

Yourtaskistocarefullyreadasourcetextandpartofatranslationofthattextfrom{source_lang}to{target_lang},andthengiveconstructivecriticismandhelpfulsuggestionsforimprovingthetranslation.
{country_specific}

Thesourcetextisbelow,delimitedbyXMLtags<SOURCE_TEXT>and</SOURCE_TEXT>,andthepartthathasbeentranslated
isdelimitedby<TRANSLATE_THIS>and</TRANSLATE_THIS>withinthesourcetext.Youcanusetherestofthesourcetext
ascontextforcritiquingthetranslatedpart.

<SOURCE_TEXT>
{tagged_text}
</SOURCE_TEXT>

Toreiterate,onlypartofthetextisbeingtranslated,shownhereagainbetween<TRANSLATE_THIS>and</TRANSLATE_THIS>:
<TRANSLATE_THIS>
{chunk_to_translate}
</TRANSLATE_THIS>

Thetranslationoftheindicatedpart,delimitedbelowby<TRANSLATION>and</TRANSLATION>,isasfollows:
<TRANSLATION>
{translation_1_chunk}
</TRANSLATION>

Whenwritingsuggestions,payattentiontowhethertherearewaystoimprovethetranslation's:\n\
(i)accuracy(bycorrectingerrorsofaddition,mistranslation,omission,oruntranslatedtext),\n\
(ii)fluency(byapplying{target_lang}grammar,spellingandpunctuationrules,andensuringtherearenounnecessaryrepetitions),\n\
(iii)style(byensuringthetranslationsreflectthestyleofthesourcetextandtakesintoaccountanyculturalcontext),\n\
(iv)terminology(byensuringterminologyuseisconsistentandreflectsthesourcetextdomain;andbyonlyensuringyouuseequivalentidioms{target_lang}).\n\

Writealistofspecific,helpfulandconstructivesuggestionsforimprovingthetranslation.
Eachsuggestionshouldaddressonespecificpartofthetranslation.
Outputonlythesuggestionsandnothingelse.

multichunk_improve_translation函数:根据反思结果改进多段落翻译 提示词

Yourtaskistocarefullyread,thenimprove,atranslationfrom{source_lang}to{target_lang},takinginto
accountasetofexpertsuggestionsandconstructivecritisms.Below,thesourcetext,initialtranslation,andexpertsuggestionsareprovided.

Thesourcetextisbelow,delimitedbyXMLtags<SOURCE_TEXT>and</SOURCE_TEXT>,andthepartthathasbeentranslated
isdelimitedby<TRANSLATE_THIS>and</TRANSLATE_THIS>withinthesourcetext.Youcanusetherestofthesourcetext
ascontext,butneedtoprovideatranslationonlyofthepartindicatedby<TRANSLATE_THIS>and</TRANSLATE_THIS>.

<SOURCE_TEXT>
{tagged_text}
</SOURCE_TEXT>

Toreiterate,onlypartofthetextisbeingtranslated,shownhereagainbetween<TRANSLATE_THIS>and</TRANSLATE_THIS>:
<TRANSLATE_THIS>
{chunk_to_translate}
</TRANSLATE_THIS>

Thetranslationoftheindicatedpart,delimitedbelowby<TRANSLATION>and</TRANSLATION>,isasfollows:
<TRANSLATION>
{translation_1_chunk}
</TRANSLATION>

Theexperttranslationsoftheindicatedpart,delimitedbelowby<EXPERT_SUGGESTIONS>and</EXPERT_SUGGESTIONS>,isasfollows:
<EXPERT_SUGGESTIONS>
{reflection_chunk}
</EXPERT_SUGGESTIONS>

Takingintoaccounttheexpertsuggestionsrewritethetranslationtoimproveit,payingattention
towhethertherearewaystoimprovethetranslation's

(i)accuracy(bycorrectingerrorsofaddition,mistranslation,omission,oruntranslatedtext),
(ii)fluency(byapplying{target_lang}grammar,spellingandpunctuationrulesandensuringtherearenounnecessaryrepetitions),\
(iii)style(byensuringthetranslationsreflectthestyleofthesourcetext)
(iv)terminology(inappropriateforcontext,inconsistentuse),or
(v)othererrors.

Outputonlythenewtranslationoftheindicatedpartandnothingelse.

提示词的设计理念与技巧

Translation Agent 的提示词设计遵循以下理念:

  • 清晰明确的任务目标:提示词需要清晰地描述 LLM 需要完成的任务,例如翻译、反思或改进。清晰的任务描述可以帮助 LLM 更好地理解用户的意图,从而生成更准确的结果。

  • 结构化的输入信息:使用 XML 标签或其他标记符号,将不同的信息进行区分,方便 LLM 识别和处理。结构化的信息能够帮助 LLM 更有效地提取关键信息,避免混淆和错误。

  • 具体的指导和规范:为了确保 LLM 能够按照预期目标进行工作,提示词需要提供具体的指导和规范,例如需要关注哪些方面、输出格式是什么等。清晰的指导和规范可以减少 LLM 的自由发挥空间,使其生成的文本更加符合预期。

Translation Agent 的现状与未来

Translation Agent 的优势与不足

优势:

  • 高度可定制化:用户可以通过修改提示词来控制翻译的各个方面,例如输出风格、专业术语和语言变体等,从而满足个性化的翻译需求。

  • 基于反思工作流:模拟了人类翻译专家的思考过程,能够生成更加精准、流畅的译文。反思工作流可以有效降低翻译错误,提高翻译质量。

  • 开源项目:任何人都可以免费使用、修改和分发 Translation Agent,这将促进智能翻译技术的交流和发展。

不足:

  • 翻译质量仍有提升空间:与商业翻译引擎相比,Translation Agent 的翻译质量还有待提高。这主要是由于 LLM 本身的局限性,例如对某些语言对的支持不足、对专业领域的理解不够深入等。

  • 依赖于 LLM:Translation Agent 的性能取决于所使用的 LLM,而 LLM 的性能会受到训练数据和模型大小的影响。因此,选择合适的 LLM 对于 Translation Agent 的性能至关重要。

  • 需要一定的技术门槛:用户需要具备一定的编程知识才能使用 Translation Agent,这限制了其在普通用户中的普及。

智能翻译的未来趋势

  • 更加精准、流畅的翻译质量:随着 LLM 技术的不断发展,智能翻译的质量将会越来越高。未来的 LLM 将会拥有更强大的语言理解和生成能力,能够处理更复杂

  • 更加个性化的翻译服务:未来的智能翻译系统将能够根据用户的需求,提供更加个性化的翻译服务。例如,用户可以根据自己的专业领域、语言水平和文化背景等,定制化自己的翻译引擎。

  • 更加广泛的应用场景:智能翻译将会应用到更多的领域,例如跨境电商、国际会议、文化交流等。随着智能翻译技术的成熟,它将会打破语言障碍,促进不同国家和地区之间的交流与合作。

Translation Agent 引领智能翻译新方向

Translation Agent 的出现,为智能翻译领域带来了新的活力。其独特的反思工作流和高度可定制化的特点,使其在处理复杂翻译任务时更具优势。相信随着 LLM 技术的不断发展和开源社区的共同努力,Translation Agent 将会在未来取得更大的突破,引领智能翻译技术走向更加美好的未来。

相关链接:

https://github.com/andrewyng/translation-agent/

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

链载AI是专业的生成式人工智能教程平台。提供Stable Diffusion、Midjourney AI绘画教程,Suno AI音乐生成指南,以及Runway、Pika等AI视频制作与动画生成实战案例。从提示词编写到参数调整,手把手助您从入门到精通。
  • 官方手机版

  • 微信公众号

  • 商务合作

  • Powered by Discuz! X3.5 | Copyright © 2025-2025. | 链载Ai
  • 桂ICP备2024021734号 | 营业执照 | |广西笔趣文化传媒有限公司|| QQ