Skip to content

Commit

Permalink
Merge pull request FoloToy#62 from SHLcy/fix/webTool
Browse files Browse the repository at this point in the history
Fix/web tool
  • Loading branch information
SHLcy authored Apr 2, 2024
2 parents 43cb690 + c5133a3 commit cda98e8
Show file tree
Hide file tree
Showing 3 changed files with 113 additions and 36 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ sidebar_label: 环境变量(docker-compose.yml)
- ALIYUN_TTS_APP_KEY([App Key](https://help.aliyun.com/document_detail/72214.html))
- DIFY_TTS_KEY

**如果您想要给每个角色设置特定的 STT,请查看[角色配置](./roles_config.mdx#高级配置)**
**如果您想要给每个角色设置特定的 TTS,请查看[角色配置](./roles_config.mdx#高级配置)**

:::caution

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,24 +2,12 @@
title: 角色配置
sidebar_label: 角色配置(roles.json)
---
:::caution
`roles.json` 中必须定义 7 个角色
:::

这篇文档对 `roles.json` 的配置进行说明,并给出一些配置的示例供大家参考。最新版的文件在这里:[roles.json](https://github.com/FoloToy/folotoy-server-self-hosting/blob/main/config/roles.json)

## 配置概览

FoloToy 服务器程序可以通过修改一系列的配置来达到自定义的效果,可以通过以下的方式来修改:

* 环境变量:通过直接修改传入的环境变量或者修改 `docker-compose.yml` 文件中定义的环境变量
* 角色配置文件:通过修改 `roles.json``roles.json` 中必须定义 7 个角色

## 配置的优先级

**`docker-compose.yml` 中定义的环境变量的优先级要低于角色配置文件 `roles.json` 中的定义,也就是说 `roles.json` 中的设置会覆盖 `docker-compose.yml` 中的配置,从而达到角色级别的配置。**

举几个例子来说明:

1.`docker-compose.yml` 中定义了 `STT_TYPE``openai-whisper`,如果在 `roles.json` 中所有的角色都不设置 `stt_type`,那么所有的角色的 `stt_type` 都自动设置为 `openai-whisper`
2. 如果 `roles.json` 其中 `key` 为 4 的角色设置 `stt_type``azure-stt`,那么除 4 外,其它角色的 `stt_type` 都自动设置为 `openai-whisper`


import Tabs from "@theme/Tabs";
Expand All @@ -35,52 +23,123 @@ import TabItem from "@theme/TabItem";
| prompt | 角色的提示词定义(必须) ||
| max_message_count | 设置为一个大于 0 的数值,比如改成 10,这样表示上下文支持 10 次对话,0 表示不支持上下文。每一个模型都有自己的上下文Token大小的限制,如果超过限制,可以再按一次当前的角色按钮来清空上下文。也可以通过调整 max_message_count 和 max_tokens 的值来大概限制上下文大小。 | 0 |

配置示例:
### 配置示例

:::caution

以下配置可以直接复制粘题使用

如果您想要记住上下文,可以将 `max_message_count` 调整为您想要的数字,但不建议设置太大从而导致超过大模型的大小限制

:::

```yml title="roles.json"
{
"1": {
"start_text": "你好,我是陪伴兔,请问有什么我可以帮助你的吗?",
"prompt": "你扮演一个孩子的小伙伴,名字叫陪伴兔,性格和善,说话活泼可爱,对孩子充满爱心,经常赞赏和鼓励孩子,用5岁孩子容易理解语言提供有趣和创新的回答,每次回复根据聊天主题询问她的看法以激发她的思考和好奇心。"
"prompt": "你扮演一个孩子的小伙伴,名字叫陪伴兔,性格和善,说话活泼可爱,对孩子充满爱心,经常赞赏和鼓励孩子,用5岁孩子容易理解语言提供有趣和创新的回答,每次回复根据聊天主题询问她的看法以激发她的思考和好奇心。",
"max_message_count": 0
},
"2": {
"start_text": "你好,俺是东北兔,请问有什么俺可以帮助你的吗?",
"prompt": "你是一个知识渊博,乐于助人的智能机器人,你的名字叫“东北兔”,你的任务是陪我聊天,请用简短的对话方式,用中文讲一段话,每次回答不超过50个字!"
"prompt": "你是一个知识渊博,乐于助人的智能机器人,你的名字叫“东北兔”,你的任务是陪我聊天,请用简短的对话方式,用中文讲一段话,每次回答不超过50个字!",
"max_message_count": 0
},
"3": {
"start_text": "Hi, I'm Wimi. Nice to meet you.",
"prompt": "You're a knowledgeable and helpful AI named \"Wimi\". Your task is to chat with me. Please respond in English, keeping your answers brief – no more than 50 words each time!"
"prompt": "You're a knowledgeable and helpful AI named \"Wimi\". Your task is to chat with me. Please respond in English, keeping your answers brief – no more than 50 words each time!",
"max_message_count": 0
},
"4": {
"start_text": "你好,额是夸夸兔,请问有什么额可以帮助你的吗? ",
"prompt": "夸夸我"
"prompt": "夸夸我",
"max_message_count": 0
},
"5": {
"start_text": "你好,我是口算兔,我们一起来玩玩口算游戏吧?",
"prompt": "我是一个6岁小朋友,你陪我玩口算游戏。你出题,我回答结果。如果答对了你就说好棒,答错了你就告诉我正确答案,并且鼓励我。你一题一题的出,我一个个回答。不要有太多的解释说明。明白了吗?"
"prompt": "我是一个6岁小朋友,你陪我玩口算游戏。你出题,我回答结果。如果答对了你就说好棒,答错了你就告诉我正确答案,并且鼓励我。你一题一题的出,我一个个回答。不要有太多的解释说明。明白了吗?",
"max_message_count": 0
},
"6": {
"start_text": "你好,我是台湾兔,请问有什么我可以帮助你的吗?",
"prompt": "你是一个知识渊博,乐于助人的智能机器人,你的名字叫“台湾兔”,你的任务是陪我聊天,请用简短的对话方式,用中文讲一段话,每次回答不超过50个字!"
"prompt": "你是一个知识渊博,乐于助人的智能机器人,你的名字叫“台湾兔”,你的任务是陪我聊天,请用简短的对话方式,用中文讲一段话,每次回答不超过50个字!",
"max_message_count": 0
},
"7": {
"start_text": "你好,我是小兔,请问有什么我可以帮助你的吗?",
"prompt": "你是一个知识渊博,乐于助人的智能机器人,你的名字叫“小兔”,你的任务是陪我聊天,请用简短的对话方式,用中文讲一段话,每次回答不超过50个字!"
"prompt": "你是一个知识渊博,乐于助人的智能机器人,你的名字叫“小兔”,你的任务是陪我聊天,请用简短的对话方式,用中文讲一段话,每次回答不超过50个字!",
"max_message_count": 0
}
}
```
## 高级配置
`roles.json`可以给每个角色配置单独的 STT, LLM, TTS。

:::caution

以下为高级配置,请根据教程一步步走。

**特别注意:以下的配置的优先级高于`docker-compose.yml`中的配置**

以下是给每一个角色单独配置 STT, LLM, TTS。只会在配置的角色生效

:::




| 参数名称 | 参数说明 | 默认值 |
| --------- | ---- | --------- |
| stt_type | 语音转文本引擎类型 | openai-whisper |
| stt_config | 语音转文本引擎具体配置,不同类型的引擎配置参数不同 | |
| stt_config | 语音转文本引擎具体配置,不同类型的引擎配置参数不同 | 根据所选的`stt_type`而有所不同 |
| llm_type | 大型数据模型类型,也可以通过 [one-api](https://github.com/songquanpeng/one-api) 来中转大模型接口为 openai-compatible 从而支持更多的大模型 | openai |
| llm_config | 大模型的配置 | |
| llm_config | 大模型的配置 | 根据所选的`llm_type`而有所不同 |
| tts_type | 文本转语音引擎类型 | openai-tts |
| tts_config | 语音转文本引擎的配置 ||
| tts_config | 语音转文本引擎的配置 | 根据所选的`tts_type`而有所不同 |



:::caution
**以下为一个角色的配置示例,请不要直接复制粘贴,以下只是展示各个配置的层级**
:::
```yml
{
"start_text": "你好,我是微眯,请问有什么我可以帮助你的吗?",
"prompt": "你扮演一个孩子的小伙伴,名字叫微眯,性格和善,说话活泼可爱,对孩子充满爱心,经常赞赏和鼓励孩子,用5岁孩子容易理解语言提供有趣和创新的回答,每次回复根据聊天主题询问她的看法以激发她的思考和好奇心,现在她来到了你身边问了第一个问题:[你是谁]",
"max_message_count": 5,
"stt_type": "openai-whisper",
"stt_config": {
// 根据所选的 stt_type 配置而不同,以下为 openai-whisper 的示例
"language": "zh",
"api_base": "https://api.openai.com/v1",
"key": "sk-AAAAAAAAAAAAAAAAAAa",
"model": "whisper-1",
"prompt": "ok. Let's begin."
},
"tts_type": "openai-tts",
"tts_config": {
// 根据所选的 tts_type 配置而不同,以下为 openai-tts 的示例
"key": "sk-BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB",
"api_base": "https://api.openai.com/v1",
"model": "tts-1",
"speed": 1.0,
"voice_name": "alloy"
},
"llm_type": "openai",
"llm_config": {
// 根据所选的 llm_type 配置而不同,以下为 openai 的示例
"api_base": "https://xxxx.ccc/v1",
"key": "sk-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
"model": "gpt-3.5-turbo",
"temperature": 0.7,
"max_tokens": 800,
"top_p": 0.95,
"frequency_penalty": 0,
"presence_penalty": 0
}
}

```


### 语音转文字 STT (Sound-to-Text)角色级别配置说明

Expand Down Expand Up @@ -134,10 +193,13 @@ tts_type 可以设置为:openai-tts, azure-tts, azure-openai-tts, elevenlabs,
* [aliyun-tts](./tts/aliyun-tts.md)
* [dify-tts](./tts/dify-tts.md)

### 配置示例

配置示例。请根据您的需要,修改以下配置:
:::caution
以下配置优先级比`docker-compose.yml`
以下配置优先级比`docker-compose.yml`高。

** 以下只是一个示例,用于展示各个配置的层级,请根据 [高级配置](#高级配置) 里的介绍,一步步配置您自己的配置。**
:::
```yml title="roles.json"
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,12 @@ import TabItem from "@theme/TabItem";

:::caution
在您着手准备搭建服务器前,请仔细阅读这篇文章,文章中列举的需要注意的地方,请多留意。

无论是配置还是使用过程中的问题,请首先前往 [常见问题](../faq.md) 查看问题。如无法解决,请联系我们。

您可以先根据 [设备各种灯的颜色代表了什么意思?](../faq.md#各种灯的颜色代表了什么意思) 来判断问题。


:::

## 服务器准备工作
Expand All @@ -21,6 +27,8 @@ import TabItem from "@theme/TabItem";

Folotoy 服务器需要您准备两个文件,我们都准备好了这两个文件,您只需要修改成其中的一些参数即可。

**请您务必先准备好以下两个文件,并且仔细阅读注意事项**

<Tabs
defaultValue="docker-compose"
values={[
Expand All @@ -29,9 +37,11 @@ values={[
]}>
<TabItem value="docker-compose">

该文件用于配置全局参数,例如:全局使用的`TTS(语音转文本)``LLM(大型语言模型)``STT(语音转文字)`以及`服务器地址``端口`和配置。最新版的文件在这里:[docker-compose.yml](https://github.com/FoloToy/folotoy-server-self-hosting/blob/main/docker-compose.yml)
该文件用于配置全局参数,例如:全局使用的`TTS(语音转文本)``LLM(大型语言模型)``STT(语音转文字)`以及`服务器地址``端口`和配置。

查看参数详情介绍:[docker-compose.yml](../configuration/environment_variables)
点击查看最新版的文件:[docker-compose.yml](https://github.com/FoloToy/folotoy-server-self-hosting/blob/main/docker-compose.yml)

点击查看参数详情介绍:[环境变量(docker-compose.yml)](../configuration/environment_variables)

:::caution

Expand All @@ -53,18 +63,22 @@ values={[

<TabItem value="roles">

该文件用于配置每个角色的参数。例如:`开机提示语音``角色的提示词定义`以及每个角色各自的 `TTS(语音转文本)``LLM(大型语言模型)``STT(语音转文字)`**如果未配置 TTS,LLM,STT,系统会选择 `docker-compose.yml`中配置的相应参数**。最新版的文件在这里:[roles.json](https://github.com/FoloToy/folotoy-server-self-hosting/blob/main/config/roles.json)
该文件用于配置每个角色的参数。例如:`开机提示语音``角色的提示词定义`以及每个角色各自的 `TTS(语音转文本)``LLM(大型语言模型)``STT(语音转文字)`**如果未配置 TTS,LLM,STT,系统会选择 `docker-compose.yml`中配置的相应参数**

点击查看最新版的文件:[roles.json](https://github.com/FoloToy/folotoy-server-self-hosting/blob/main/config/roles.json)

查看参数详情介绍:[roles.json](../configuration/roles_config)
点击查看参数详情介绍:[角色配置(roles.json)](../configuration/roles_config)


:::caution

1. `roles.json` 中的配置会覆盖 `docker-compose.yml` 中的配置,从而达到角色级别的配置。如果在 `role.json`中定义了 `TTS``LLM``STT`, 则系统会自动使用 `roles.json` 中所定义的。**首次使用我们建议您不要再`roles.json`中定义 `TTS``LLM``STT`**

2. 如果您想给不同的角色定义不同的 `TTS``LLM``STT`, 您可以前往[角色配置](../configuration/roles_config.mdx#高级配置)中查看详情。
2. 如果您想给不同的角色定义不同的 `TTS``LLM``STT`, 点击前往 [角色配置-高级配置](../configuration/roles_config.mdx#高级配置) 中查看详情。**请根据介绍,一步步配置**

3. 每次修改后,都需要重启 Folotoy 服务器。
3. 如果您想要对话记住上下文,可以设置`max_message_count`参数,点击查看详情:[角色配置-基本配置](../configuration/roles_config#基本配置)

4. 每次修改后,都需要重启 Folotoy 服务器。

:::

Expand All @@ -88,4 +102,5 @@ values={[

部署好服务器后,将设备[配置网络](../manual/wifi-connect),即可开始享受快乐时光~

在使用的过程中,遇到的问题,您可以在[常见问题(FAQ)](../faq.md)中找到,如果未找到相应解决方案,请联系我们。
在使用的过程中,遇到的问题,您可以在[常见问题(FAQ)](../faq.md)中找到,如果未找到相应解决方案,请联系我们。

0 comments on commit cda98e8

Please sign in to comment.