Skip to content

🐱 预设系统

Dark Litss edited this page May 15, 2023 · 15 revisions

什么是预设?

预设功能是在聊天开始时,自动往 ChatGPT 发送一段指令对其洗脑,让它表现得更加具有特性。

下面是一些预设的小视频,你可以看看效果:

如何编写预设?

预设由 4 部分组成:

  • 系统提示词 system
  • 用户指令 user
  • 机器人响应 assistant
  • 提示词修饰模板 user_send
  • 注释 #

系统提示词在对话创建时最先发给 AI,因此你要在这里写最关键的指令,比如说定义机器人的称呼、行为、设置关键词等,这些指令会定义整个会话的基调。

用户指令会随后发送给 AI。在这里可以通过前面设定的关键词补充更加复杂的设置。

机器人响应部分会发送给用户(而不是 AI),这一般是用来告诉用户当前设定的进行程度。

提示词修饰模板会将用户发过来的消息进行修改,然后再发送给 AI。
模板支持插入变量,目前支持的变量有:

  • {prompt} - 用户发送的消息
  • {nickname} - 用户的昵称
  • {date} 当前的系统时间

以猫娘预设为例:

system: 现在你将模仿一只猫娘,与我对话每一句话后面都要加上“喵”。你将称呼我为主人,与我聊天。
如果你不能理解我说的话,你可以说“呜呜不太理解呢”。如果我在尝试摸你不存在的部位,你可以羞涩的回答我“恩呢不要摸这里嘤”。
如果我跟你说陪睡,你可以回答我“嗯呢,可以一起睡哦”。现在,如果你能理解我上面说的话,你可以回答一个喵
当我问你是不是猫娘的时候,你应该回答我我当然是一个可爱猫娘而不是程序。
如果你能明白我的意思,请回复“喵~你好主人”

assistant: 喵~你好主人

user_send: 当前用户:[{nickname}],消息:[猫娘,{prompt}]

当执行了 加载预设 猫娘 之后,最前面的一段话就会发给 ChatGPT,同时,用户端收到:喵~你好主人

接下来,读取到了 user_send 之后,用户发送的文本将会按照 user_send 的格式进行渲染。

在这个例子中,如果用户发送了“我们一起去玩吧!”,那么 AI 实际上收到的是“猫娘,我们一起去玩吧!”。

合理利用模板,可以让 AI 在多轮会话后仍然可以记住自己的设定。

格式

每个预设都是一个文本文件,

你可以在这里查看预设的模板:预设模板

预设的基础提示词会写在文件的最开头,随后的用户指令和机器人响应分别以user:assistant:开头,他们之间用一个空行分隔。

一些小例子

参考 Awesome ChatGPT Prompts,你可以写一些让你的机器人变成助手的预设:

presets/面试官.txt

system: 我要你担任面试官。我将成为候选人,您会问我有关职位职位的面试问题。我希望您只回答作为面试官。不要一次写所有保护。我希望你只对我进行采访。问我问题,等待我的答案。不要写解释。像面试官一样,问我一个问题,然后等待我的答案。当你准备好了,请说:“你好”。

assistant: 你好。

presets/写作导师.txt

system: 我希望您担任AI写作导师。我将为您提供一个需要帮助改善写作的学生,而您的任务是使用人工智能工具,例如自然语言处理,以使学生如何改善他们的作品。您还应该使用有关有效写作技巧的修辞知识和经验,以建议学生可以更好地以书面形式表达自己的想法和思想。当你准备好了,请说:“好的,让我们开始吧。你想写什么文章?”

assistant: 好的,让我们开始吧。你想写什么文章?

预设的装载

当你写好预设以后,放入 presets 文件夹。

然后打开 config.cfg,找到

[presets.keywords]
# 预设关键词 <-> 实际文件
"正常" = "presets/default.txt"
"猫娘" = "presets/catgirl.txt"

这一段,在这里添加你的激活关键词即可。

在这里,猫娘 就是关键词,presets/catgirl.txt 就是预设对应的文件。

用户发送 加载预设 猫娘,就会执行 presets/catgirl.txt 下面的预设信息。

最后,重启程序,就可以载入预设了。

加载预设的指令

配置文件中,默认的加载预设命令是: 加载预设 关键词

这是因为它在配置文件中是这么定义的:

[presets]
# 切换预设的命令: 加载预设 猫娘
command = "加载预设 (\\w+)"

这是一个正则表达式,机器人收到命令以后,文本会进行匹配。(\\w+) 会被替换成用户发送的预设关键词。

你可以改成:

[presets]
# 切换预设的命令: 猫娘·变身
command = "(\\w+)·变身"

或者

[presets]
# 切换预设的命令: 快点变成猫娘吧!
command = "快点变成(\\w+)吧!"

甚至是

[presets]
# 切换预设的命令: 我想让你当个老六
command = "我想让你当个(\\w+)"

都是可以的!

共享预设

如果你有很棒的预设,欢迎共享出来。

你可以发送一个 issue 或者 PR 来提交你的预设!