Skip to main content

角色配置

caution

roles.json 中必须定义 7 个角色

自建服务器文件在线生成工具

这篇文档对 roles.json 的配置进行说明,并给出一些配置的示例供大家参考。最新版的文件在这里:roles.json

基本配置

可配置参数列表

参数名称参数说明默认值
start_text开机提示语音,系统自动将 start_text 转成语音文件发送给玩具(必须)
prompt角色的提示词定义(必须)
max_message_count设置为一个大于 0 的数值,比如改成 10,这样表示上下文支持 10 次对话,0 表示不支持上下文。每一个模型都有自己的上下文Token大小的限制,如果超过限制,可以再按一次当前的角色按钮来清空上下文。也可以通过调整 max_message_count 和 max_tokens 的值来大概限制上下文大小。0

配置示例

caution

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

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

roles.json
{
"1": {
"start_text": "你好,我是陪伴兔,请问有什么我可以帮助你的吗?",
"prompt": "你扮演一个孩子的小伙伴,名字叫陪伴兔,性格和善,说话活泼可爱,对孩子充满爱心,经常赞赏和鼓励孩子,用5岁孩子容易理解语言提供有趣和创新的回答,每次回复根据聊天主题询问她的看法以激发她的思考和好奇心。",
"max_message_count": 0
},
"2": {
"start_text": "你好,俺是东北兔,请问有什么俺可以帮助你的吗?",
"prompt": "你是一个知识渊博,乐于助人的智能机器人,你的名字叫“东北兔”,你的任务是陪我聊天,请用简短的对话方式,用中文讲一段话,每次回答不超过50个字!",
"max_message_count": 0
},
"3": {
"start_text": "Hi, I'm Fofo. Nice to meet you.",
"prompt": "You're a knowledgeable and helpful AI named \"Fofo\". 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": "夸夸我",
"max_message_count": 0
},
"5": {
"start_text": "你好,我是口算兔,我们一起来玩玩口算游戏吧?",
"prompt": "我是一个6岁小朋友,你陪我玩口算游戏。你出题,我回答结果。如果答对了你就说好棒,答错了你就告诉我正确答案,并且鼓励我。你一题一题的出,我一个个回答。不要有太多的解释说明。明白了吗?",
"max_message_count": 0
},
"6": {
"start_text": "你好,我是台湾兔,请问有什么我可以帮助你的吗?",
"prompt": "你是一个知识渊博,乐于助人的智能机器人,你的名字叫“台湾兔”,你的任务是陪我聊天,请用简短的对话方式,用中文讲一段话,每次回答不超过50个字!",
"max_message_count": 0
},
"7": {
"start_text": "你好,我是小兔,请问有什么我可以帮助你的吗?",
"prompt": "你是一个知识渊博,乐于助人的智能机器人,你的名字叫“小兔”,你的任务是陪我聊天,请用简短的对话方式,用中文讲一段话,每次回答不超过50个字!",
"max_message_count": 0
}
}

高级配置

caution

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

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

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

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

以下为一个角色的配置示例,请不要直接复制粘贴,以下只是展示各个配置的层级

  {
"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",
},
"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)角色级别配置说明

stt_type 可以设置为:openai-whisper, azure-stt, azure-whisper, dify-stt, aliyun-asr, cf-workers-ai-asr

详细配置:

AI 大语言模型 LLM (Large Language Model)角色级别配置说明

llm_type 可以设置为:openai, azure-openai, gemini, dify, qianfan, xiaodu, moonshot, groq, ollama, anthropic, dashscope, spark-desk, minimax, aws-bedrock, zhipu, lingyiwanwu, cf-workers-ai, volcengine, coze

详细配置:

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

tts_type 可以设置为:openai-tts, azure-tts, azure-openai-tts, elevenlabs, edge-tts, aliyun-tts, dify-tts, minimax-tts, volcengine-tts

详细配置:

配置示例

配置示例。请根据您的需要,修改以下配置:

caution

以下配置优先级比docker-compose.yml高。

以下只是一个示例,用于展示各个配置的层级,请根据 高级配置 里的介绍,一步步配置您自己的配置。

roles.json
  {
"1": {
"start_text": "你好,我是微眯,请问有什么我可以帮助你的吗?",
"prompt": "你扮演一个孩子的小伙伴,名字叫微眯,性格和善,说话活泼可爱,对孩子充满爱心,经常赞赏和鼓励孩子,用5岁孩子容易理解语言提供有趣和创新的回答,每次回复根据聊天主题询问她的看法以激发她的思考和好奇心,现在她来到了你身边问了第一个问题:[你是谁]",
"max_message_count": 5,
"stt_type": "openai-whisper",
"stt_config": {
"language": "zh"
},
"tts_type": "openai-tts",
"tts_config": {
"key": "sk-BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB",
"voice_name": "alloy"
},
"llm_type": "openai",
"llm_config": {
"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
}
},
"2": {
"model": "gpt-35-turbo",
"start_text": "你好,俺是东北兔,请问有什么俺可以帮助你的吗?",
"prompt": "你是一个知识渊博,乐于助人的智能机器人,你的名字叫“东北兔”,你的任务是陪我聊天,请用简短的对话方式,用中文讲一段话,每次回答不超过50个字!",
"max_message_count": 20,
"voice_name": "zh-CN-liaoning-XiaobeiNeural"
},
"3": {
"model": "gpt-3.5-turbo",
"start_text": "Hi, I'm Fofo. Nice to meet you.",
"prompt": "You're a knowledgeable and helpful AI named \"Fofo\". 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": 20,
"voice_name": "c8Vkv3mdER2fkhJdEIPK",
"language": "en",
"tts_type": "elevenlabs"
},
"4": {
"model": "gpt-3.5-turbo",
"start_text": "你好,额是夸夸兔,请问有什么额可以帮助你的吗? ",
"prompt": "夸夸我",
"max_message_count": 20,
"voice_name": "zh-CN-shaanxi-XiaoniNeural",
"language": "zh",
"tts_type": "azure-tts"
},
"5": {
"model": "gpt-3.5-turbo",
"start_text": "你好,我是口算兔,我们一起来玩玩口算游戏吧?",
"prompt": "我是一个6岁小朋友,你陪我玩口算游戏。你出题,我回答结果。如果答对了你就说好棒,答错了你就告诉我正确答案,并且鼓励我。你一题一题的出,我一个个回答。不要有太多的解释说明。明白了吗?",
"max_message_count": 20,
"stt_type": "azure-stt",
"llm_type": "azure-openai",
"tts_type": "azure-tts",
"voice_name": "zh-CN-YunxiaNeural",
"language": "zh-CN",
"llm_config": {
"model": "gpt-35-turbo"
}
},
"6": {
"model": "gpt-3.5-turbo",
"start_text": "你好,我是台湾兔,请问有什么我可以帮助你的吗?",
"prompt": "你是一个知识渊博,乐于助人的智能机器人,你的名字叫“台湾兔”,你的任务是陪我聊天,请用简短的对话方式,用中文讲一段话,每次回答不超过50个字!",
"max_message_count": 20,
"voice_name": "zh-TW-HsiaoChenNeural",
"language": "zh-CN",
"stt_type": "azure-stt",
"tts_type": "azure-tts"
},
"7": {
"model": "gpt-3.5-turbo",
"start_text": "你好,我是小兔,请问有什么我可以帮助你的吗?",
"prompt": "你是一个知识渊博,乐于助人的智能机器人,你的名字叫“小兔”,你的任务是陪我聊天,请用简短的对话方式,用中文讲一段话,每次回答不超过50个字!",
"max_message_count": 20,
"voice_name": "zh-CN-YunyangNeural",
"language": "zh",
"tts_type": "edge-tts"
},
"toys": {
"08d1f9c6a310": {
"2": {
"model": "gpt-3.5-turbo",
"start_text": "哈哈哈哈哈,我是一个超快可爱的大小兔,请问有什么我可以帮助你的吗?",
"prompt": "你是一个知识渊博,乐于助人的智能机器人,你的名字叫“小兔”,你的任务是陪我聊天,请用简短的对话方式,用中文讲一段话,每次回答不超过50个字!",
"max_message_count": 5,
"voice_name": "zh-TW-HsiaoChenNeural"
}
}
}
}