搭建ChatGPT对话式小说

news/2024/11/15 8:33:10/

牙叔教程 简单易懂

你只需要写一个开头

剩下的交给ChatGPT

视频查看效果

两个ChatGPT互聊-写小说_哔哩哔哩_bilibili

这是一种ChatGPT的展现方式, 他把你主动问ChatGPT的这种方式,

改为了ChatGPT和ChatGPT聊天的方式


我们只需要写一个开头, 小说的后续部分, 完全都交给了ChatGPT,

算是某种程度上的 AutoGPT

AutoGPT

AutoGPT 是一个实验性的开源的主动的人工智能,它利用 GPT4 作为大脑,利用 langchain 的链接思想,把 Google 等工具链接起来,以完成人类给予的任务。

人类只需要给它设置一个目标,它就会自主规划出任务,并一步步地执行任务。

如果在执行任务中遇到问题,会自主地拆解子任务,并一步步地执行。

Github 项目地址,项目完全开源 GitHub - Significant-Gravitas/Auto-GPT: An experimental open-source attempt to make GPT-4 fully autonomous.

Auto-GPT is an experimental open-source application showcasing the capabilities of the GPT-4 language model. This program, driven by GPT-4, chains together LLM "thoughts", to autonomously achieve whatever goal you set. As one of the first examples of GPT-4 running fully autonomously, Auto-GPT pushes the boundaries of what is possible with AI.

我理解的AutoGPT是这样的:

  1. 你提出一个任务
  2. chatGPT拆解任务
  3. AutoGPT通过代码执行任务
  4. 出错了, 就把错误信息抛给chatgpt, 获取解决方案
  5. 用解决方案解决遇到的问题
  6. 重复以上, 直到任务完成

这里面最有价值的就是作者真的把chatgpt和程序结合起来, 并且写出来了,

完全没有了人工的限制, 不需要人类了, autoGPT自己就呼呼的干活了.

以上是给大家扩展chatggpt的知识, 接下来我们搭建这个qqGPT写小说


流程图

机器人框架

zhin

zhin - npm

关键代码

机器人监听QQ消息

ctx.middleware(async (session, next) => {let gptQuestion = session.elements[0].toString().trim();
...
});

可以从代码看到使用了插件

没错, 这个框架主要就是写插件

参数session里面包含了消息

  • user_id
  • user_name
  • group_id
  • gptQuestion
  • protocol
  • self_id
  • message_type
  • from_id

基本上你需要的数据, 都可以在session中获取


你不可能在Q群里面写小说, 所以一定是私聊

if (session.message_type === "private") {
...
}

根据消息类型, 如果是私聊, 巴拉巴拉巴拉

这还不够, 还要加判断, 不可能谁私聊你都给他发消息, 对吧?

所以还要加上号码限制

 if (customerIds.indexOf("" + session.user_id) !== -1) {...}

谁私聊我? 在不在我的白名单里面? 以上代码就是解决使用机器人的资格问题


消息收到以后, 我们通过chatgpt去获取小说的后续内容

async function chatgpt(question) {let url = "https://api.openai.com/v1/chat/completions";let headers = {"Content-Type": "application/json",Authorization: "Bearer " + config.secretKey,};let data = {model: "gpt-3.5-turbo",messages: [{ role: "user", content: question },{role: "system",content:`你是一个小说家, 想象力超越普通人一万倍, 擅长模仿"海贼王"作者尾田荣一郎(Eiichiro Oda) 的风格写小说,  你现在看到了海贼王最新一期漫画的中一部分文字内容, 现在请你续写小说 遵循以下原则:
1. 小说中的人物都要有名字, 人物的名字不能重复.
2. 小说中的人物使用的招式,武功, 装备, 魔法, 宠物, 恶魔果实, 等小说元素,  都要有名字, 不能重复.
3. 小说用中文写, 不能用英文.
3. 其他就靠你的想象力自由发挥了.
---------------------------------------
好了, 现在你可以在遵守以上原则的情况下, 续写小说了.
你每次回复时, 请不要超过66个字, 也不要超过2句话.`,},],temperature: 0.7,max_tokens: 1000,top_p: 1,frequency_penalty: 0,presence_penalty: 0,stream: false,};try {let res = await axios.post(url, data, {headers: headers,httpsAgent: agent, // 设置代理});return res.data.choices[0].message.content;} catch (e) {let errorMsg = e?.response?.data?.error?.message ? e.response.data.error.message : e.message;console.log(errorMsg);return "出错了: " + errorMsg;}
}

注意这里有两个用户

chatgpt的角色

  • user
  • system

user就是我们.

system就是你给chatgpt设置的角色

chatgpt字数限制

第一种

我是通过 截取新数据, 抛弃旧数据;

比如数据有5000个字, 我就裁掉2000个字, 然后再发给chatgpt;

这个策略基于如下假设:过于久远的对话不太重要,而距离当前时间更近的对话则更加重要。


第二种

你也可以用chatgpt把文章压缩: 比如让chatgpt把1000个字压缩成500个字, 也就是 文本摘要

然后提交压缩后的数据给chatgpt


第三种, 向量存储

把文本存到外部设备, 然后用一个向量, 也就是一串数字代替他,

然后把问题也变成向量, 看哪个向量接近, 就用哪个数据,

大概思路就这么回事, 具体可看知乎文章: 如何看本周最火的AutoGPT?

如何看本周最火的AutoGPT? - 知乎

提取chatgpt报错的消息

let errorMsg = e?.response?.data?.error?.message ? e.response.data.error.message : e.message;

如果只是写e.message, 他的报错信息几乎只是对你说404, 就没了.

e.response.data.error.message的消息, 更详细一些

接收到chatgpt返回的消息, 我们要把消息发送给qq

获取机器人

let bot = ctx.zhin.pickBot(protocol, self_id);

这两个参数是啥意思就不知道了, 我是直接赋值黏贴, 能用就行

第一个不知道, self_id应该是机器人的qq号

机器人发消息

bot.sendMsg(from_id, "private", answer);

from_id就是跟你聊天的用户的qq号,

answer就是chatgpt返回的内容


基本关键代码和思路就是这样,

然后就是重复这个过程,

一篇chatgpt对话式小说就诞生了


chatgpt写的小说

微信公众号 牙叔教程


http://www.ppmy.cn/news/949792.html

相关文章

99%的人还不懂怎么和ChatGPT对话(30万字ChatGPT手册)

关注公众号:人工智能学派 关于chatGPT相关的问题,都可以找我答疑解惑,相互交流学习,有问必应! 大家都知道ChatGPT是一个基于自然语言理解的模型,它总是试图根据对我们提出问题的理解来给出我们想听到的答…

教你快速导出 ChatGPT 对话数据!

距离 ChatGPT 上线已经过了半年,ChatGPT 已成为最有价值的工具,相信大家已经在使用 ChatGPT 高效地完成各项工作了。在 2023 年 4 月 25 日 OpenAI 开放了保存对话数据的功能,让我们在使用 ChatGPT 来进行创意写作或编码等工作时,…

ChatGPT对话聊天

工具说明 ChatGPT是人工智能技术驱动的自然语言处理工具,它能够通过理解和学习人类的语言来进行对话,还能根据聊天的上下文进行互动。 站内地址 本站提供ChatGPT聊天工具,能满足日常使用,但由于对接国外接口,中间经…

基于Chatbot UI 实现ChatGPT对话-V1.0

基于Chatbot UI 实现ChatGPT对话-V1.0 前端基于开源项目:chatbot-ui进行二次开发,感兴趣的小伙伴可以自行研究。 本项目搭建初衷:在无法科学上网的情况下,实现ChatGPT对话。还有规避官方聊天时,长时间无链接导致的问题…

chatgpt对话训练

ChatGPT,是一种基于预训练语言模型GPT的聊天机器人。在本教程中,我们将演示如何使用Python编写ChatGPT,并使用对话式数据集进行训练,使其能够回答一些简单的问题。 步骤 1: 安装必要的库 ChatGPT是基于PyTorch深度学习框架编写的…

4个公式8个案例学会与chatGPT对话

一、什么是Prompt? (1)Prompt的概念 我们在使用GPT的时候,给GPT发送的消息就是Prompt. 例如,当我们问ChatGPT"WPS是什么软件?"时: 其中,"WPS是什么软件?"这句话就是Prompt. (2)为什么要学习Prompt? Prompt是我们和GPT交流的方式,我们需要让GPT了解…

实训笔记7.19

实训笔记7.19 7.19一、座右铭二、Hadoop的HDFS分布式文件存储系统的相关原理性内容2.1 HDFS上传数据的流程2.2 HDFS下载数据的流程2.3 HDFS中NameNode和SecondaryNameNode工作机制(涉及到HDFS的元数据管理操作)2.4 HDFS中NameNode和DataNode的工作机制&a…

ChatGPT模型原理介绍:从语言建模到对话生成

随着深度学习技术的发展,语言模型也得到了长足的进步。其中,GPT系列模型一直受到广泛关注。GPT全称为Generative Pre-trained Transformer,是一种基于Transformer架构的预训练语言模型。ChatGPT则是在GPT系列的基础上进行了改进,专…