前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >ChatGPT开发实战|实现英文字幕翻译为中文双语的小工具

ChatGPT开发实战|实现英文字幕翻译为中文双语的小工具

作者头像
技术人生黄勇
发布于 2024-07-19 10:26:57
发布于 2024-07-19 10:26:57
31600
代码可运行
举报
文章被收录于专栏:技术人生黄勇技术人生黄勇
运行总次数:0
代码可运行

介绍如何使用ChatGPT开发一个小工具,它能够将英文字幕翻译为中英双语。我们将详细介绍开发过程中的每个步骤,并提供实用的代码示例,帮助您快速掌握如何使用ChatGPT进行自然语言处理

01

缘起

在完成《教程|使用免费GPU 资源搭建专属知识库 ChatGLM2-6B + LangChain》后,我开始研究这个业界热门的开源框架:LangChain。

LangChain 是一个框架,目的是简化使用大型语言模型(LLMs)创建应用程序的过程。作为一种大语言模型集成框架,LangChain 的用例与语言模型的用例大致重叠,包括文档分析和摘要、聊天机器人代码分析

简单来说,LangChain 可以帮助开发人员更快地构建基于语言模型的应用程序,并提供了许多现成的工具和组件来简化开发过程。

当我开始学习吴恩达和LangChain创始人联合发布的课程《》后,发现是英文的,还没字幕,啃起来有点吃力。‍‍

于是把课程视频都下载了下来,用剪映的功能,从视频里识别出英文字幕,导出成字幕文件,再提交给ChatGPT翻译。‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

但是这样,就有点费事,想能不能试试用ChatGPT的API功能,把英文字幕变成中英双语。正好实践一下ChatGPT开发。

打开谷歌的Colab,Colab(Colaboratory)是Google提供免费的在线 Jupyter 笔记本环境。

可以直接在浏览器中编写和执行Python代码,无需安装任何软件或配置环境。而且提供了免费的GPU和TPU资源,可以加速深度学习任务的运算。‍‍‍‍‍‍‍‍‍

访问地址:‍‍‍‍‍

https://colab.research.google.com/

剪映导出的字幕文件实际上是一个文本文件,打开后,它类似如下格式的四行文本,按顺序为:序号、字幕开始时间-结束、字幕、空行。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1
00:00:06,200 --> 00:00:07,733
in order to create an application

开发思路:逐行读入文本,从第三行开始,每四行的内容,送给 ChatGPT 去翻译,取回翻译的结果,再写到新文件中。

新字幕文件按顺序为:序号、字幕开始-结束、英文字幕、中文字幕、空行。‍‍‍‍‍‍‍‍‍‍‍‍‍

先检验一下调用 API 翻译是否可行,只发送一、两行字幕。开头很顺利,返回了“in order to create an application” 这句字幕翻译后的中文:“为了创建一个应用程序”。‍‍‍

然后我就把代码改成根据文件逐行循环的代码。不出意外,出了意外:ChatGPT 返回了错误提示,大意是你是免费的 ChatGPT-3.5 的API用户,调用有次数限制,显示是 3次/每分钟。‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

我看了一下字幕文本,序号最大182,每分钟只能调用3次,玩啥。如果翻译长一点字幕,还不等到人花儿都谢了。‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

官方建议的解决方案: 批量提交Prompt。‍‍‍‍‍‍

也就是说,在下面这个调用ChatGPT函数中,prompt 赋值为一个字符串数组,而不是之前的一行字符串。‍‍‍‍‍‍‍

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def get_response(prompt):
    completions = openai.Completion.create (
        engine=COMPLETION_MODEL,
        prompt=prompt,
        max_tokens=512,
        n=1,
        stop=None,
        temperature=0,
    )
    message = completions
    return message

吭哧吭哧,一顿改代码。把要翻译的182行英文,都塞到prompt数组里,然后提交给ChatGPT API。‍‍

不出意外,果然报了另外一个错:一次只能处理 4096 个 tokens 的上下文。数组里这么多文本,早就超过了4096 个 token。‍‍‍‍‍‍‍‍‍‍

‍‍

也就是说,即使是批量提交,总的token长度也是有限制的。

02

再战

目前的限制:每分钟内限制了3次请求,每次请求限制了4096长的token。

开始思考:能不能把字幕合并后,按token上限长度提交给ChatGPT。但是这样做,返回的中文,无法对应上英文。程序不清楚应该在哪里短句,分行。简单翻译可以,但是没办法逐行对应上英文,写回字幕文件中。‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

按以前调用函数的开发思路,我想:能不能英文用分割词拼接起来,然后希望得到分割词拼接起来的中文。

先在ChatGPT的聊天界面试试,把多行英文字幕,用三个竖线“|||”拼在一起,然后让GPT给我翻译,期望它能按分割的竖线返回翻译的中文。

但是ChatGPT还是比较智能,直接忽略英文里的竖线分隔符,翻译成没有分隔符的中文。这个方案失败了。‍‍‍‍‍‍‍‍‍‍‍‍‍‍

苦思冥想了比较久,也没有好的办法。

后来一想,咱是干啥开发的,有现成的人工智能,我为啥不试试告诉它,逐行翻译呢?‍‍‍‍

于是,我设计了这么一段提示词:“你是一名出色的中英文同声传译员。我会一行一行地给你提供英文,你会一行行地把它翻译成中文。中文和英文的行数相同。你明白吗?”‍‍‍

又因为ChatGPT对英文提示词比较智能,具体可以见这篇文章:《为什么你在用 ChatGPT 的提示词 Prompt 似乎效果不如人意?》‍‍‍‍

我把这段提示词变为英文给了ChatGPT:“You are an excellent simultaneous translator in both Chinese and English. I will provide you with English line by line, and you will translate it into Chinese line by line. The number of lines in both Chinese and English is the same. Do you understand?”‍‍‍‍

果然,哈,这个方法奏效了。

第一版提示词‍

最终版英文提示词‍

开始翻译‍

03

成功‍‍

提示词的方案奏效,那就来解决频次和token长度的限制。

首先因为ChatGPT这样的大模型是没有记忆功能的,也就是常说的上下文。

我们之所以有“模型有记忆”这种错觉,因为OpenAI公司开放给用户的ChatGPT聊天页面后面做了很多工程化的工作,其中就包括让模型有记忆的功能:简单来说,就是每次把之前的聊天对话都发给模型,模型就知道接着该说什么。‍‍‍‍‍‍‍

我一开始也犯了这个错误,调用接口发送提示词过去后,再发送英文字幕,仍然还是完整的中文,而不是刚才验证成功的逐行中文。‍‍‍‍‍‍‍‍‍‍‍

为了解决这个问题,写了一个和ChatGPT对话的类。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Conversation:
    def __init__(self, prompt, num_of_round):
        self.prompt = prompt
        self.num_of_round = num_of_round
        self.messages = []
        self.messages.append({"role": "system", "content": self.prompt})

    def ask(self, question):
        try:
            self.messages.append({"role": "user", "content": question})
            response = openai.ChatCompletion.create(
                model="gpt-3.5-turbo",
                messages=self.messages,
                temperature=0.1,
                max_tokens=2048,
                top_p=1,
            )
        except Exception as e:
            print(e)
            return e

        message = response["choices"][0]["message"]["content"]
        num_of_tokens = response['usage']['total_tokens']
        self.messages.append({"role": "assistant", "content": message})

        if len(self.messages) > 3:
            del self.messages[1: len(self.messages) - 2] #Remove the first round conversation left.
        return message, num_of_tokens

每次对话会把之前的对话和模型的回答,都拼接在提示词prompt变量中,同时为了防止超过token限制,对话超过3次后,会把后面几次对话记录删除。保留最开始起作用的提示词。‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

再写一个计算token的方法,使用ChatGTP 提供的计算token接口。‍

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
COMPLETION_MODEL = "text-davinci-003"

def num_tokens_from_string(string: str, encoding_name: str) -> int:
    """Returns the number of tokens in a text string."""
    encoding = tiktoken.get_encoding(encoding_name)
    num_tokens = len(encoding.encode(string))
    return num_tokens

接口比较简单,需要注意 COMPLETION_MODEL 模型和 encoding_name 编码对应上。‍‍‍‍‍‍

整个代码思路就从开始的方案改为:

读入全部文本到字符串数组;

  • 对数组逐行循环,从第三行开始,每四行的内容-英文字幕,放到prompt变量中,检查再拼接一行是否超过 token 限制;
  • 如果未超过,继续拼接;‍
  • 否则调用聊天类去翻译;
  • 取回的翻译结果,写到中文字符串数组中;‍‍‍‍‍‍‍‍
  • 循环写中英文字幕。

‍‍‍‍‍‍‍‍‍‍‍‍

这次顺利的返回了正确结果,182行字幕分成6次,逐行翻译,中英文一一对应。‍‍‍‍‍‍

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
in order to create an application
where you can chat with your data
you first have to load your data
into a format where it can be worked with
that's where Ling Jane document loaders come into play
we have over 80 different types of document loaders
and in this lesson
we'll cover a few of the most important ones
and get you comfortable with the concept in general
let's jump in
document loaders deal with the specifics of accessing
and converting data
from a variety of different
formats and sources into a standardized format
there can be
different places that we want to load data from
like websites different databases YouTube
and these documents can come in different data types
like Pdfs HTML JSON
and so the whole purpose of document loaders is to take
this variety of data sources and load them
into a standard document object
which consists of content and then associated metadata
there are a lot of different type of document loaders
in link chain
and we won't have time to cover them all
but here is a rough categorization of the 80
that we have
there are a lot that deal with loading
unstructured data

为了创建一个应用程序
可以与您的数据进行聊天
您首先需要加载您的数据
到一个可以处理的格式中
这就是Ling Jane文档加载器发挥作用的地方
我们有超过80种不同类型的文档加载器
在这节课中
我们将涵盖一些最重要的加载器
并让您对这个概念感到舒适
让我们开始吧
文档加载器处理访问和转换数据的具体细节
从各种不同的格式和来源中
加载数据到标准化格式中
我们可能希望从不同的地方加载数据
比如网站、不同的数据库、YouTube
这些文档可以是不同的数据类型
比如Pdf、HTMLJSON
因此,文档加载器的整个目的是将
这种多样化的数据源加载到一个标准的文档对象中
该对象由内容和相关元数据组成
在链环中有很多不同类型的文档加载器
我们没有时间来涵盖所有的加载器
但是这里是我们拥有的80个加载器的大致分类
有很多处理加载非结构化数据的加载器

至此,这个小工具就此完成。‍‍‍

最后放上吴大佬和LangChain创始人Nemo Yang的Langchain学习课程地址,有兴趣的朋友可以开始学习。‍‍‍‍

https://learn.deeplearning.ai/langchain/lesson/1/introduction

‍‍‍‍‍

参考资料:

OpenAI Document

https://platform.openai.com/docs/guides/rate-limits/overview

阅读推荐:

ChatGPT 官方安卓版正式发布!两种下载安装详细教程

ChatGLM 更新:LongBench—评测长文本理解能力的数据集,支持 32k 上下文的 ChatGLM2-6B-32K

教程|使用免费GPU 资源搭建专属知识库 ChatGLM2-6B + LangChain

Claude 2 解读 ChatGPT 4 的技术秘密:细节:参数数量、架构、基础设施、训练数据集、成本

没有硬件资源?免费使用Colab搭建你自己的Stable Diffiusion在线模型!保姆级教程

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-08-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 技术人生黄勇 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Nature:人工智能研究的盲点
大数据文摘作品 转载具体要求见文末 作者 | Kate Crawford& Ryan Calo 选文|Aileen 翻译 | 陈思瑞 王婷 校对 | 周冲 Kate Crawford 和Ryan Calo认为:研究员担忧人工智能未来所带来的影响,会使得他们部署系统时分心。 芝加哥警察使用算法系统预测可能卷入射击案的人,但这些试验被证明很大程度上是无效的 上周,白宫发表了一份关于人工智能未来的报告- 是2016年5月至7月在西雅图,匹兹堡,华盛顿和纽约召开的四个研讨会的讨论结果。(点击查看) 在这些活动中
大数据文摘
2018/05/25
5700
康奈尔大学王飞: 医学人工智能真正落地面临的三大挑战
【新智元导读】新智元AI WORLD2017 世界人工智能大会上,康奈尔大学威尔医学院助理教授王飞带来 《人工智能与智慧医疗》的演讲。他以一些研究上的实例,探讨了临床数据分析领域遇到的问题和成果,以及
新智元
2018/03/21
9740
康奈尔大学王飞: 医学人工智能真正落地面临的三大挑战
白宫号召美国各界为迎接人工智能时代做好准备
未来,人工智能将大展身手,为使美国做好准备,白宫发布了一份关于人工智能未来发展方向及思考的报告,名为《为人工智能的未来做好准备》(Preparing for the Future of Artificial Intelligence)。该报告分析了人工智能的现状、现有应用和潜在应用、以及人工智能发展对社会和公共政策提出的问题,主要内容包括: (1)人工智能在公共事业中的应用 人工智能和机器学习最有前景的应用之一是其有助于应对世界上某些最严峻的挑战和改变最低效的工作方式,从而改善人们的生活。公共部门和私营部门
人工智能快报
2018/03/07
9880
李真真:可信人工智能——“以人为本”的设计和创造
本次报告主要涉及可信AI的进展,首先讲解了可信AI的定义与要求,然后介绍了联邦学习的内容,之后从外部控制和内部控制两反面阐述了可信AI未来的发展方向,最后对可信AI的前景进行了展望。
马上科普尚尚
2020/05/13
2.3K0
李真真:可信人工智能——“以人为本”的设计和创造
欧盟发布《人工智能道德准则》:「可信赖 AI」才是 AI 的指路明灯
人工智能是这个时代最具变革性的力量之一,它可以为个人和社会带来巨大利益,但同时也会带来某些风险。而这些风险应该得到妥善管理。总的来说,AI 带来的收益大于风险。我们必须遵循「最大化 AI 的收益并将其带来的风险降到最低」的原则。为了确保不偏离这一方向,我们需要制定一个以人为中心的 AI 发展方向,时刻铭记 AI 的发展并不是为了发展其本身,最终目标应该是为人类谋福祉。因此,「可信赖 AI」(Trustworthy AI)将成为我们的指路明灯。只有信赖这项技术,人类才能够安心地从 AI 中全面获益。
机器之心
2019/01/02
1.4K0
解码人工智能的幽默:理解其背后的误解与挑战
人工智能(AI)在执行任务时,由于其基于算法和数据的特性,有时会产出一些出人意料或者带有幽默感的结果。
Srlua
2024/03/16
3350
解码人工智能的幽默:理解其背后的误解与挑战
Nat Med|迎接医疗人工智能中偏见的挑战
2021年12月10日,Nature Medicine杂志发表文章,对医疗人工智能中偏见产生的原因和解决方法进行了分析。
智药邦
2021/12/20
1.1K0
Nat Med|迎接医疗人工智能中偏见的挑战
AI创新理念与路线之争:有效加速,还是超级对齐?
2023年AI大模型快速迭代发展,渗透到人类生活的方方面面。面对超级AI的逐渐涌现,人类社会也呈现出不同程度的担忧,这其中逐渐分成了有效加速和超级对齐两个阵营。两大阵营的分歧最终在OpenAI高层人事变动中被投射到人们面前。有效加速与超级对齐分别代表了什么立场?这两种理念对我国AI发展有什么影响和启示?除了有效加速和超级对齐这两条路线,还有没有第三条?
小腾资讯君
2024/03/20
2200
AI创新理念与路线之争:有效加速,还是超级对齐?
《为人工智能系上道德缰绳:确保自主决策的伦理遵循》
在科技飞速发展的当下,人工智能(AI)已经逐渐从科幻小说中的想象变为现实生活中的重要存在。从智能家居设备到自动驾驶汽车,从医疗诊断系统到金融交易算法,AI 的应用无处不在,深刻地改变着我们的生活方式和社会运行模式。然而,随着 AI 系统的自主性和决策能力不断增强,一个严峻的问题摆在我们面前:如何确保人工智能在自主决策时遵循人类的道德准则?
程序员阿伟
2024/12/09
2130
人工智能伦理学的一知半解
读MBA时候的授业导师是周教授,周教授有一门颇受学生们欢迎的课程是“企业伦理学”。时隔多年,课本的内容已经还给了学校,但周老师课上的一些话还隐约记得。
半吊子全栈工匠
2020/02/17
9990
人工智能伦理学的一知半解
多家IT巨头公司就人工智能建立合作组织
全球IT产业的巨头谷歌、微软、IBM、脸书和亚马逊宣布就人工智能联合建立了一个非盈利性组织,其中谷歌子公司DeepMind以独立成员身份参与。 这个新成立的非盈利组织旨在促进公众对人工智能技术(AI)的了解,并就人工智能领域的挑战和机遇制定最佳实践。该组织被命名为“人工智能惠及人类与社会合作伙伴组织”(Partnership on Artificial Intelligence to Benefit People and Society,简称“人工智能合作组织”),学术机构、非盈利组织及政治和伦理道德界的专
人工智能快报
2018/03/07
8820
23条阿西洛马人工智能原则
人工智能的发展引人注目,看到波士顿动力公司的机器人视频,也会增加人们对于人工智能发展的危机感。所以必须有规则限制人工智能的发展方向,不可以使其危害人类,所以制定了阿西洛马人工智能原则。
Jasonangel
2021/05/28
2.1K0
2020年度全球人工智能十大事件
当前,新一代人工智能技术在全球蓬勃兴起,迅猛发展,与大数据、区块链、5G等新技术相互融合、相互因应,为经济社会发展尤其是数字经济发展注入新动能,正在深刻改变社会生产生活方式。与此同时,如何在新技术变革浪潮中始终立于主动,实现人工智能等前沿科技领域有效治理,确保其持续健康发展,也随之成为一个国际国内、社会各界都广泛关注的重大现实问题、重大时代议题。
肉眼品世界
2021/03/26
1.5K0
重大里程碑:顶级科学家达成23条人工智能发展原则!
作者 | 量子位 李林 今天AI领域都在谈论一件事。DeepMind表示,很自豪成为Asilomar人工智能原则的签署者,这是一个AI和伦理方面的重大进步。而硅谷钢铁侠伊隆-马斯克指出,顶级的AI研究人员在人工智能发展方面达成一致:开发对人类有益的人工智能。 这个原则在今年的Asilomar大会上达成。细节如下: 研究问题 1)研究目标 AI研究的目标,不是创造不受指导的智能,而是创造有益人类的智能。 2)研究资助 对人工智能的投资,应确保相关研发是有益人类的,包括计算机科学,经济学,法律,伦理和社会研
量子位
2018/03/21
8300
重大里程碑:顶级科学家达成23条人工智能发展原则!
理解深度学习:第二十一章 深度学习与伦理
github: https://github.com/careywyr/UnderstandingDeepLearning-ZH-CN/tree/main
叶子的技术碎碎念
2025/04/08
1310
理解深度学习:第二十一章 深度学习与伦理
ISOC:人工智能与机器学习的政策建议
image.png 中国信息通信研究院与腾讯研究院AI联合课题组编译   蔡雄山 腾讯研究院法律研究中心副主任、首席研究员   曹建峰 腾讯研究院研究员   李金磊 腾讯研究院助理研究员   日前,国际互联网协会(ISOC)发布《人工智能与机器学习:政策文件》,分析当前的有限人工智能(narrow AI)发展和应用中面临的问题和挑战,并提出指导原则和建议。 引言   近年来,人工智能(artificial intelligence,缩写为AI)受到越来越多的关注。互联网使创新成为可能,也
腾讯研究院
2018/02/01
9690
ISOC:人工智能与机器学习的政策建议
信任、公正与责任:IEEE人工智能合伦理设计指南解读
蔡雄山  腾讯研究院法律研究中心副主任、首席研究员   曹建峰  腾讯研究院法律研究中心研究员   巴洁如  腾讯研究院法律研究中心高级研究员   孙  那  腾讯研究院法律研究中心研究员   李金磊  腾讯研究院法律研究中心助理研究员   不经意间,人工智能(AI)成为2016年主流话题之一。有关技术进步的报道,充斥着媒体。AI将深刻影响生活、社会、经济、法律、政治、全球格局等诸多方面。AI应用的拓展和加深,使得AI伦理问题日益突出,成为关注焦点。   美国、英国等开始重视AI伦理问题。今
腾讯研究院
2018/02/01
2.1K0
Science | 减轻在护理中人工智能的偏见
今天为大家介绍的是来自Matthew DeCamp 和 Charlotta Lindvall的一篇关于AI应用中医疗歧视问题的论文。《摘要总结》。
DrugAI
2023/09/19
2460
Science | 减轻在护理中人工智能的偏见
算法决策兴起:人工智能时代的若干伦理问题及策略|AI观察
本文系根据腾讯研究院研究员曹建峰在“全球人工智能技术大会·2017”的分论坛“AI变革时代的智能系统测评分论坛”上的演讲整理而来。 大家好!很荣幸今天有这个机会跟大家分享我自己对人工智能伦理的一些
腾讯研究院
2018/01/31
1.7K0
算法决策兴起:人工智能时代的若干伦理问题及策略|AI观察
斯坦福成立“以人为本人工智能研究院”,李飞飞担任共同院长
斯坦福大学今天正式宣布启动“以人为本人工智能项目”,目标是创建“以人为本人工智能研究院(Stanford Human-Centered AI Institute (HAI))”。
新智元
2018/11/08
7480
推荐阅读
相关推荐
Nature:人工智能研究的盲点
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验