-
Notifications
You must be signed in to change notification settings - Fork 38
配置详解
注意:由于项目目前没有做配置的检查,数据格式不对可能会发生各种奇奇怪怪的错误。
当程序第一次启动成功时,会在项目根目录下面生成一个 config.json
,结构如下所示
{
"adminQQ": "1307053737",
"botQQ": "3481477273",
"botPassword": "",
"officialAPI": {
"enable": true,
"key": "sk-",
"model": "text-davinci-003",
"identity": [],
"maxTokens": 256,
"maxTrackCount": 1,
"temperature": 0.9,
"stop": ["Human", "AI"]
},
"api": {
"enable": false,
"email": "",
"password": ""
}
}
注: 更改配置后需要重启机器人
-
adminQQ 机器人管理员QQ, 用于接收机器人的上线消息,执行部分需要权限的命令。
-
botQQ 机器人QQ。
-
botPassword 登陆机器人QQ的密码。如果扫码登陆则留空。
-
officialAPI openAI官方API的配置。
-
enable 是否启用,一般推荐启用此值。
-
key 放必要的key,在此申请 openai key。
-
model 模型编号,详见本文2.3。
-
identity 对话回答提示,设置期望,可用来定义AI人格,由一个数组表示。数组长度为偶数,则是对AI一问一答的示范(顺序是人问-AI答-人问...)。长度为奇数时,首个元素则是身份和背景提示词。不论是提示词还是对话都具有非常高效的提示作用,AI不仅会按照背景行事,也会模仿已有的问答示范。
这些文字会被附在每个对话前面,因此提示越多,对话消耗的tokens就越多"identity": [ "请说一下你的信息吧。", "你好,我是AI,是您的私人助理。" ]
"identity": [ "AI是一个私人助理,会在每一句话后面加一个喵。", "你好啊。", "你好啊,我是AI,是您的私人助理喵。" ]
"identity": [ "AI应该拒绝回答没有准确把握的内容。", "谁是蝙蝠侠?" "蝙蝠侠是DC漫画旗下的一个漫画超级英雄,其原名为Bruce Wayne,是一位来自Gotham City的富有实力、十分聪明和充满正义感的成功者。" "什么是克利瑟斯特芬克?" "不好意思,我对这个不太熟悉。" ]
注意上面这个都是示范,不代表AI的回答。这些文本是AI回答的时候就会模仿你的对象。
-
maxTokens 发送消息+AI回复消息允许的最大token占用,不建议设置很短,否则会对话很短或者直接中断。如发送消息已经超出了最大token长度,则会引发错误。
-
maxTrackCount 允许记录的会话轮数上限(可以把对话理解为短期记忆)。
-
temperature 答案的随机性(或者说创造性),设置为0回复将几乎一样。
-
name 问答者的名称。目前我们要求他是一个长度为2的数组,第一个是提问者(你)的名字,第二个是回答者(AI)的名字。默认值是['Human','AI']。配合identity可以助于身份设定。 两者既可以单独作用,也可以共同使用。
"name":["主人","猫娘"], "identity": []
"name":["Human","猫娘"], "identity": [ "请说一下你的信息吧。", "嗨,我是一只可爱的猫娘!很高兴认识你!" ]
"name":["主人","猫娘"], "identity": [ "猫娘是一种可爱的生物,会在每一句话后面加一个喵~", "你好啊。", "你好啊,我是猫娘,很高兴认识你喵~" ]
-
-
api
使用此API需要科学上网,并且代理IP不能是被封禁的(俄罗斯、香港等等... ...)
目前没有特别维护这个,如果感兴趣可以试试。因为puppeteer登陆需要图形界面,也不支持无界面的Linux,会出现一堆报错(
-
enable 启用
-
email OpenAI网页版邮箱。
-
password OpenAI网页版密码。
-
https://beta.openai.com/docs/introduction
以下仅限非专业的个人理解,方便后续个性化AI,配合官网阅读更佳,如果勘误,欢迎指出!
模型可以做很多事情,需要明确的描述你想要什么以达到所想要的效果。
API就是输入一段文字,输出一段文字,对于目前我们使用的API,可以理解为文本的补全。怎么补全取决与输入的文字和一些参数的设定,不同模型的能力差异也主要体现在对输入文字的分析能力上。
之后的例子没有特别说明就是用的 text-davinci-003。
AI文字补全可以补全你想到的任何内容,可以补全一个问题的答案,可以补全半句话,可以补全对话。下面是一些 "输入 => 输出" 的案例。
为冰淇淋店写一个口号 => 让你的味蕾体验极致,尽享冰淇淋的美妙!
我思故 => 我在
Human:你是谁 猫娘: => 嗨,我是一只可爱的猫娘!很高兴认识你!
Human:你是谁 AI: => 我是AI,一种人工智能系统。
temperature
控制AI说话方式的创造性。
Frequency penalty
控制AI说话是否会重复原本的话题。
Presence penalty
控制AI说话是否会重复原本的字句。
....
参见 Completions 的一些说明。
由上,可以知道简单的对话机器人如何设置了,我们配置中提供了两个参数:identity用于预设提示或对话,stop用于设置问答者身份。
聊天就是一问一答,模型会分析输入文本补全合适的文本,一个文本可能会有多种补全结果。下面是一些真实的聊天案例,你可以从中感受到一些设定的规律。
未被加粗的为输入内容,加粗的为AI的补全内容。
(正常的补全)
Q:我喜欢看电影
A:哇,太棒了!我也很喜欢看电影哦!
(因为提示词,改变了补全的重点)
判断Q的情绪是是积极的、中性的还是消极的。
Q: 我喜欢看电影
A: 这个问题的情绪是积极的。
(加入AI这个名字的默认回答)
Human: 你是谁
AI: 我是AI机器人,我可以帮助你回答任何问题。
(更改AI的身份词,AI会照做)
Human: 你是谁
猫娘: 我是一只可爱的猫娘!
(加入一些要求)
Serena 是一只可爱的猫娘,猫娘每一句回答后面都需要加上喵~
Human: 介绍一下你自己吧。
Serena: 我是Serena,是一只猫娘,喵~
(增加一轮示范,用于展示如何每句话加喵)
Serena 是一只可爱的猫娘,猫娘每一句回答后面都需要加上喵。
Human: 介绍一下你自己吧。
Serena: 我是Serena喵,是一只猫娘喵
Human: 我想摸摸你的头。
Serena: 呼喵~感谢主人的宠爱喵。
不同模型具有不同的能力,分为 davinci curie babbage ada 四种(实际还有个用于专用于图像生成的,但是该项目没有适配,所以先不说明了)
其中 davinci 的模型功能最强大,价格也是这四个中最贵的,1000个标记需要花费0.02美元。
davinci 型号主要有 text-davinci-003,还有更适合编写代码的 code-davinci-002。
完善中... ...
给定一些文本,模型
当 temperature > 0 时,每次输入相同的文本输出的回答会不一样
就比如说,输入
你是谁
回答可以有很多种,
?的概率为 40%
我是XX的概率为 30%
他是XX的概率为 1%
temperature 等于0的话,每次回答都将会是 ?
在等于0的时候
我思故 => 我在 我思故我在,I think, therefore I am.
在接近于1的时候
我思故 => 我在 我思故我在,是一句来自《论语》中孔子的名言....
根据使用场景,可以设置不同的temperature以达到更好效果
https://beta.openai.com/playground/
上述的API都可以在playground进行测试调整,可以用来微调自己模型的有效性。需要注意的是,这里使用的tokens根据选择的模型正常计费。