头图

翻译是AI常见的应用场景之一。AI翻译比以前的机器翻译好了很多,但是常常还是不够完美。人工智能著名学者、斯坦福大学教授吴恩达前段时间开源了一个「AI智能体机器翻译项目」,可以显著提升AI翻译的水准。

项目链接:https://github.com/andrewyng/translation-agent

翻译智能体:使用反思工作流进行智能体翻译,主要步骤是:

  1. 输入Prompt,使大型语言模型(LLM)将文本从来源语言翻译成目标语言;
  2. 让LLM反思翻译结果,并提出建设性的改进建议;
  3. 利用这些建议改进翻译。

由于开源的「AI智能体机器翻译项目」是纯代码,需要有Python环境以及一定的编程基础,用起来并不方便。

本文介绍如何使用iThinkAir快速、完美复刻这个反思翻译工作流。

iThinkAir,是一款面向思考者的一体化AI工具,包括思想白板、AI指令集、AI数据库,旨在让思想腾云驾雾千变万化。

访问https://www.3amind.com下载安装iThinkAir。

运行后访问‘AI数据库’。

新建一个名为‘最强AI翻译’的数据库;库描述写上‘翻译-反思-修改’;再新建一个也命名为‘最强AI翻译’的表。

给表添加五个字段‘要翻译的文本’、‘来源语言’、‘目标语言’、‘国家’、‘翻译结果’。

接下来到了最关键的环节,定义字段‘翻译结果’的类型为‘指令流’。字段定义窗口关闭后,开始AI指令流的定义。

AI指令流的工作过程是根据输入的‘要翻译的文本’、‘来源语言’、‘目标语言’、‘国家’,让‘AI大模型’按照步骤‘翻译-反思-修改’输出优化后的翻译结果。

先概览一下设计好的‘最强AI翻译’指令流。

下面我们一个个添加和定义AI指令,来实现上图所示的‘最强AI翻译’指令流。

1.添加‘文本合成’指令。

This is an {{来源语言}} to {{目标语言}} translation, please provide the {{目标语言}} translation for this text. Do not provide any explanations or text apart from the translation.
这是一个{{来源语言}}到{{目标语言}}的翻译,请提供该文本的{{目标语言}}翻译。请不要提供任何解释或其他文本。

这个‘文本合成’指令的作用是将字段‘来源语言’、‘目标语言’、‘要翻译的文本’的值,分别替换预设的模板文本中的‘{{来源语言}}’、‘{{目标语言}}’、‘{{要翻译的文本}}’,合成为一个完整的文本内容。

2.添加‘AI模型’指令,命名为‘初译’。

‘AI模型’指令‘初译’的‘Prompt’参数取值为‘文本合成’指令的输出。AI模型按‘Prompt’的提示,进行初步翻译。

3.添加‘文本合成1’指令。

our task is to carefully read a source text and a translation from {{来源语言}} to {{目标语言}}, and then give constructive criticism and helpful suggestions to improve the translation.
我们的任务是仔细阅读一段源文本和从{{来源语言}}翻译到{{目标语言}}的翻译,然后提供建设性的批评和有帮助的建议,以改善翻译。

这个‘文本合成1’指令的作用是将‘来源语言’、‘目标语言’、‘国家’、‘要翻译的文本’、‘初译文本’的值,分别替换预设的模板文本中的‘{{来源语言}}’、‘{{目标语言}}’、‘{{国家}}’、‘{{要翻译的文本}}’、‘{{初译文本}}’,合成为一个完整的文本内容。

4.添加‘AI模型’指令,命名为‘评估’。

‘AI模型’指令‘评估’的‘Prompt’参数取值为‘文本合成1’指令的输出。AI模型按‘Prompt’的提示,对初始的翻译结果进行思考和评判,找出可以改进的地方。

5.添加‘文本合成2’指令。

Your task is to carefully read, then edit, a translation from {{来源语言}} to {{目标语言}}, taking into account a list of expert suggestions and constructive criticisms.
你的任务是仔细阅读并编辑一段从 {{来源语言}} 翻译到 {{目标语言}} 的文本,同时考虑一份专家建议和建设性批评的清单。

这个‘文本合成2’指令的作用是将‘来源语言’、‘目标语言’、‘要翻译的文本’、‘初译文本’、‘评估文本’的值,分别替换预设的模板文本中的‘{{来源语言}}’、‘{{目标语言}}’、‘{{要翻译的文本}}’、‘{{初译文本}}’、‘{{评估文本}}’,合成为一个完整的文本内容。

6.添加‘AI模型’指令,命名为‘重译’。

‘AI模型’指令‘重译’的‘Prompt’参数取值为‘文本合成2’指令的输出。AI模型按‘Prompt’的提示,对初始的翻译结果按照评估文本进行修改,输出最终翻译结果。

到这里,‘最强AI翻译’指令流就设计完成了,这里显示的是大纲视图。

也可以转换为白板视图,也就是前面的‘最强AI翻译’指令流概览图。方法是点界面左上方的眼睛。选择变化类型‘白板’。

可以看到有输出输入关系的指令之间自动用线条连接起来。

后退返回到数据库界面。

点表名‘最强AI翻译’,打开表。

点界面下方的+添加记录。

输入要翻译的文本,选择来源语言、目标语言、国家。

点‘生成’,开始运行AI指令流来生成翻译结果。

重新打开‘最强AI翻译’指令流,你可以看到每一步的输出,比如你可以看一下初译输出的文本。

他是一个非常虚弱的白人。他骑在一个头发卷曲、肤色黑的野人背上,野人的耳垂被穿孔并拉伸到一个已经撕裂,另一个耳朵上挂着一个直径三英寸的雕刻木块。撕裂的耳朵又被穿孔,但这次并没有那么大野心,因为洞只容纳了一根短短的陶土烟斗。这个“人马”油腻肮脏,赤裸,除了极其窄小和肮脏的裆布;但白人紧紧地、绝望地依偎着他。有时因虚弱,他的头垂下,靠在卷曲的头上。有时他抬起头,用游离的眼神盯着在闪烁的热浪中摇曳的椰子树。他穿着一件薄薄的内衣和一条裹在腰间、垂到膝盖的棉布。头上戴着一顶破旧的斯特森帽,在商界被称为巴登-鲍威尔。腰间系着一条皮带,上面挂着一把大口径的自动手枪和几把装满子弹的备用弹夹,随时准备使用。

评估给出的专家修改建议:

  1. In the phrase "头发卷曲、肤色黑的野人," consider changing "肤色黑的" to "黑皮肤的" for a more natural and colloquial expression that emphasizes the skin tone appropriately.
  2. The term "撕裂的耳朵" could be more accurately translated as "撕裂的耳垂," which directly corresponds to "lobes" in the source text.
    ...

最终的翻译结果:

他是一个非常虚弱的白人。他骑在一个头发卷曲、黑皮肤的野人背上,野人的耳垂被穿孔并拉伸到一个已经撕裂,另一个耳朵上挂着一个直径三英寸的雕刻木块。撕裂的耳垂又被穿孔,但这次并没有那么大口气,因为洞只容纳了一根短短的陶制烟斗。这个“人马”油腻肮脏,赤裸,除了极其窄小和肮脏的腰布;但白人紧紧地依偎着他,有时因虚弱,他的头垂下,靠在卷曲的头上。有时他抬起头,用迷离的目光盯着在闪烁热浪中摇曳的椰子树。他穿着一件薄薄的内衬和一条裹在腰间、垂到膝盖的棉布。头上戴着一顶破旧的斯特森帽,在行业里被称为巴登-鲍威尔。腰间系着一条皮带,上面挂着一把大口径的自动手枪和几枚备用弹夹,已装满子弹,随时准备使用。

可以看到最终的翻译结果确实是将初译文本按照评估建议修改而来的。

你可以让‘最强AI翻译’翻译很多文本,数据库表格可以很好地管理生成的翻译结果。

你还可以在指令流的最开始添加两个指令,升级为‘最强AI长文翻译’。

7.添加‘读取文件’指令。

‘读取文件’指令的作用是读取文件中的长文本,文件格式可以是.txt,也可以是.docx,甚至可以是.mp3。

8.添加‘文本拆分’指令。

‘文本拆分’指令的作用是将长文本拆分成短文本列表。AI模型不能处理太长的文本,所以需要拆分成短文本分别处理。拆分成短文本列表还有一个好处,就是可以并行处理。

到这里,我们就已经使用iThinkAir快速、完美复刻了吴恩达反思翻译工作流。全程没有写过一行代码。


深蓝的思考
1 声望0 粉丝