gpt-story-genius:基于GPT-4和Claude 2构建一款AI自动创作小说APP

技术

picture.image点击上方蓝字关注我们

一、前言

前面我们介绍过一款AI自动创作小说的工具 gpt-author v2

,根据用户提供的初始提示和章节数几分钟内就可以生成一整本奇幻小说,该项目利用 GPT-4Stable Diffusion APIAnthropic API 等一系列大模型组合来生成原创奇幻小说。此外,它还可以根据这本书创建一个 原创封面 ,并将整本作品一次性转换为PDF或电子书格式, 并且制作成本低廉,制作一本15章的小说仅需4美元成本,并且该工具是开源的,可以免费使用

因为只能在Google Colab中进行体验,所以简单的基于 Gradio 写了一个WebUI界面( gpt-story-genius ),通过可视化的方式来利用GPT模型创作小说,目前只是一个雏形,离成熟的产品肯定还有一定的差距,后面抽空会逐步来进行完善,大家可以在HuggingFace上部署或者本地部署体验,建议使用GPT-4 + Claude 2 结合的方式生成的小说效果会更好,GPT-3.5 如果是临时账号会存在每分钟限制3次请求的接口限制,加之token本身的限制,使用效果没有那么好。

大家在使用过程中有遇到问题或者更好的建议可以提issue,我对这个小工具也有个大概的思路后续会分享出来,先来看看效果。

picture.image

二、快速体验

部署完成后,我们可以在浏览器中访问 8000 端口,即可进入项目主页,如下:

  • 在左侧输入小说的提示词、小说章节生成数量、AI写作风格、选择GPT模型。
  • 右侧在小说创作完成后会展示小说的封面图片和小说的epub电子文档,可以下载浏览。

picture.image

点击提交后,开始进行AI小说的创作过程,整个过程需要一点时间,请耐心等待,主要取决于你生成的章节数量和你的网络。创作完成后的效果如下图所示:

picture.image

以下就是通过 STABILITY AI 生成的小说封面图片效果:

picture.image

将小说的epub电子文档下载后,打开预览效果如下图所示:

picture.image

picture.image

三、本地部署

首先需要下载项目代码


      
          

        
            **git clone https://github.com/Crossme0809/gpt-story-genius.git** 
        
      
    

复制项目默认配置文件


      
          

        
            **cp .env.example .env** 
        
      
    

修改配置参数,配置GPT Key,如果本地无法直接访问OpenAI接口,可以配置代理地址访问。如果没有Claude API,可以选择GPT-4来创作。


      
 
 
      
          
  
# OpenAI 接口代理地址,(可选配置)OPENAI_API_BASE="your-openai-proxy-url"# * 配置你的 OpenAI key(建议使用GPT-4正式账号,临时账号有每分钟3次请求限制)OPENAI_API_KEY="your-openai-api-key"# * 生成小说封面,具体可访问 https://platform.stability.ai/ 地址申请keySTABILITY_API_KEY="your-stablity-api-key"# 配置你的 Claude2 API Key(可选配置)ANTHROPIC_API_KEY="your-anthropic-api-key"
      
      
 
 
    

安装项目依赖


      
          

        
            **pip install -r requirements.txt** 
        
      
    

启动项目


      
          

        
            **gradio run.py** 
        
      
    

后台进程启动


      
          

        
            **nohup gradio run.py > log.txt 2>&1 &** 
        
      
    

启动成功后,访问8000端口即可打开 StoryGenius 项目主页,如需要修改端口,只需要编辑 run.py 最后一行中的 server_port 即可。


      
          

          **iface.launch(server\_name="0.0.0.0", server\_port=8000)** 
      
    

访问项目主页后,我们只需要输入创作小说所需提示词和写作风格,以及小说章节数,选择GPT模型,点击提交按钮即可开始进行小说创作,这个创作过程可能需要几分钟的时候请耐心等待,确保访问OpenAI网络稳定,如果只是简单体验可以用GPT-3.5,正式创作建议还是使用GPT-4模型。

picture.image

点击提交后,后台会打印以下的日志信息,按一本小说的步骤逐步去完成从简单的提示词到构造故事情节,然后筛选质量更高的故事情节,继续进行优化,开始构建小说标题,继续生成每一章节的标题和简介,然后开始对每一章节的内容进行创作,最后根据故事情节生成小说的封面和小说的epub电子文档。

(对于小说创作过程下个版本会整合到UI中,方便及时了解创作过程,以及及时了解可能出现的错误)


      
          

          **Step Cost (OpenAI): 0.0017375  
generated plots  
  
Step Cost (OpenAI): 0.002355  
selected best plot  
  
Step Cost (OpenAI): 0.0019385  
plot improved  
  
Step Cost (OpenAI): 0.0009780000000000001  
title generated  
【title】: 这本书的标题是:“照亮海岛”  
  
Generating storyline with chapters and high-level details...  
Step Cost (OpenAI): 0.0029905  
Step Cost (OpenAI): 0.0034609999999999997  
storyline generated  
【storyline】: [  
    {  
        "章节1 - 天使之港": "安琪(Ava)意外来到了天使之港,这并不只是个巧合。她不知道自己拥有与岛上古老护卫者相关的隐藏血统。这个发现为安琪的角色增添了深度,也增加了赌注,她必须面对自己的身份和保护岛屿的责任。"  
    },  
    {  
        "章节2 - 黑暗倒计时": "当安琪探索岛上的神秘之处时,她揭开了转变之谜的倒计时。岛屿及其居民正逐渐被黑暗所吞噬,安琪意识到时间有限,她必须寻找解决办法。这种紧迫感增加了悬疑气氛,对安琪和她的伙伴来说赌注更高,他们决心揭开灯塔的秘密。"  
    },  
    {  
        "章节3 - 多维伙伴关系": "虽然安琪是主角,但当她遇到其他与岛屿有缘的人时,她的旅程变得更具影响力。每位伙伴都拥有独特的技能和才能,与安琪的能力相辅相成。通过强调他们的个人动机和背景故事,整个团队变得丰满和多样化,形成动态的关系和联盟。"  
    },  
    {  
        "章节4 - 构建奇幻世界": "随着安琪和伙伴们穿越危险的地形和隐藏的领域,提供生动的描述让岛屿生动起来。包括神秘生物和迷人景色,它们在身体和心理上都对角色构成挑战。此外,探索岛屿的历史和灯塔力量的后果,进一步增加了世界构建的深度,让读者完全沉浸于故事之中。"  
    },  
    {  
        "章节5 - 道德困境与牺牲": "为了增加情感深度,引入了道德困境,需要角色做出艰难的选择。当他们揭示古老的秘密,面对邪恶的实体,并与黑暗势力对抗时,他们必须面对内心的恐惧,并决定为了更大的利益愿意牺牲什么。这些牺牲和自我反思的时刻增加了故事的情感冲击力。"  
    },  
    {  
        "章节6 - 意外转折": "通过引入意想不到的转折,让读者保持关注和兴奋。这些意外可能涉及到角色真实的忠诚,令人震惊的背叛,或者质疑绝对善恶存在的真相。这些转折挑战了角色的信念,并给叙事增加了复杂性。"  
    }  
]  
  
  
【chapter\_titles】: [{'章节1 - 天使之港': '安琪(Ava)意外来到了天使之港,这并不只是个巧合。她不知道自己拥有与岛上古老护卫者相关的隐藏血统。这个发现为安琪的角色增添了深度,也增加了赌注,她必须面对自己的身份和保护岛屿的责任。'}, {'章节2 - 黑暗倒计时': '当安琪探索岛上的神秘之处时,她揭开了转变之谜的倒计时。岛屿及其居民正逐渐被黑暗所吞噬,安琪意识到时间有限,她必须寻找解决办法。这种紧迫感增加了悬疑气氛,对安琪和她的伙伴来说赌注更高,他们决心揭开灯塔的秘密。'}, {'章节3 - 多维伙伴关系': '虽然安琪是主角,但当她遇到其他与岛屿有缘的人时,她的旅程变得更具影响力。每位伙伴都拥有独特的技能和才能,与安琪的能力相辅相成。通过强调他们的个人动机和背景故事,整个团队变得丰满和多样化,形成动态的关系和联盟。'}, {'章节4 - 构建奇幻世界': '随着安琪和伙伴们穿越危险的地形和隐藏的领域,提供生动的描述让岛屿生动起来。包括神秘生物和迷人景色,它们在身体和心理上都对角色构成挑战。此外,探索岛屿的历史和灯塔力量的后果,进一步增加了世界构建的深度,让读者完全沉浸于故事之中。'}, {'章节5 - 道德困境与牺牲': '为了增加情感深度,引入了道德困境,需要角色做出艰难的选择。当他们揭示古老的秘密,面对邪恶的实体,并与黑暗势力对抗时,他们必须面对内心的恐惧,并决定为了更大的利益愿意牺牲什么。这些牺牲和自我反思的时刻增加了故事的情感冲击力。'}, {'章节6 - 意外转折': '通过引入意想不到的转折,让读者保持关注和兴奋。这些意外可能涉及到角色真实的忠诚,令人震惊的背叛,或者质疑绝对善恶存在的真相。这些转折挑战了角色的信念,并给叙事增加了复杂性。'}]  
  
Step Cost (OpenAI): 0.0039264999999999994  
Step Cost (OpenAI): 0.0039264999999999994  
first chapter written  
  
Image URL: ./cover/cover\_0.png  
Novel URL: ./epub/这本书的标题是:“照亮海岛”.epub  
{'image\_url': './cover/cover\_0.png', 'file\_url': './epub/这本书的标题是:“照亮海岛”.epub'}** 
      
    

picture.image

四、HF 部署

Hugging Face 给普通用户提供了一个 2 vCPU 16GB 的免费空间,并且支持部署 Gradio 构建的应用程序,非常方便,下面我们进入 https://huggingface.co/spaces/ ,点击创建空间。

picture.image

这里输入你要创建的空间名称,选择License类型,以及应用SDK部署方式,最后选择空间的部署硬件配置即可创建完成。

picture.image

创建完Space空间后,根据页面提供的项目git地址,先把空的项目克隆到本地,然后将 gpt-story-genius 项目的文件复制到这个空项目中,并将启动文件 run.py 修改为 app.py。Hugging face默认识别app.py来构建项目。


      
          

        
            **# 注意这里换成你自己的hf项目地址  
git clone https://huggingface.co/spaces/crossme/gpt-story-genius** 
        
      
    

在项目根目录执行以下git命令上传代码到hugging face的代码空间


      
          

        
            **git add .  
  
# 首次提交需要设置hugging face的邮箱和用户名  
git config --global user.email "you@example.com"  
git config --global user.name "Your Name"  
  
# 提交代码  
git commit -m "add gpt-story-genius file"  
  
# 推送到 hugging face代码空间,push的时候需要输入 hugging face的账号和密码  
git push** 
        
      
    

代码提交完成后,在Hugging Face的空间可以看到项目代码结构如下所示。(注意:因为Hugging Face上部署的应用没有直接创建文件目录的权限,生成的小说封面cover和电子文档epub目录需要提前创建好)

picture.image

在运行应用之前,需要修改一下 app.py 文件。删除 launch 方法中设置的 server_name 和 server_port。点击App选项卡即可访问应用。


      
          

        
            **iface = gr.Interface(fn=generate\_output, inputs=inputs, outputs=outputs, title=title, description=description)  
iface.launch()  
#iface.launch(server\_name="0.0.0.0", server\_port=8000)** 
        
      
    

picture.image

picture.image

五、项目地址

  • gpt-story-genius

https://github.com/Crossme0809/gpt-story-genius

  • gpt-author v2

https://github.com/mshumer/gpt-author

picture.image

如果你对这篇文章感兴趣,而且你想要了解更多关于AI 领域的实战技巧,可以

关注「技术狂潮AI」公众号

。在这里,你可以看到最新最热的AIGC 领域的干货文章和案例实战教程。

0
0
0
0
关于作者
关于作者

文章

0

获赞

0

收藏

0

相关资源
抖音连麦音画质体验提升与进阶实践
随着互娱场景实时互动创新玩法层出不穷,业务伙伴对 RTC「体验」和「稳定」的要求越来越高。火山引擎 RTC 经历了抖音 6 亿 DAU 的严苛验证和打磨,在架构设计、音画质提升、高可靠服务等方面沉淀了丰富的经验,本次演讲将和大家分享火山引擎 RTC 在直播连麦等场景中的技术优化及其带来的新玩法。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论