OpenAI-Translator 实战总结

最近在极客时间学习《AI 大模型应用开发实战营》,自己一边跟着学一边开发了一个进阶版本的 OpenAI-Translator,在这里简单记录下开发过程和心得体会,供有兴趣的同学参考

  • 功能概览

    • 通过openai的chat API,实现一个pdf翻译器
    • 实现一个web GUI,可以上传pdf文件,然后翻译成目标语言的pdf文件
    • 实现了一个openai的plugin,pdf翻译器
  • 系统概述

    PDF Translator
    Load
    Prompt
    Response
    Save
    Parsed Content
    Model
    PDF Parser
    Writer
    PDF File
    ChatGPT
    Translated PDF File
    • PDF Parser
      • 通过pdfminer.six库,解析pdf文件,得到pdf的内容
      • 通过解析pdf的内容,得到pdf的图片,表格,文本等内容
    • Model
      • 通过prompt的方式,把pdf的内容转化为目标语言
    • Writer
      • 把翻译后的内容,写入到pdf 或者markdown文件中
  • Prompt 优化过程

    • 第一次尝试

      • 为了支持其他语言的翻译,在prompt里把目标语言设置为变量 {target_language}
      [{"role": "system","content": "For the input text, translate it into {target_language} as native speaker"
      },
      {"role": "user","content": "“Santiago,” the boy said.\n"
      }]
      
      • 问题
        • 表格格式没有保留
        • 翻译不准确,表现是没有把user 的content内容翻译成目标语言
    • 优化Prompt里system的描述

      • 增加格式化输出的描述 output each of these data in json format,方便代码后续解析
      • 增加prompt,让模型知道需要翻译的内容所属语言是什么 Identify the language of input text
      [{"role": "system","content": "From the input text, output each of these data in json format:\n\n1. (language) Identify the language of input text \n2. (translation) Translate to Chinese as a native speaker and keep the original character format of the text unchanged\n3. (translation_language) The language translated from the input text"
      },
      {"role": "user","content": "“Santiago,” the boy said.\n"
      } ]
      
      • 问题
        • 偶尔翻译不准确,表现是没有把user 的content内容翻译成目标语言
    • 再次优化Prompt,增加黑魔法,think step by step

      • 翻译text的prompt
         [{"role": "system","content": f"You act as a language expert, do a language translation job, here are the steps:\n\n"f"1. (language) Identify the language of input text \n"f"2. (translation) Translate the input text to {target_language} as a native speaker \n"f"3. (output) output the language and translation in json format\n"},{"role": "user","content": f"“Santiago,” the boy said.\n"}]
      
      • 翻译table的prompt
        • 加注:保持表格的原有格式与标点符号 format and maintain spacing (spaces, separators), and return in tabular form
           [{"role": "system","content": f"From the input text, do a language translation job, here are the steps:\n\n"f"1. (language) Identify the language of input text \n"f"2. (translation) Translate the input text to {target_language} as a native speaker, format and maintain spacing (spaces, separators), and return in tabular form\n"f"3. (output) output the language and translation in json format"},{"role": "user","content": f"{table content}"}]
      
  • 代码结构

    • 重构content
      Content
      set_translation
      ImageContent
      set_translation
      TextContent
      set_translation
    • 重构parser
      PageParser
      parse
      PageImageParser
      parse
      PageTableParser
      parse
      PageTextParser
      parse
    • 重构writer
      Writer
      save
      PDFWriter
      save
      MarkdownWriter
      save
  • PDF格式

    • 为了保持PDF文档内容结构,需要保留原文档的空格,换行,分隔符等
    • 分段策略
      • 以空行为分段标志
    • 翻译后的文档,保持原文档的空格,换行,分隔符等
    • 示例:老人与海的pdf文档
      在这里插入图片描述
  • 图形用户界面GUI 设计

    • 设计以及代码由 gpt4 生成
    • 如下是使用的prompt
      • 对一个翻译pdf功能的服务器设计一个GUI
      • 请用python实现一下
      • 请用 HTML、CSS 和 JavaScript 实现一个你上文提到的UI
      • 请增加这些功能显示文件上传和翻译进度、选择源语言和目标语言、处理文件上传大小的限制
      • 对于代码的错误,交给gpt4,让它来修复代码中的问题
    • 详见 chatGPT share
    • Web GUI效果图
      在这里插入图片描述
  • plugin开发

    • openapi文档的生成,通过gpt4生成
      • 通过把路由代码,交给gpt,然后让它生成对应的openapi文档,然后对应着plugin 官方文档修正下,就可以了
openapi: 3.0.1info:title: PDF Translatordescription: A Plugin that allows the user to translate the PDF to any language they want.version: 'v1'servers:- url: http://localhost:8080paths:/translate:post:operationId: translatePDFsummary: Translate the content of PDF file to target languageparameters:- content:multipart/form-data:schema:type: objectproperties:file:type: stringformat: binarydescription: The PDF file that should be translated todst_lang:type: stringdescription: The language and should be translated to, e.g. Chinese.responses:"200":description: OKcontent:application/json:schema:$ref: '#/components/schemas/translatePDF''400':description: Bad Requestcontent:text/plain:schema:type: string'500':description: Internal Server Errorcomponents:schemas:translatePDF:type: stringproperties:weather:type: stringformat: binarydescription: The content of PDF file that has been translated
  • 收获和总结

    • openai API的使用 chat API调用,以及各个参数的含义
    • openai playground的使用,调试prompt很好用的工具
    • prompt的使用以及优化,这一点需要在实际的案例中加强训练
    • 熟悉了openai plugin开发步骤以及流程
  • Github Code

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

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

相关文章

Python爬虫——selenium的安装和基本使用

1.什么是selenium? selenium是一个用于web应用程序测试的工具selenium测试直接运行在浏览器中,就像真正的用户在操作一样支持通过各种driver(FrifoxDriver,ItenrentExploreDriver,OperaDriver,ChromeDrive…

【BASH】回顾与知识点梳理(十四)

【BASH】回顾与知识点梳理 十四 十四. 文件与目录的默认权限与隐藏权限14.1 文件预设权限:umaskumask 的利用与重要性:专题制作 14.2 文件隐藏属性chattr (配置文件案隐藏属性)lsattr (显示文件隐藏属性) 14.3 文件特殊权限: SUID, SGID, SBI…

了解华为(H3C)网络设备和OSI模型基本概念

目录 一,认识华为 1.华为发展史 2.华为网络设备介绍 3.VRP概述 二,OSI七层模型 1.七层模型详细表格 2.各层的作用 3.数据在各层之间的传递过程 4.OSI四层网络模型 一,认识华为 官网:https://www.huawei.com/cn/ 1.华为发…

从‘深林’到潮鞋App:得物如何改变电商格局”

在App Store上搜索下载得物App,惊奇发现其下载量达到百万级别,媲美同期京东App的下载量。 这是一个不小的数据体量,对此我产生了极大的好奇:“在淘宝系、京东、唯品会等电商巨头林立的现状下,单依靠潮鞋的得物凭什么能…

详解配置交换机多生成树MSTP+VRRP 的典型组网

详解配置交换机多生成树MSTPVRRP 的典型组网 组网: 1. 这是一个由三台交换机组成的倒三角型二层交换网络;网络中有4个VLAN:10、20、30、40;接口编号如图所示;SW3为接入层交换机,SW1、SW2为汇聚层交换机&am…

bash: make: command not found

make之后报错信息如下:cd 对应的文件路径后 make 发现报错:bash: make: command not found 这个原因可能是没有安装make工具,也可能是安装了make之后,没有将make的文件路径添加到系统环境变量中 有没有安装make,可以使用Search Everything搜索是否有make…

websocket+node实现直播(弱鸡版)

心血历程 这部分主要是写在写这些的时候遇到的问题以及换思路的过程,可以之间看正文 在之前我也写过直播功能,并且与websocket相结合实现了直播弹幕。只不过直播是使用的腾讯云的,而不是手写的直播推流拉流,这次又有一个新的项目…

【D3S】集成smart-doc并同步配置到Torna

目录 一、引言二、maven插件三、smart-doc.json配置四、smart-doc-maven-plugin相关命令五、推送文档到Torna六、通过Maven Profile简化构建 一、引言 D3S(DDD with SpringBoot)为本作者使用DDD过程中开发的框架,目前已可公开查看源码&#…

自从学了C++之后,小雅兰就有对象了!!!(类与对象)(中)——“C++”

各位CSDN的uu们好呀,好久没有更新小雅兰的C专栏啦,话不多说,让我们进入类和对象的世界吧!!! 类的6个默认成员函数 构造函数 析构函数 拷贝构造函数 类的6个默认成员函数 如果一个类中什么成员都没有&am…

el-select与el-tree结合使用,实现select框下拉使用树形结构选择数据

使用el-select与el-tree&#xff0c;实现如下效果&#xff0c; 代码如下&#xff1a; 注意点&#xff1a;搜索input框的代码一点放在option上面&#xff0c;不要放在option里面&#xff0c;否则一点击搜索框&#xff0c;下拉框就会收起来&#xff0c;不能使用。 <el-select…

【深度学习注意力机制系列】—— SKNet注意力机制(附pytorch实现)

SKNet&#xff08;Selective Kernel Network&#xff09;是一种用于图像分类和目标检测任务的深度神经网络架构&#xff0c;其核心创新是引入了选择性的多尺度卷积核&#xff08;Selective Kernel&#xff09;以及一种新颖的注意力机制&#xff0c;从而在不增加网络复杂性的情况…

工业无线技术应用-无线控制斗轮机启停、故障等开关信号

斗轮堆取料机是一种对散料进行连续堆取作业的高效装卸大型机械,被广泛使用于火力发电厂和炼焦厂的输煤系统中。目前对斗轮机的技改主要为将斗轮机的部分程控信号改为无线传输&#xff0c;取代卷筒电机和电缆的应用。 多数情况下都是利用无线通讯做媒介&#xff0c;让工作人员通…

第48节:cesium 面交集计算(含源码+视频)

结果示例: 完整源码: <template><div class="viewer"><vc-viewer @ready="ready" :logo="false"><vc-navigation

docker版jxTMS使用指南:使用jxTMS采集数据之一

本文讲解了如何jxTMS的数据采集与处理框架并介绍了如何用来采集数据&#xff0c;整个系列的文章请查看&#xff1a;docker版jxTMS使用指南&#xff1a;4.4版升级内容 docker版本的使用&#xff0c;请查看&#xff1a;docker版jxTMS使用指南 4.0版jxTMS的说明&#xff0c;请查…

Unity之ShaderGraph 节点介绍 Utility节点

Utility 逻辑All&#xff08;所有分量都不为零&#xff0c;返回 true&#xff09;Any&#xff08;任何分量不为零&#xff0c;返回 true&#xff09;And&#xff08;A 和 B 均为 true&#xff09;Branch&#xff08;动态分支&#xff09;Comparison&#xff08;两个输入值 A 和…

15 款最佳建筑渲染软件,适用于 Windows、macOS,免费和付费版本

3D 建模和渲染在建筑行业的各种项目的推广和营销中发挥着非常重要的作用。建筑公司使用 3D 建模和渲染、3D 建筑动画和演练来展示他们的设计。房地产效果图帮助代理商让客户清楚地了解建筑设计、纹理、灯光效果和环境情况。这是非常有价值的&#xff0c;并且在销售设计时提供了…

解决MAC M1处理器运行Android protoc时出现的错误

Protobuf是Google开发的一种新的结构化数据存储格式&#xff0c;一般用于结构化数据的序列化&#xff0c;也就是我们常说的数据序列化。这个序列化协议非常轻量级和高效&#xff0c;并且是跨平台的。目前&#xff0c;它支持多种主流语言&#xff0c;比传统的XML、JSON等方法更具…

python采集淘宝整店商品 json格式

竞争优势&#xff1a;通过采集淘宝整店商品&#xff0c;可以获取到同一行业或同一类别的竞争对手的商品信息。这使得你可以更好地了解市场上的产品&#xff0c;了解竞争对手的定价、销售策略和产品特点&#xff0c;从而更好地制定自己的营销策略和定价策略。在竞争激烈的市场中…

类和对象的学习

类和对象说明 类的属性和方法 类的入门案例 //类名 public class school {//属性String name; //名称int jsNumber; //教室数目int jfNumber;//机房数目//方法public void show(){System.out.println("名称: " name "教室数目" jsNumber " , 机房数…

设计模式——设计模式以及六大原则概述

设计模式代表有经验的面向对象软件开发人员使用的最佳实践。 设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。 这些解决方案是由许多软件开发人员在相当长的时间内通过试错获得的。 什么是 GOF&#xff08;四人帮&#xff0c;全拼 Gang of Four&#xff09…