/GPT-reader

【GPT-reader】让GPT帮你读小说吧!

Primary LanguagePython

【GPT-reader】让GPT帮你读小说吧!

大家知道这样1句话吗,「书是能使兽变成人,使人变成神的东西」。

可是我读了这么多轻小说,怎么没有变成神?说不定我本来就不是人……错了,说不定是我读的书不够多!

但是书上的字太多了,读起来很费劲,这样慢慢地读,要读到什么时候才会变成神啊……

于是我就想,啊,那干脆让GPT来帮我读好了!

使用效果

把小说下载回来给GPT看,GPT读完之后,会帮你把小说总结到原本1/10的长度,然后你再看。

这样1来,看1句就等于看原来的10句,就可以轻松地把小说读完啦!

我把《游戏人生》的第1卷给GPT看了以后,它总结出来了这些内容:

这是一个关于一个名叫"空白"的神秘玩家的谣言。据说他在超过280种游戏中创下了无法打破的纪录,但没有人知道他的真实身份。他的对手们无法预测他的打法,甚至连国际西洋棋大师也无法战胜他。尽管有人调查他的战绩,但仍无法揭开他的真面目。这个谣言逐渐演变成了都市传说,关于他的身份和能力也有了各种各样的猜测。

这段剧情描述了一个名叫空和白的兄妹沉迷于网络游戏的生活。他们在一个杂乱的房间里,整天玩游戏,忽略了学业和工作。空是一个18岁的游戏废人,而白是一个11岁的游戏废人。他们之间几乎没有对话,只是互相帮助复活角色。他们的真实身份成为了一个都市传说,而这个传说又与游戏玩家收到一封神秘邮件有关。

兄妹俩在第五天的不眠不休中,收到了一封神秘邮件。邮件的主题是致"空与白",内容让他们感到不寻常。邮件中提到他们是否感觉自己生错了世界,并附有一个不寻常的URL。兄妹俩对此感到困惑,不知道该如何处理。妹妹对邮件似乎不太感兴趣,但她也觉得这个内容很奇怪,否则她早就回去玩游戏了。

兄妹俩点击了神秘邮件中的链接,进入了一个简单的西洋棋游戏。起初,哥哥空下棋,妹妹白则无兴趣地观看。然而,当白接手下棋后,她突然变得专注起来。白声称自己能预测数百亿种棋局变化,并以此连胜二十次。哥哥注意到对手的棋路有问题,指出对方故意走坏步来引诱白犯错。他鼓励妹妹保持冷静,并承诺指出对手的陷阱和战术。他们开始了一场长达六小时的激烈对弈,最终分出胜负。

兄妹俩在激烈的对弈后取得了胜利。他们感到非常兴奋,但随后收到了一封神秘邮件。邮件中询问他们是否觉得自己在这个世界活得很痛苦,并称他们的世界是一个烂游戏。兄妹俩感到愤怒和沮丧,他们觉得自己被排挤和不理解。他们决定回复邮件表达不满。然而,他们收到的回复并没有解答他们的问题,只是再次强调了他们的世界是一个无聊的游戏。兄妹俩感到更加沮丧,但他们决定继续面对这个世界。

兄妹俩被神秘邮件拉入了一个名为【棋盘上的世界·迪司博德】的理想国度。他们发现自己正在高空跳伞,即将坠落到这个由游戏决定一切的世界中。一个自称为神的少年欢迎他们,并解释了这个世界的特点。兄妹俩感到困惑和恐惧,但他们现在需要决定下一步该怎么办。

看起来效果还不错!

下面还比较长我就不放啦,大家可以自己到这里看完整的输出。

使用方法

你需要准备这些:

  • 1个Python3
  • 1个openai的帐号
  • 1本txt格式的小说

首先把这个仓库clone回去,然后pip install -r requirements.txt

接下来打开read.py,把openai.api_key替换成你的key,再把小说文件路径替换成你的小说,然后直接运行就可以啦。

原理

原理其实很简单,由于GPT3.5 1次只能处理4096个token,因此我把小说按照行进行切分成块,让每块的大小都尽可能不超过2000个字符,然后让GPT每次对这1块进行总结,最后把每块的总结都汇总起来就可以了。

只是这样的话,GPT缺少上文信息,容易出现剧情不通顺的情况。因此还需要对prompt做一些改造。

我把之前的块中已总结的剧情存了下来,做成1个滑动窗口,窗口总字数不超过1500,再把这个窗口的文本加入system prompt,为GPT提供上文,这样1来生成的故事情节就比较连贯了。

嗯,就是这样,非常简单吧!

还有我突然想到1个笑话

大家平时会把显示文本的软件叫做「阅读器」吗?

其实不对,因为是人在阅读,所以那个软件是显示文本器,人才是阅读器!

结束

就这样,大家88,我要回去把猫变成人了!