如何利用GPT’s,1 天之内打造你的个性化电子书库
阅读时长 19 分钟
挑战以 Python 入门级别的经验,借助AI的力量,完成个性化电子书库。
市面上电子书库管理工具
目前主流的电子书库管理工具有 Calibre、Koodo Reader 等,这些软件的优点在于功能完整,使用方便,但是也有各自的局限,比如:
- 本地电子书导入形成书库后,电子书将被自动拷贝,硬盘占用空间将编程原来的两倍。
- 大部分电子书阅读器偏重手机端,电脑上的电子书阅读器较少。
定制符合自己个性化需求的电子书库的难点
利用python或者其他熟悉的语言,想要快速定制一款适合自己个性化需求的电子书库,也并非快刀斩乱麻可以实现。对于编程小白的同学,情况可能更为复杂,先不说学习编程语言所花费的时间,即便光是研发、调试、修改的时间,没2~3周估计完不成。像顺水老师这种上班族,更加没有整块的时间用于代码编码,所花费的时间会更长。
AI时代下,如何将打造效率提升10倍?
条条道路通罗马,找到最快那一条。
先看顺水老师花费一天(8小时)时间完成的效果。
怎么做
以下几点是关键:
- 找到帮手
- 厘清需求
- 用对方法
找到帮手:GPT’s
使用 OpenAI 的 GPT’s 这个强大的工具,至于如何创建 GPT‘s 这个工具,几个步骤就可以完成,介绍的文章有很多。
国内的文心一言,星火大模型是否也可以呢?关于这部分请查看顺水老师的另外一篇文章,专门针对这部分内容进行讨论,此处不再赘述。
明确分工:我和AI各自做什么
按照项目管理的思路,首先得有骨干团队以及明确团队分工。这次,我和 GPT’s 组成一个小的研发团队。首先明确彼此的分工。
GPT’s 的角色:骨干软件工程师,UI设计师
我的角色:需求人员,新人程序员,半个产品经理,项目经理,测试人员
为什么是半个产品经理,后文中会提及,结合具体实例,体验会更深。
厘清需求:确定需求优先级
罗马不是一天建成的,微信也一样。
对需要的功能进行梳理,优先级高的功能先做,优先级低的后做。
必需的功能先做,优化功能后做。
按照这个思路,整理电子书项目的功能优先级一览表。
用对方法:找到推进方法
我们使用 PDCA 的方式来推进项目。PDCA 是一个管理和持续改进的方法论,它代表着四个关键步骤:Plan(计划)、Do(执行)、Check(检查)和 Act(行动)。这个方法论被广泛应用于各种组织和领域,用于解决问题、改进流程和实现持续的质量管理。我们用这个方法论来推进这个项目的迭代实现。
P:Plan ,设计问题
D:Do, 对 GPT‘s 进行提问,并获取回答
C:Check, 检查得到的回答,是否是我想要的答案(说明、功能或代码)
- 这里的检查包含两种动作:
- 检查 GPT’s 的理解是否正确,还是我们需要提供更多的信息帮助他更好的回答。
- 检查 GPT’s 生成的功能,是否如我们所描述的那样,运行正常且满足需求。
A:Action, 对结果进行处理(调优)或是总结经验,开启下一个循环。
Plan:如何设计问题。
这里的难点在于,如何设计对的问题。
问对问题的方法在于结构化思维:从框架到局部、从主干到细节的方法进行。
例如:首先要问的第一个问题是,描述项目背景,让 GPT’s 明白我大概要做什么,让它去思考它需要什么样的信息,才能更好的帮助我完成这个项目。虽然我们最终要的是一个产品,但首先我希望知道,如何才能获得这个产品,而不是一上来就提产品需求,例如:
问题1:(描述项目背景)
我需要研发一个给电脑上的电子书分类的软件,电子书籍都存放在我的 windows 电脑中的文件夹里面,我需要给电子书进行分类,但是由于电子书数量庞大,用文件夹的方式进行管理不方便进行分类,所以有了这个研发电子书分类软件的需求,请协助我完成
GPT’s 回答:
要开发一个用于分类电子书的Windows桌面应用程序,我们可以使用Python语言。这个程序将能够帮助你管理大量的电子书籍,使其分类更加高效和直观。下面是开发这个应用的大致步骤:
1. 环境准备和技术选型
- Python版本:选择一个适合的 Python 版本,如 Python 3.7 或更高版本。
- 图形界面库:使用例如Tkinter或PyQt5这样的库来构建用户界面。
- 电子书格式处理:如果需要处理特定的电子书格式(如EPUB,PDF),可能需要使用相应的库,例如
PyPDF2
(处理PDF文件)或EbookLib
(处理EPUB文件)。2. 需求分析
- 分类方式:决定是按照书名、作者、出版年份、类型等属性分类。
- 界面需求:设计一个直观、易用的界面,包括书籍列表、分类选项和书籍预览等。
- 书籍信息读取:程序需要能够读取电子书的元数据,如标题、作者等。3. 设计应用程序结构
- 主界面:显示书籍列表和分类选项。
- 书籍扫描器:扫描指定目录中的电子书并读取其信息。
- 分类系统:允许用户创建分类,并将书籍归入相应类别。
- 预览功能:可选,如果希望在应用中直接预览电子书。
4. 编码
- 界面设计:使用Tkinter或PyQt5编写界面代码。
- 书籍扫描与分类:编写扫描电子书并根据元数据或用户输入进行分类的逻辑。
- 数据存储:考虑如何存储书籍信息和用户分类,可以使用简单的文件系统或者轻量级数据库,如SQLite。
5. 测试和优化
- 功能测试:确保所有功能按预期工作,如书籍扫描、分类功能等。
- 用户体验优化:根据测试结果调整用户界面和交互流程,确保应用易于使用。
6. 打包和部署
- 使用如PyInstaller等工具将你的应用打包成可执行文件,方便在Windows上部署和运行。
同时它给出了一个简单的代码框架
此时我们就知道了整个项目的推进流程。
Do: 获取回答。
这里比较简单,就像和人一起交流一样,提出问题,他就会回答。
Check:如何做检查
梳理得到的回答,得到有价值的信息,忽略无效的信息。
这里还是以回答1为例,GPT‘s 给出了项目的推进流程和项目框架代码,从这些信息中,梳理出对我们有价值的信息:
- 整个项目的推进流程,这很重要,但是我们要在这个基础上进行优化,具体怎么优化,这就是下一步 Action 的内容。
- 一个简单的框架代码。但这是无效信息,因为按照整个项目推进的流程,目前我们还处于环境准备和技术选型阶段,并不是“设计应用结构”或者“编码”阶段,因此,虽然他给出这段代码,但对于还没有掌握到足够的信息,就给出的回答,对我们来说是无用的。
另外,我们的角色是产品经理,我们希望的是 GPT‘s 顺着我们的思路来推进项目,由我们这个产品经理来主导项目推进的节奏。
Action:如何做处理
就是将有用的价值的信息沉淀,变成项目的一个组成部分,并记录结果,开启下一个循环。
以上一个步骤得到的检查结果为例,重点梳理流程部分,我和 GPT‘s 已经有了分工,“设计应用结构”或者“编码”都应该主要是骨干软件工程师的事情,这部分是由 GPT‘s 来完成的,所以这部分我合并成一个“设计及编码”过程,我来辅助“骨干软件工程师”,设计的总体思路可以由我来出,但是具体细节交给“软件工程师”,我们并不希望连一个按钮摆在哪里的这种基础问题,一开始都由我们来思考(为何是半个产品经理)。
最后我们得到最终的项目流程是:
- 环境准备和技术选型( GPT‘s ->我)
- 需求分析(我-> GPT‘s)
- 设计及编码(GPT‘s)
- 测试和优化(我)
- 打包及部署( GPT‘s ->我)
举一个例子
由于流程过程很长,整个对话过程不在文章中展示,第一和第二个步骤相对也较为简单,开启多轮 PDCA 循环 ,将需求告诉 GPT‘s,再根据 GPT‘s 的回答,筛选出其中正确的信息并告知GPT保留这些信息,再询问 GPT‘s 如何按步骤安装编程环境即可。文本重点对第三部分“设计及编码”,也就是整个项目的核心进行举例。
这时我们已经完成了需求分析和环境搭建。
Plan:设计问题。
此时提出的问题,也不是告诉我代码怎么写,而是接下来我需要干什么。
问题n:
好的,需求差不多就是这些,请告诉我接下来应该怎么做,我的电脑上已经安装了python3.9 , tkinter,以及sqlite、pycharm这些编程所需要的软件了。
Do:获取回答
Check:检查
GPT’s 回复的内容非常多。
首先,按照我们提问的方针,从整体到局部,这次ChatGPT回复的内容全面而重要,都是我们所需要的,因此这一个 PDCA 循环中,我们先检查“第1步,设置项目结构”。
项目结构的划分对于每一个项目而言都非常重要,如果不太了解每个文件夹的含义, 可以开启多个 PDCA 循环,让 GPT‘s 逐渐帮我们解释每个文件夹及每个文件所承担的任务。
根据我个人经验,我认为可以保留项目结构,其中 db_manager.py 和 main_window.py 这两个文件是核心文件,应该需要首先创建出来,其余文件,按需进行创建。
其次,步骤3和步骤4,只是一个代码框架,并不是代码的内容,因此可以看出它没有给出正确答案,直接忽略。
然后,步骤5~步骤8,都是提示,简单过一遍,待电子书主要功能实现后,再进行优化。
这里需要注意的是步骤8,开发建议和学习资源,建议开发的同时进行测试,避免出现大量 Bug。
Action: 做处理
- 按照项目结构创建各个文件夹
- 创建 db_manager.py 和 main_window.py 文件
再举一个例子
Plan:设计问题
完成前两个步骤,让 GPT‘s 从第三个步骤给我们详细说明。
好的,前两步我都已经完成了,请从第3步开始,逐步告诉我代码和进行解释,目前我已经创建了database/db_manager.py文件
Do:获取回答
….. 后续流程不再赘述
常见问题及解决方法
- 回复代码不完整。GPT‘s 时常不会给出完整的代码,而只是告知修改部分的代码。解决办法是,结合上下文仔细阅读回答,如果不确定的时候,可以要求它发送包含之前的代码的完整代码,或者在代码编辑器中贴好后,发送完整代码给它确认。
- 忘记聊天记录内容。当对话超过一定回合的时候,尤其是多次修改 Bug 之后,GPT‘s 会“选择性忘记”之前的对话内容,导致发送过来的修改内容,与之前的代码不符。解决办法是使用类似“请按照目前最新的代码内容”,作为一段开启问题的前缀或后缀。或者请它给出完整的文件代码内容。
- 无法给出最新的完整的文件代码。这会带来大量的检查量。解决办法是,代码中每一段代码的注释,一定要保留下来,时刻清醒的知道它说的最新的替换代码应该放在哪里。
- 没有 import 某个类,就直接使用这个类库中的方法。十分常见,不过影响较小。
文件下载
有兴趣的小伙伴可以自行下载
[download id=’66’]
[download id=”69″]
– END –