分享
吴恩达开源 Translation Agent,反思工作流打造更精准译文
输入“/”快速插入内容
吴恩达开源 Translation Agent,反思工作流打造更精准译文
2024年7月3日创建
作者:非子爱 | 子非AI
原文:
https://mp.weixin.qq.com/s/Ah6hvoEfvLuBTqI0z5ZAKw
智能翻译新突破:吴恩达开源 Translation Agent,反思工作流打造更精准译文
今年 4 月,我们曾报道了吴恩达 (Andrew Ng) 提出的 Agentic Design Patterns:
AI Agent新风潮:让模型自我反思,突破性能瓶颈
,其中“反思 (Reflection)”模式备受瞩目。该模式通过让 AI 模型自动评估自身输出并进行改进,从而显著提升模型性能。如今,吴恩达团队将这一理念付诸实践,并将其应用于智能翻译领域,推出了基于反思工作流的开源翻译系统——Translation Agent。
机器翻译,这项曾经看似遥不可及的技术,如今已经深入到我们生活的方方面面。从网页浏览到跨语言交流,机器翻译正在悄然改变着我们的世界。然而,传统的机器翻译技术,往往难以处理需要高度定制化和细粒度控制的翻译任务,例如调整输出风格、处理专业术语以及适应不同地区的语言变体等。
近年来,随着人工智能技术的飞速发展,智能翻译应运而生。与传统的基于规则或统计的机器翻译方法不同,智能翻译借助深度学习和大数据的力量,赋予了机器更强大的语言理解和生成能力。
Translation Agent:基于反思工作流的智能翻译新纪元
2023 年 11 月,人工智能领域泰斗级人物吴恩达(Andrew Ng)宣布开源其团队研发的智能翻译系统——Translation Agent,再次将智能翻译技术推向了新的高度。Translation Agent 不仅仅是翻译,更像是一个专业的翻译助手,它能够理解你的翻译需求,并不断优化翻译结果,直到你满意为止。
吴恩达开源 Translation Agent 项目
Translation Agent
是一个基于 Python 的开源项目,它采用了一种新颖的“反思工作流”,旨在解决传统机器翻译系统在定制化和细粒度控制方面的不足。
Translation Agent 的工作原理:反思工作流
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
函数:计算文本分块大小
该函数用于计算文本分块的大小,以便将长文本分成多个段落进行处理。