AI大模型探索之路-实战篇1:基于OpenAI智能翻译助手实战落地

文章目录

  • 前言
  • 一、需求规格描述
  • 二、系统架构设计
  • 三、技术实施方案
  • 四、核心功能说明
  • 五、开源技术选型
  • 六、代码实现细节
    • 1.图形用户界面(GUI)的开发
    • 2.大型模型调用的模块化封装
    • 3.文档解析翻译结果处理
  • 总结


前言

在全球化的浪潮中,语言翻译需求日益增长。市场上涌现出各式各样的翻译工具和平台,然而,免费的解决方案往往局限于简短文本的翻译。面对长篇文档,用户通常不得不转向付费服务。鉴于大型预训练语言模型(LLMs)在自然语言翻译上的显著优势,利用这些模型打造一款高效、经济的翻译工具,不仅能满足市场需求,同时亦具备极高的商业潜力与数据安全性。

针对这一需求,我们提出了一个基于OpenAI智能翻译助手的实战落地项目。该项目旨在开发一款支持多语种互译、兼容多种文件格式的翻译工具,以满足用户对长篇文档翻译的需求。


一、需求规格描述

1)支持包括但不限于PDF、Word等多样化的文件格式;
2)实现多语种间的互译功能;
3)兼容并优化多种大型预训练语言模型架构设计

二、系统架构设计

在这里插入图片描述

1)用户通过客户端上传待翻译文件;
2)系统后端进行文件解析,调用适配的大型模型执行翻译任务,并将翻译结果整合为新文档;
3)最终将翻译后的文档返回给用户以供下载。

三、技术实施方案

1)方案一:基于目标大型模型选择对应的API接口,自主封装模型调用流程;
2)方案二:采用LangChain框架,以简化大型模型集成过程,该框架负责隔离并封装模型调用细节。

本次先采用方案一实现,后续再引入LangChain框架简化改造。

四、核心功能说明

  1. 文本:高精度文本解析;
  2. 表格:表格内容智能辨识与翻译;
  3. 图片:图片内文字暂不予处理,考虑到其处理难度及相对较低的需求优先级。

五、开源技术选型

选择对文本和表格支持性比较好的pdfplumber
在这里插入图片描述

六、代码实现细节

1.图形用户界面(GUI)的开发

核心代码样例:

def launch_gui(args):
    global global_args
    global_args = args
    iface = gr.Interface(
        fn=translate_with_gui,
        inputs=[
            gr.File(label="上传PDF文件"),
            gr.Dropdown(choices=["中文", "日语", "西班牙语"], value="中文", label="选择目标语言"),  # 这里添加了default参数
            gr.Dropdown(choices=["OpenAIModel", "GLMModel"], value="OpenAIModel", label="选择大模型"),  # 这里添加了default参数
            gr.Radio(choices=["PDF", "Markdown","word"], value="PDF", label="选择输出格式")  # 选择输出格式
        ],
        outputs=gr.Textbox(label="输出结果")
    )
    iface.launch()

在这里插入图片描述

2.大型模型调用的模块化封装

核心代码样例:

class OpenAIModel(Model):
    def __init__(self, model: str, api_key: str):
        self.model = model
        openai.api_key = api_key

    def make_request(self, prompt):
        attempts = 0
        while attempts < 3:
            try:
                if self.model == "gpt-3.5-turbo":
                    response = openai.ChatCompletion.create(
                        model=self.model,
                        messages=[
                            #{"role": "system", "content": super.get_system_prompt()},
                            {"role": "user", "content": prompt},
                        ]
                    )
                    translation = response.choices[0].message['content'].strip()
                else:
                    response = openai.Completion.create(
                        model=self.model,
                        prompt=prompt,
                        max_tokens=150,
                        temperature=0
                    )
                    translation = response.choices[0].text.strip()

                return translation, True

3.文档解析翻译结果处理

1)文档解析:引用工具插件将对文档进行解析,页、内容(文段、表格、图片)
2)文档翻译:调用大模型API翻译:文段、表格
3)文档生成:将翻译后的内容回写生成新文档、输出下载
核心代码样例:

# 定义一个PDFTranslator类
class PDFTranslator:
    # 定义初始化函数,接收一个model_name参数
    def __init__(self, model: Model):
        # 创建一个model对象,用于执行翻译任务
        self.model = model
        # 创建一个PDFParser对象,用于解析PDF文件
        self.pdf_parser = PDFParser()
        # 创建一个Writer对象,用于写入文件
        self.writer = Writer()

    def translate_pdf(self, pdf_file_path: str, file_format: str = 'PDF', target_language: str = 'Chinese',
                      output_file_path: str = None, pages: Optional[int] = None):
        # 使用PDFParser对象解析指定的PDF文件,并将结果赋值给self.book
        self.book = self.pdf_parser.parse_pdf(pdf_file_path, pages)

        # 遍历self.book的每一页
        for page_idx, page in enumerate(self.book.pages):
            # 遍历每一页的每个内容
            for content_idx, content in enumerate(page.contents):
                #生成提示语
                prompt = self.model.translate_prompt(content, target_language)

                LOG.debug(prompt)
                translation, status = self.model.make_request(prompt)
                LOG.info(translation)

                # 更新self.document.pages中的内容
                content.apply_translated_paragraphs(translation)
                """
                用book对象存储翻译的结果
                """
                self.book.pages[page_idx].contents[content_idx].set_translation(translation, status)

        # 使用Writer对象保存翻译后的书籍,并返回保存的路径
        return self.writer.save_translated_book(self.book, output_file_path, file_format)


总结

1)Prompt工程是翻译质量的核心,要求开发者精通其构造与优化技巧;
2)LangChain的使用大幅简化了大型模型的集成和操作,极大提升了开发效率;
3)展望更多应用场景,例如基于大型模型重构的翻译应用、语音点餐系统、智能旅行助手、订票平台以及打车服务等,均有望在不久的将来得到实质性进展。

通过这个项目的实施,我们成功地实现了一个基于OpenAI智能翻译助手的实战落地工具。该工具不仅满足了市场对长篇文档翻译的需求,还具备高效、经济的特点,并且保证了数据的安全性。我们相信,随着技术的不断进步和应用场景的扩展,该工具将在未来得到更广泛的应用和发展。

👉实战系列篇
AI大模型探索之路-实战篇2:基于CVP架构-企业级知识库实战落地
AI大模型探索之路-实战篇3:基于私有模型GLM-企业级知识库开发实战

🔖更多专栏系列文章:AIGC-AI大模型探索之路

文章若有瑕疵,恳请不吝赐教;若有所触动或助益,还望各位老铁多多关注并给予支持。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

HarmonyOS NEXT 使用Canvas实现模拟时钟案例

介绍 本示例介绍利用 Canvas 和定时器实现模拟时钟场景&#xff0c;该案例多用于用户需要显示自定义模拟时钟的场景。 效果图预览 使用说明 无需任何操作&#xff0c;进入本案例页面后&#xff0c;所见即模拟时钟的展示。 使用说明 无需任何操作&#xff0c;进入本案例页…

20240330-2-XGBoost面试题

XGBoost面试题 1. RF和GBDT的区别 相同点&#xff1a; 都是由多棵树组成&#xff0c;最终的结果都是由多棵树一起决定。 不同点&#xff1a; 集成学习&#xff1a; R F RF RF属于 B a g g i n g Bagging Bagging思想&#xff0c;而 G B D T GBDT GBDT是 B o o s t i n g Bo…

【数据结构2-线性表】

数据结构2-线性表 1 线性表-数组2 线性表-单链式结构2.1 前插顺序单链表2.2 后插顺序单链表2.3 循环单链表2.4 双向链表 总结 线性表、栈、队列、串和数组都属于线性结构。 线性结构的基本特点是除第一个元素无直接前驱&#xff0c;最后一个元素无直接后继之外&#xff0c;其他…

Django中间件的源码解析流程(上)——中间件载入的前置

目录 1. ​前言​ 2. 请求的入口 3. 中间件加载的入口 4. 源码中的闭包实现 5. 最后 1. 前言 哈喽&#xff0c;大家好&#xff0c;我是小K,今天咋们分享的内容是&#xff1a;在学会Django中间件之后&#xff0c; 我们继续深入底层源码。 在执行中间件时请求到来总是从前往后…

第三方应用类---Phpmyadmin 后台 Getshell 操作

免责声明:本节仅做技术交流学习. 目录 什么是Phpmyadmin? getshell前提条件: 详细步骤: 1-搜集到开放phpmyadmin的web,然后访问进去 2-执行SQL命令查看是否开启了读写权限 3-开启了读写权限-->继续 没有开读写权限--->鸡鸡 4-有读写权限之后,执行SQL语句导出文件…

【Python】函数进阶(纯干货版)

目录 函数的多返回值 多个参数的传递 缺省参数 不定长参数 位置不定长参数传参举例 关键字不定长参数举例 函数作为参数传递 匿名函数 函数的多返回值 在Python中允许一个函数带回多个返回值&#xff0c;写法是一个return 返回值1&#xff0c;返回值2 在接收的时候同样…

快速入门Spring Data JPA

Spring Data JPA是Spring Data框架的一小部分&#xff0c;它能够让开发者能够更加简单的对数据库进行增删改查。 由于Spring Data JPA可以自动生成SQL代码所以一般情况下&#xff0c;简单的增删查改就可以交给Spring Data JPA来完成&#xff0c;而复杂的动态SQL等用MyBatis来完…

软考 系统架构设计师系列知识点之大数据设计理论与实践(14)

接前一篇文章&#xff1a;软考 系统架构设计师系列知识点之大数据设计理论与实践&#xff08;13&#xff09; 所属章节&#xff1a; 第19章. 大数据架构设计理论与实践 第4节 Kappa架构 19.4.3 Kappa架构的实现 下面以Apache Kafka为例来讲述整个全新架构的过程。 部署Apach…

解线性方程组——直接解法:LU分解、PLU分解(类似列主元消去法) | 北太天元

L: lower triangular 下三角 U: upper triangular 上三角 LU 分解&#xff0c;顾名思义&#xff0c;为 把一个 矩阵 分成 一个下三角矩阵 乘上一个上三角矩阵的形式。 Example 为什么可以这样 几个基本的初等行变换&#xff0c;可以自己验算一下&#xff0c;等式的左边与右边…

Linux管道共享内存

前言 进程虽然是独立运行的个体&#xff0c;但它们之间有时候需要协作才能完成一项工作&#xff0c;比如有两个进程需要同步数据&#xff0c;进程 A 把数据准备好后&#xff0c;想把数据发往进程 B&#xff0c;进程 B 必须被提前通知有数据即将到来&#xff0c;或者进程 A 想发…

腾讯EdgeOne产品测评体验—金字塔般的网络安全守护神

作为一名对网络安全和性能优化充满热情的用户&#xff0c;我决定体验腾讯云下一代 CDN 服务 - EdgeOne。这款引以为傲的全方位服务如数来到&#xff0c;从域名解析、动静态智能加速到四层加速及DDoS/CC/Web/Bot 防护&#xff0c;一应俱全。随着时代风云变幻&#xff0c;日均数千…

kubernetes1.28版本的二进制安装

前言 二进制部署 Kubernetes&#xff08;K8s&#xff09;集群相对于其他部署方式&#xff08;如基于发行版的包管理器、容器化部署工具等&#xff09;具有一些优势&#xff0c;主要包括&#xff1a; 灵活性&#xff1a;二进制部署方式更加灵活&#xff0c;您可以根据自己的需…

冯喜运:4.21黄金市场失去正常反应?下周黄金原油解析

【黄金消息面解析 】&#xff1a;周五(4月19日)&#xff0c;伊朗媒体似乎淡化了以色列袭击的影响&#xff0c;表明地缘政治风险降低&#xff0c;导致避险资产需求放缓&#xff0c;金价回吐涨幅。本周现货黄金价格上涨超2%。美国黄金期货收盘上涨0.7%&#xff0c;至2413.8美元。…

基于SpringBoot的“火车订票管理系统”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“火车订票管理系统”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 系统功能结构图 前台首页功能界面图 登录、用…

Shapley量化调峰成本?高比例可再生能源电力系统的调峰成本量化与分摊模型程序代码!

前言 在能源安全、环境污染和气候变化的大背景下&#xff0c;大力发展可再生能源是应对全球气候变化&#xff0c;实现“碳达峰、碳中和”和可持续发展的重大需求。截至2020年底&#xff0c;中国风电总装机容量为281GW&#xff0c;风力发电466.5TWh&#xff0c;同比增长约15%&a…

运动想象 (MI) 分类学习系列 (10) :iWSGL-CSP

运动想象分类学习系列:iWSGL-CSP 0. 引言1. 主要贡献2. 提出的方法3. 结果3.1 在3个数据集上的效果3.2 基线比较 4. 总结欢迎来稿 论文地址&#xff1a;https://www.sciencedirect.com/science/article/abs/pii/S0957417423027884 论文题目&#xff1a;Improvement of motor im…

强固型工业电脑在称重系统+叉车电脑,称重量体扫码一体机,物流分拣线工作站行业应用

称重系统叉车电脑行业应用 背景介绍 在叉车上安装称重传感器&#xff0c;通过对举升压力的自动检测&#xff0c;将压力信号转换为电流或电压信号&#xff0c;经过A/D转换&#xff0c;使模拟信号变为数字信号&#xff0c;经微处理器进行数据处理后通过蓝牙、串口或者USB接口将称…

Cucumber基本介绍

Cucumber 是什么&#xff1f; Cucumber是一种支持行为驱动开发&#xff08;BDD&#xff09;的工具 Cucumber读取以纯文本编写的可执行规范&#xff0c;并验证软件是否按照这些规范所说的执行。规范由多个示例或场景组成。例如&#xff1a; Feature: 用户登录功能 作为用户&…

生成人工智能体:人类行为的交互式模拟论文与源码架构解析(1)——场景故事介绍

生成NPC为交互应用程序创建逼真的人类行为模拟。在这项工作中&#xff0c;我们通过将二十五个NPC放置在一个沙盒环境中&#xff08;类似于The Sims&#xff0c;模拟人生&#xff09;&#xff0c;展示了生成NPC的能力。用户可以观察和干预NPC的日常计划、分享新闻、建立关系以及…

随机过程-题目

1.平稳随机过程的统计特姓不随时间的推移而不同&#xff0c;其一维分布与时间无关&#xff0c;二维分布只与时间间隔有关。 2.一个均值为0、方差为的窄带平稳高斯过程&#xff0c;其同相分量和正交分量是平稳高斯过程&#xff0c;均值为0&#xff0c;方差为。 3.均值为0的平稳…