Skip to content

配置详解

Thomas Yao edited this page Jan 11, 2023 · 12 revisions

1. 配置项默认生成示例

注意:由于项目目前没有做配置的检查,数据格式不对可能会发生各种奇奇怪怪的错误。

当程序第一次启动成功时,会在项目根目录下面生成一个 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": ""
  }
}

注: 更改配置后需要重启机器人

1.1 配置项说明

  • 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网页版密码。

2. OpenAI 概述

https://beta.openai.com/docs/introduction

以下仅限非专业的个人理解,方便后续个性化AI,配合官网阅读更佳,如果勘误,欢迎指出!

2.1 基本知识

模型可以做很多事情,需要明确的描述你想要什么以达到所想要的效果。

API就是输入一段文字,输出一段文字,对于目前我们使用的API,可以理解为文本的补全。怎么补全取决与输入的文字和一些参数的设定,不同模型的能力差异也主要体现在对输入文字的分析能力上。

之后的例子没有特别说明就是用的 text-davinci-003

输入影响输出

AI文字补全可以补全你想到的任何内容,可以补全一个问题的答案,可以补全半句话,可以补全对话。下面是一些 "输入 => 输出" 的案例。

为冰淇淋店写一个口号 => 让你的味蕾体验极致,尽享冰淇淋的美妙!
我思故 => 我在
Human:你是谁 猫娘: => 嗨,我是一只可爱的猫娘!很高兴认识你!
Human:你是谁 AI: => 我是AI,一种人工智能系统。

参数影响输出

temperature 控制AI说话方式的创造性。
Frequency penalty 控制AI说话是否会重复原本的话题。
Presence penalty 控制AI说话是否会重复原本的字句。
....

参见 Completions 的一些说明。

2.2 设定技巧

由上,可以知道简单的对话机器人如何设置了,我们配置中提供了两个参数: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: 呼喵~感谢主人的宠爱喵。

2.3 GPT-3 模型

https://beta.openai.com/docs/models/gpt-3

不同模型具有不同的能力,分为 davinci curie babbage ada 四种(实际还有个用于专用于图像生成的,但是该项目没有适配,所以先不说明了)

其中 davinci 的模型功能最强大,价格也是这四个中最贵的,1000个标记需要花费0.02美元。

davinci 型号主要有 text-davinci-003,还有更适合编写代码的 code-davinci-002。

2.4 概率 temperature

完善中... ...

给定一些文本,模型

temperature > 0 时,每次输入相同的文本输出的回答会不一样

就比如说,输入

你是谁

回答可以有很多种,

?的概率为 40%

我是XX的概率为 30%

他是XX的概率为 1%

temperature 等于0的话,每次回答都将会是 ?

在等于0的时候

我思故 => 我在 我思故我在,I think, therefore I am.

在接近于1的时候

我思故 => 我在 我思故我在,是一句来自《论语》中孔子的名言....

根据使用场景,可以设置不同的temperature以达到更好效果

2.5 playground

https://beta.openai.com/playground/

上述的API都可以在playground进行测试调整,可以用来微调自己模型的有效性。需要注意的是,这里使用的tokens根据选择的模型正常计费。