如何利用GPT’s,1 天之内打造你的个性化电子书库

阅读时长 19 分钟

挑战以 Python 入门级别的经验,借助AI的力量,完成个性化电子书库。

市面上电子书库管理工具

目前主流的电子书库管理工具有 Calibre、Koodo Reader 等,这些软件的优点在于功能完整,使用方便,但是也有各自的局限,比如:

  • 本地电子书导入形成书库后,电子书将被自动拷贝,硬盘占用空间将编程原来的两倍。
  • 大部分电子书阅读器偏重手机端,电脑上的电子书阅读器较少。

定制符合自己个性化需求的电子书库的难点

利用python或者其他熟悉的语言,想要快速定制一款适合自己个性化需求的电子书库,也并非快刀斩乱麻可以实现。对于编程小白的同学,情况可能更为复杂,先不说学习编程语言所花费的时间,即便光是研发、调试、修改的时间,没2~3周估计完不成。像顺水老师这种上班族,更加没有整块的时间用于代码编码,所花费的时间会更长。

AI时代下,如何将打造效率提升10倍?

条条道路通罗马,找到最快那一条。

先看顺水老师花费一天(8小时)时间完成的效果。

电子书管理系统.gif

怎么做

以下几点是关键:

  • 找到帮手
  • 厘清需求
  • 用对方法

找到帮手:GPT’s

使用 OpenAI 的 GPT’s 这个强大的工具,至于如何创建 GPT‘s 这个工具,几个步骤就可以完成,介绍的文章有很多。

国内的文心一言,星火大模型是否也可以呢?关于这部分请查看顺水老师的另外一篇文章,专门针对这部分内容进行讨论,此处不再赘述。

明确分工:我和AI各自做什么

按照项目管理的思路,首先得有骨干团队以及明确团队分工。这次,我和 GPT’s 组成一个小的研发团队。首先明确彼此的分工。

GPT’s 的角色:骨干软件工程师,UI设计师
我的角色:需求人员,新人程序员,半个产品经理,项目经理,测试人员

为什么是半个产品经理,后文中会提及,结合具体实例,体验会更深。

厘清需求:确定需求优先级

罗马不是一天建成的,微信也一样。

对需要的功能进行梳理,优先级高的功能先做,优先级低的后做。
必需的功能先做,优化功能后做。
按照这个思路,整理电子书项目的功能优先级一览表。

image.png

用对方法:找到推进方法

我们使用 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上部署和运行。

同时它给出了一个简单的代码框架

image.png

此时我们就知道了整个项目的推进流程。

Do: 获取回答。

这里比较简单,就像和人一起交流一样,提出问题,他就会回答。

Check:如何做检查

梳理得到的回答,得到有价值的信息,忽略无效的信息。

这里还是以回答1为例,GPT‘s 给出了项目的推进流程和项目框架代码,从这些信息中,梳理出对我们有价值的信息:

  1. 整个项目的推进流程,这很重要,但是我们要在这个基础上进行优化,具体怎么优化,这就是下一步 Action 的内容。
  2. 一个简单的框架代码。但这是无效信息,因为按照整个项目推进的流程,目前我们还处于环境准备和技术选型阶段,并不是“设计应用结构”或者“编码”阶段,因此,虽然他给出这段代码,但对于还没有掌握到足够的信息,就给出的回答,对我们来说是无用的。

另外,我们的角色是产品经理,我们希望的是 GPT‘s 顺着我们的思路来推进项目,由我们这个产品经理来主导项目推进的节奏。

Action:如何做处理

就是将有用的价值的信息沉淀,变成项目的一个组成部分,并记录结果,开启下一个循环。

以上一个步骤得到的检查结果为例,重点梳理流程部分,我和 GPT‘s 已经有了分工,“设计应用结构”或者“编码”都应该主要是骨干软件工程师的事情,这部分是由 GPT‘s 来完成的,所以这部分我合并成一个“设计及编码”过程,我来辅助“骨干软件工程师”,设计的总体思路可以由我来出,但是具体细节交给“软件工程师”,我们并不希望连一个按钮摆在哪里的这种基础问题,一开始都由我们来思考(为何是半个产品经理)。

最后我们得到最终的项目流程是:

  1. 环境准备和技术选型( GPT‘s ->我)
  2. 需求分析(我-> GPT‘s)
  3. 设计及编码(GPT‘s)
  4. 测试和优化(我)
  5. 打包及部署( GPT‘s ->我)

举一个例子

由于流程过程很长,整个对话过程不在文章中展示,第一和第二个步骤相对也较为简单,开启多轮 PDCA 循环 ,将需求告诉 GPT‘s,再根据 GPT‘s 的回答,筛选出其中正确的信息并告知GPT保留这些信息,再询问 GPT‘s 如何按步骤安装编程环境即可。文本重点对第三部分“设计及编码”,也就是整个项目的核心进行举例。

这时我们已经完成了需求分析和环境搭建。

Plan:设计问题。

此时提出的问题,也不是告诉我代码怎么写,而是接下来我需要干什么。

问题n:

好的,需求差不多就是这些,请告诉我接下来应该怎么做,我的电脑上已经安装了python3.9 , tkinter,以及sqlite、pycharm这些编程所需要的软件了。

Do:获取回答

image.png
image.png
image.png
image.png
image.png

Check:检查

GPT’s 回复的内容非常多。

首先,按照我们提问的方针,从整体到局部,这次ChatGPT回复的内容全面而重要,都是我们所需要的,因此这一个 PDCA 循环中,我们先检查“第1步,设置项目结构”。

项目结构的划分对于每一个项目而言都非常重要,如果不太了解每个文件夹的含义, 可以开启多个 PDCA 循环,让 GPT‘s 逐渐帮我们解释每个文件夹及每个文件所承担的任务。

根据我个人经验,我认为可以保留项目结构,其中 db_manager.py 和 main_window.py 这两个文件是核心文件,应该需要首先创建出来,其余文件,按需进行创建。

其次,步骤3和步骤4,只是一个代码框架,并不是代码的内容,因此可以看出它没有给出正确答案,直接忽略。

然后,步骤5~步骤8,都是提示,简单过一遍,待电子书主要功能实现后,再进行优化。
这里需要注意的是步骤8,开发建议和学习资源,建议开发的同时进行测试,避免出现大量 Bug。

Action: 做处理

  1. 按照项目结构创建各个文件夹
  2. 创建 db_manager.py 和 main_window.py 文件

再举一个例子

Plan:设计问题

完成前两个步骤,让 GPT‘s 从第三个步骤给我们详细说明。

好的,前两步我都已经完成了,请从第3步开始,逐步告诉我代码和进行解释,目前我已经创建了database/db_manager.py文件

Do:获取回答

image.png

….. 后续流程不再赘述

常见问题及解决方法

  1. 回复代码不完整。GPT‘s 时常不会给出完整的代码,而只是告知修改部分的代码。解决办法是,结合上下文仔细阅读回答,如果不确定的时候,可以要求它发送包含之前的代码的完整代码,或者在代码编辑器中贴好后,发送完整代码给它确认。
    image.png
  2. 忘记聊天记录内容。当对话超过一定回合的时候,尤其是多次修改 Bug 之后,GPT‘s 会“选择性忘记”之前的对话内容,导致发送过来的修改内容,与之前的代码不符。解决办法是使用类似“请按照目前最新的代码内容”,作为一段开启问题的前缀或后缀。或者请它给出完整的文件代码内容。
  3. 无法给出最新的完整的文件代码。这会带来大量的检查量。解决办法是,代码中每一段代码的注释,一定要保留下来,时刻清醒的知道它说的最新的替换代码应该放在哪里。
    image.png
  4. 没有 import 某个类,就直接使用这个类库中的方法。十分常见,不过影响较小。

文件下载

有兴趣的小伙伴可以自行下载

[download id=’66’]

[download id=”69″]

– END –