吴恩达的TranslationAgent学习

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://xiahunao.cn/news/3269726.html

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

相关文章

基于JSP的电子商城系统

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;JSPJavaB/S架构 工具&#xff1a;Eclipse、Tomcat 系统展示 首页 管理员功能界面 用户功能界面 医…

Kylin 入门教程

Apache Kylin 是一个开源的分布式数据仓库和 OLAP(在线分析处理)引擎,旨在提供亚秒级查询响应时间,即使在处理超大规模数据集时也是如此。Kylin 可以有效地将原始数据预计算为多维数据立方体(Cube),并利用这些预计算结果来提供快速查询。本文将带你从基础知识到操作实践…

项目管理工具-Maven-创建一个mavenweb项目

文章目录 IDEA开发maven项目依赖范围 IDEA开发maven项目 点击NewProject&#xff0c;填写项目名字Name为javaWeb-maven&#xff0c;填写项目的存储地址&#xff0c;选择Archetype为org.apache.maven.archetypes:maven-archetype-webapp&#xff0c;然后再点击Create&#xff0…

Android WebViewClient 的 `shouldOverrideUrlLoading` 方法

简介 在Android开发中&#xff0c;WebView是一个强大的工具&#xff0c;可以在你的应用中显示网页内容。了解 WebViewClient 中的 shouldOverrideUrlLoading 方法是至关重要的&#xff0c;因为这个方法允许你控制 URL 在 WebView 中的处理方式。 在本文中&#xff0c;我们将详…

基于FFmpeg和SDL的音视频解码播放的实现过程与相关细节

目录 1、视频播放器原理 2、FFMPEG解码 2.1 FFMPEG库 2.2、数据类型 2.3、解码 2.3.1、接口函数 2.3.2、解码流程 3、SDL播放 3.1、接口函数 3.2、视频播放 3.3、音频播放 4、音视频的同步 4.1、获取音频的播放时间戳 4.2、获取当前视频帧时间戳 4.3、获取视…

OZON打开哈萨克斯坦市场,OZON测试开通哈萨克斯坦市场中国产品

在全球化日益深入的今天&#xff0c;跨境电商成为了连接不同国家和地区消费者的重要桥梁。2024年7月26日&#xff0c;Ozon Global宣布了一项重大扩展计划&#xff0c;正式将中国卖家的销售版图拓展至哈萨克斯坦市场&#xff0c;为中国企业打开了新的增长机遇之门。 OZON哈萨克斯…

实现共模噪声电流相互抵消的方法

共模传导路径中噪声电流相互抵消&#xff0c;从而使总的共模电流减小&#xff0c; 终达到降噪的目的。目前为实现共模噪声电流相互抵消&#xff0c;主要是采用动点电容抵消法。 动点电容抵消法原理 动点电容抵消法就是选取合适的动点&#xff0c;添加原副边跨接电容&#xff0c…

【Leetcode】二十、记忆化搜索:零钱兑换

文章目录 1、记忆化搜索2、leetcode509&#xff1a;斐波那契数列3、leetcode322&#xff1a;零钱兑换 1、记忆化搜索 也叫备忘录&#xff0c;即把已经计算过的结果存下来&#xff0c;下次再遇到&#xff0c;就直接取&#xff0c;不用重新计算。目的是以减少重复计算。 以前面提…

深度强化学习 ②(DRL)

参考视频&#xff1a;&#x1f4fa;王树森教授深度强化学习 前言&#xff1a; 最近在学习深度强化学习&#xff0c;学的一知半解&#x1f622;&#x1f622;&#x1f622;&#xff0c;这是我的笔记&#xff0c;欢迎和我一起学习交流~ 这篇博客目前还相对比较乱&#xff0c;后面…

【算法刷题】【力扣】| 最长回文子串|

给你一个字符串 s&#xff0c;找到 s 中最长的 示例 1&#xff1a; 输入&#xff1a;s "babad" 输出&#xff1a;"bab" 解释&#xff1a;"aba" 同样是符合题意的答案。示例 2&#xff1a; 输入&#xff1a;s "cbbd" 输出&#x…

全网最最实用--模型高效推理:量化基础

文章目录 一、量化基础--计算机中数的表示1. 原码&#xff08;Sign-Magnitude&#xff09;2. 反码&#xff08;Ones Complement&#xff09;3. 补码&#xff08;Twos Complement&#xff09;4. 浮点数&#xff08;Floating Point&#xff09;a.常用的浮点数标准--IEEE 754(FP32…

如何利用业余时间做副业,在家里赚钱,来增加收入

人一生每个阶段都会有压力和烦恼&#xff0c;中年人更是如此。 上有老下有小&#xff0c;生活的重担都在一个人身上&#xff0c;压得人喘不过气&#xff0c;这些都需要钱&#xff0c;仅靠工资已经很难维持一家人的开支了。 所以很多人打算利用业余时间做副业&#xff0c;来增加…

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

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

Linux基础复习(三)

前言 接Linux基础复习二 一、常用命令及其解释 Tab补全 在上一篇文章配置了IP然后通过远程SSH连接软件控制主机&#xff0c;在配置过程中会发现有些命令过于长&#xff0c;那么&#xff0c;Tab键补全就可以很好的帮助我们去快速的敲出命令&#xff0c;同时如果有些命令有遗…

【Leetcode】十九、贪心算法:玩筹码 + 跳跃游戏

文章目录 1、贪心算法2、leetcode1217&#xff1a;玩筹码3、leetcode55&#xff1a;跳跃游戏 1、贪心算法 关于贪心算法中&#xff0c;“每一步都是最好的选择"的理解”。以零钱兑换为例&#xff0c;现在有1分、2分、5分的硬币&#xff0c;现在要凑出11分&#xff0c;且要…

API资源对象CRD、认识Operator-理论知识和认识Operator-初次上手(2024-07-17)

一、API资源对象CRD Kubernetes 自定义资源定义&#xff08;Custom Resource Definition&#xff0c;简称 CRD&#xff09;是一种强大的 Kubernetes API 扩展机制&#xff0c;允许你定义和创建自己的资源类型&#xff0c;以满足您的应用程序或基础设施需求。 CRD 的核心思想是…

RAG优化技巧 | 7大挑战与解決方式 | 提高你的LLM: 下篇

RAG优化技巧 | 7大挑战与解决方式 | 提高你的LLM&#xff1a;下篇 在当今快速发展的人工智能领域&#xff0c;大型语言模型&#xff08;LLM&#xff09;已经成为无处不在的技术&#xff0c;它们不仅改变了我们与机器交流的方式&#xff0c;还在各行各业中发挥着革命性的影响。…

实时多模态大模型

1、GPT4o 不开源 2、Moshi 开源模型来自法国一个仅有 8 人的非营利性 AI 研究机构 ——Kyutai&#xff0c;模型名为 Moshi&#xff0c;具备听、说、看的多模态功能。图灵奖得主 Yann LeCun 转发说道&#xff1a;「Moshi 能听懂带有法国口音的英语。」据悉&#xff0c;该团队开…

C++序列化Cereal库的使用

目录 一、什么是序列化二、Cereal序列化库三、下载与编译四、使用 一、什么是序列化 序列化在编程中有以下几个重要的原因&#xff1a; 数据存储&#xff1a;将数据对象序列化为一种持久化的格式&#xff0c;可以将其存储在文件、数据库或其他存储介质中。这样可以在程序的不同…

视觉SLAM第二讲

SLAM分为定位和建图两个问题。 定位问题 定位问题是通过传感器观测数据直接或间接求解位置和姿态。 通常可以分为两类&#xff1a;基于已知地图的定位和基于未知地图的定位。 基于已知地图的定位 利用预先构建的地图&#xff0c;结合传感器数据进行全局定位。SLAM中的全局…