吴恩达的TranslationAgent学习

news2024/11/13 11:12:22

TranslationAgent构成

整个[TranslationAgent (github.com)]在流程上分为短文本的一次性翻译和长文本的分chunk翻译(按照Token进行划分)。 但是不论长文本翻译还是短文本翻译,总体流程遵循执行、纠正再执行的逻辑循环实现。 这种按照自省思路来使用大模型的逻辑在近阶段的一些大模型应用论文和项目中经常出现,比如DoubleCheck的Prompt、([CRAG(Corrective Retrieval Augmented Generation)])的论文或者LangChain使用的ReAct。 这种自省的逻辑其实都体现了一个核心思路,别让大模型一次做太复杂的事。感觉大模型在推理解决问题方面的方案在逐渐统一:

  1. 大模型逐步规划
  2. 执行计划
  3. 结合结果重新规划
  4. 再执行

回归正题,我们先看看短文章翻译。翻译分为三个阶段

  1. chunk_initial_translation:单次翻译,得到结果。
  2. chunk_reflect_on_translation:审视检查翻译结果,决定如何改进
  3. chunk_improve_translation:根据改进点重新翻译得到结果

所以思路看起来很清晰,熟悉LangChain、LlamaIndex等项目这个思路会感觉很熟悉。我觉得代码并不重要,一个是思路,另一个是Prompt的写法。 本次先重点看一下Prompt的写法,吸取一下经验。

一、首轮翻译-one_chunk_initial_translation

System

f"You are an expert linguist, specializing in translation from {source_lang} to {target_lang}".

你是一个语言专家,擅长把信息从{source_lang}翻译成{target_lang}

Message

f"""This is an {source_lang} to {target_lang} translation, please provide the {target_lang} translation for this text. Do not provide any explanations or text apart from the translation.  
{source_lang}: {source_text}  
  
{target_lang}:"""

这是一个从{source_lang}{target_lang}的翻译,请为这段文本提供{target_lang}的译文。除了译文,不要提供任何解释或其他文字。
{source_lang}:{source_text}

{target_lang}:

这段Prompt是最简单的一段,定义了角色、提出了要求、限制。在Message中增加了固定格式的用户输入的嵌入{source_lang}: {source_text}。 另外这里能常看到一种引导大模型回复的方式{target_lang}:。 LLM是一个语言概率的推测模型,给出适当的开头引导是一个常用的手段。

二、自省翻译结果-one_chunk_reflect_on_translation

System

f"You are an expert linguist specializing in translation from {source_lang} to {target_lang}. \
You will be provided with a source text and its translation and your goal is to improve the translation."

你是一个语言专家,擅长把信息从{source_lang}翻译成{target_lang}。 你会得到一段源语言的文本和一段译文,你的目标是改进这段译文。

Message

f"""Your task is to carefully read a source text and a translation from {source_lang} to {target_lang}, and then give constructive criticism and helpful suggestions to improve the translation. \  
The final style and tone of the translation should match the style of {target_lang} colloquially spoken in {country}.  
  
The source text and initial translation, delimited by XML tags <SOURCE_TEXT></SOURCE_TEXT> and <TRANSLATION></TRANSLATION>, are as follows:  
  
<SOURCE_TEXT>  
{source_text}  
</SOURCE_TEXT>  
  
<TRANSLATION>  
{translation_1}  
</TRANSLATION>  
  
When writing suggestions, pay attention to whether there are ways to improve the translation's \n\  
(i) accuracy (by correcting errors of addition, mistranslation, omission, or untranslated text),\n\  
(ii) fluency (by applying {target_lang} grammar, spelling and punctuation rules, and ensuring there are no unnecessary repetitions),\n\  
(iii) style (by ensuring the translations reflect the style of the source text and takes into account any cultural context),\n\  
(iv) terminology (by ensuring terminology use is consistent and reflects the source text domain; and by only ensuring you use equivalent idioms {target_lang}).\n\  
  
Write a list of specific, helpful and constructive suggestions for improving the translation.  
Each suggestion should address one specific part of the translation.  
Output only the suggestions and nothing else."""

你的任务是仔细查看源文本和对应的{source_lang}{target_lang}的译文,然后给出有建设性的批评和有用的建议来改进译文。 译文的最终风格和语气应与在{country}口语中使用的{target_lang}的风格相匹配。 The source text and initial translation, delimited by XML tags <SOURCE_TEXT></SOURCE_TEXT> and , are as follows:
… 在撰写建议时,请注意是否有方法可以改进翻译的 (i) 准确性(通过纠正添加、误译、遗漏或未翻译文本的错误), (ii) 流畅性(通过应用{target_lang} 语法、拼写和标点规则,并确保没有不必要的重复), (iii) 风格(通过确保翻译反映源文本的风格并考虑任何文化背景), (iv) 术语(通过确保术语使用一致并反映源文本领域;并且仅确保您使用等效术语)习语 {target_lang})。 列出具体、有用且有建设性的建议,以改进翻译。 每条建议应针对翻译的一个特定部分。 仅输出建议,不输出其他内容。

这里我省略了一些翻译内容。重点注意Prompt中的这两点:

1. 如何挂入我要给大模型的信息?

从初始翻译和这个自省的Prompt能看到两种常见的方式

  1. Q:A\n Q:A:这种用引号和换行的形式来做分割,这种方式简单易懂,Prompt模板很容易书写。但是缺点显而易见,太容易被外挂的内容搅乱。虽然能力强的LLM可能也能够识别到,但是这个很难能做到稳定,效果也很难评估
  2. <\Q><\A>:用XML标签来携带数据,比较推荐这种形式。这种形式也是RAG场景中携带知识库内容最常见的形式。这里我个人之所以推荐这种形式是因为这种形式跟Transformer的decoder机制有些形似,Transformer在开始生成的时候会输入一个特殊的Token,当到达[STOP]的时候就停止预测生成,用XML标签对也是类似的结构,而且Embedding之后,位置信息被捕获对大模型应该有促进理解的作用(没论文支撑,存粹从Transformer原理的角度理解)。
2. 结构化的Prompt。

整个Prompt其实可以划分为三部分,也是结构化编写Prompt的常规方式。

  1. 角色:定义出你需要让大模型扮演什么角色,比如这里的语言专家。角色部分的要求不会经常变化,也不会需要大量的变量。一般写在System Prompt。
  2. 能力和任务:能力用来告诉大模型怎么做、任务用来告诉大模型要做什么。这一部分可以结合出很多种实现方式,比如COT、TOT、PS等Prompt思路都可以放在这里实现。
  3. 要求和限制:这部分常用来要求LLM按照我们的要求生成、输出内容。比如这里的准确、流畅、风格、术语等。

另外这里有个小细节country是个可选参数,当没传的时候对方言的要求就不再写入Prompt中了。这不仅要求Prompt要结构化的组织,对于上下文的行文也要能灵活组合。

三、改进翻译结果-one_chunk_improve_translation

System

f"You are an expert linguist, specializing in translation editing from {source_lang} to {target_lang}."

Message

f"""Your task is to carefully read, then edit, a translation from {source_lang} to {target_lang}, taking into  
account a list of expert suggestions and constructive criticisms.  
  
The source text, the initial translation, and the expert linguist suggestions are delimited by XML tags <SOURCE_TEXT></SOURCE_TEXT>, <TRANSLATION></TRANSLATION> and <EXPERT_SUGGESTIONS></EXPERT_SUGGESTIONS> \  
as follows:  
  
<SOURCE_TEXT>  
{source_text}  
</SOURCE_TEXT>  
  
<TRANSLATION>  
{translation_1}  
</TRANSLATION>  
  
<EXPERT_SUGGESTIONS>  
{reflection}  
</EXPERT_SUGGESTIONS>  
  
Please take into account the expert suggestions when editing the translation. Edit the translation by ensuring:  
  
(i) accuracy (by correcting errors of addition, mistranslation, omission, or untranslated text),  
(ii) fluency (by applying {target_lang} grammar, spelling and punctuation rules and ensuring there are no unnecessary repetitions), \  
(iii) style (by ensuring the translations reflect the style of the source text)  
(iv) terminology (inappropriate for context, inconsistent use), or  
(v) other errors.  
  
Output only the new translation and nothing else."""

最后这部分就不做翻译了,结合前面的内容大家都看得懂。 改进翻译其实就很好理解了,用第二步生成的reflection让大模型再次改写。

四、总结

吴恩达老师的这个项目在我们实际测试下来效果确实很好,一方面得益于自省式的实现思路;另一方面Prompt的使用确实也很到位。 当然项目也有缺陷,就像是Git上的Readme所说的。后面我也会再分析下长文本是如何实现自省和翻译的。

如何学习AI大模型?

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

在这里插入图片描述

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

在这里插入图片描述

👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

在这里插入图片描述

1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1952667.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android ContentResolver.loadThumbnail转Kotlin

Android ContentResolver.loadThumbnail转Kotlin loadThumbnail原先是Java实现的&#xff0c;现在抠出来转Kotlin实现。 private fun loadThumbnail(uri: Uri, size: Size, signal: CancellationSignal): Bitmap {return myLoadThumbnail(mContext?.contentResolver!!, uri, s…

基于Qt的视频剪辑

在Qt中进行视频剪辑可以通过多种方式实现&#xff0c;但通常需要使用一些额外的库来处理视频数据。以下是一些常见的方法和步骤&#xff1a; 使用FFmpeg FFmpeg是一个非常强大的多媒体框架&#xff0c;可以用来处理视频和音频数据。你可以使用FFmpeg的命令行工具或者其库来实现…

Qemu和宿主机不使用外网进行文件传输

简介 目前Qemu虚拟机和宿主机交互&#xff0c;最方便的方式是进行网络传输&#xff0c;但也有不能使用外网的情况&#xff0c;这时候使用挂载是比较好的方式。 Linux使用 宿主机&#xff1a;Linux Qemu&#xff1a;Linux 传输方式&#xff1a;挂载 参考&#xff1a;在QEMU虚拟…

深圳市索迪迈科技有限公司:车载视频监控领域的精英

位于科技创新前沿的深圳市&#xff0c;索迪迈科技有限公司是一家专业从事车载视频监控设备研发、生产、销售的高新技术企业。公司自成立起&#xff0c;一直专注于车载设备领域的研发、生产、经营、服务一体化&#xff0c;为市场提供卓越的车载监控产品。 自主专业&#xff0c;专…

MySQL练习(4)

作业要求&#xff1a; 实现过程&#xff1a; 1.新建数据库 2.新建表 3.处理表 &#xff08;1&#xff09;修改student 表中年龄 (sage) 字段属性&#xff0c;数据类型由 int 改变为 smallint 。 &#xff08;2&#xff09;为 Course 表中 Cno 课程号字段设置索引,并查看索引。…

C语言边界互通传送迷宫

目录 注意事项开头程序程序的流程图程序输入与输出的效果结尾 注意事项 程序里有关字符’\033’的输出都关于Sunshine-Linux的其中一篇博客——《printf函数高级用法设置打印字体颜色和背景色等》 开头 大家好&#xff0c;我叫这是我58。今天&#xff0c;我们来看一下我用C语…

dpdk编译安装以及接收udp报文(基于ubuntu)

目录 1、编译 2、设置运行环境 3、使用dpdk接收udp报文 3.1、设置发送端arp信息 3.2、测试 3.3、代码 4、其他 1、编译 代码下载&#xff1a; DPDK 下载版本&#xff1a;DPDK 19.08.2 export RTE_SDK/root/dpdk-stable-19.08.2/ export RTE_TARGETx86_64-native-li…

[杂项] 判断一个C++程序是多少位数属于那种编译版本

C/C程序 使用Process Explore。找到运行的程序后双击。 在image可以看到程序的位数。 view→lower Pane View → DLLs。通过查看vc运行库的dll是否带d后缀可以判断该程序是debug版本还是release版本 dependcyWalker 使用 dependcyWalker 来查看程序的位数及编译版本。注意…

每日一练,java06

这里写目录标题 题目1.局部变量能否和成员变量重名&#xff1f;2.下面哪个不属于HttpServletResponse接口完成的功能&#xff1f;3.以下代码结果是什么&#xff1f;4.实现或继承了Collection接口的是&#xff08;&#xff09;知识点局部变量与成员变量重名equals与HttpServletR…

微服务实战系列之玩转Docker(七)

前言 在上一篇中&#xff0c;博主对通过docker registry完成私仓搭建的过程&#xff0c;进行了完整演示和说明。一个docker 环境&#xff08;比如desktop&#xff09;&#xff0c;一个registry镜像&#xff0c;准备好这样的“2件套”&#xff0c;就能换来一个私有仓库了。 简…

PLC 远程下载网关

一、 产品概述 SSF-BOX-100 是三石峰科技有限公司推出的工业级 PLC 远程下载网关&#xff0c;主 要用于 PLC 远程调试、程序上下载&#xff0c;为用户提供一种简单可靠的远程维护方案。 1.1 SGBOX 软件 SGBOX 软件是 SSF-BOX-100 网关的配套软件&#xff0c;可以查看设备状态…

FTP(File Transfer Protocal,文件传输协议)

文章目录 引言FTP管理工具FTP客户端FTP连接模式控制连接数据连接FTP命令/响应FTP命令FTP响应FTPSSFTP引言 FTP(File Transfer Protocal,文件传输协议)用于建立两台主机间的数据文件传输下载。使用客户/服务器(Client/Server)架构,基于TCP协议,服务端口为21。 FTP链接…

React搭建Vite项目及各种项目配置

1. 创建Vite项目 在操作系统的命令终端&#xff0c;输入以下命令&#xff1a; yarn create vite 输入完成以后输入项目名称、选择开发框架&#xff0c;选择开发语言&#xff0c;如下图所示&#xff0c;即可完成项目创建。 注意事项&#xff1a; 1. Node版本必须符合要求&…

linux nginx 命令记录,和转发

nginx: 查看配置文件&#xff1a;sudo find / -name nginx.conf 配置文件&#xff1a;/etc/nginx/nginx.conf 检查nginx.conf文件正确性 nginx -t -c /path/to/nginx.conf 或者 有nginx命令执行 nginx -t 查找nginx 可执行文件&#xff1a;which nginx /usr/sbin/nginx 安装Ng…

比 Xshell 还好用的 SSH 客户端,MobaXterm 太酷了!

由于需要连接远程 Linux 服务器&#xff0c;早期使用过 Putty&#xff0c;SecureCRT&#xff0c;后面主要使用 Xshell。 自从接触了 MobaXterm之后&#xff0c;个人感觉比 Xshell 更好用&#xff0c;堪称SSH客户端的神器啊&#xff01; MobaXterm 和 Xshell 的关系&#xff0…

几个小创新模型,Transformer与SVM、LSTM、BiLSTM、Adaboost的结合,MATLAB分类全家桶再更新!...

截止到本期MATLAB机器学习分类全家桶&#xff0c;一共发了5篇&#xff0c;参考文章如下&#xff1a; 1.机器学习分类全家桶&#xff0c;模式识别&#xff0c;故障诊断的看这一篇绝对够了&#xff01;MATLAB代码 2. 再更新&#xff0c;机器学习分类全家桶&#xff0c;模式识别&a…

AI绘画:艺术与科技融合的新篇章

随着人工智能&#xff08;AI&#xff09;技术的飞速发展&#xff0c;AI绘画作为一种新兴的艺术形式&#xff0c;正逐步改变着传统艺术创作的格局。从早期的简单模仿到如今的个性化创作&#xff0c;AI绘画不仅提升了艺术创作的效率和质量&#xff0c;还开辟了全新的应用场景和商…

Temu卖家必读:测评补单策略,提升销量与转化率!

拼多多旗下的跨境电商平台Temu&#xff0c;凭借其独特的广告和低价策略&#xff0c;迅速在美国市场站稳脚跟&#xff0c;并在欧美市场取得初步成功后&#xff0c;马不停蹄地迈向了更广阔的海外市场。去年七月&#xff0c;Temu正式进军亚洲市场&#xff0c;日本与韩国成为其首批…

免费SSL证书的安全性与获取指南

SSL证书是一种数字凭证&#xff0c;用于加密用户与网站之间的信息交换&#xff0c;以确保传输的数据不被第三方窃取。它像是一个数字版的密封印章&#xff0c;为数据的传输过程提供了一层保护膜。 免费的SSL证书通常由CA机构提供&#xff0c;它们同样可以提供基础数据的加密服…

MATLAB基础:图像绘制

今天我们继续学习MATLAB中图像的绘制。 平面图形 plot(x,y)&#xff1a; x和y为长度相同的向量&#xff0c;分别用于存储x坐标和y坐标数据。 plot(x1,y1,选项1,x2,y2,选项2,…,xn,yn,选项n)&#xff1a; 多组折线&#xff0c;可选择表示折线的属性&#xff0c;如颜色、线型…