角色配置
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 | 
配置示例
以下配置可以直接复制粘题使用
如果您想要记住上下文,可以将 max_message_count 调整为您想要的数字,但不建议设置太大从而导致超过大模型的大小限制
{
    "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
    }
}
高级配置
以下为高级配置,请根据教程一步步走。
特别注意:以下的配置的优先级高于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而有所不同 | 
以下为一个角色的配置示例,请不要直接复制粘贴,以下只是展示各个配置的层级
  {
        "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
详细配置:
- deepseek
 - openai
 - azure-openai
 - gemini
 - dify
 - qianfan
 - xiaodu
 - moonshot
 - groq
 - ollama
 - anthropic
 - dashscope
 - spark-desk
 - minimax
 - aws-bedrock
 - zhipu
 - lingyiwanwu
 - fastgpt
 - 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
详细配置:
配置示例
配置示例。请根据您的需要,修改以下配置:
以下配置优先级比docker-compose.yml高。
以下只是一个示例,用于展示各个配置的层级,请根据 高级配置 里的介绍,一步步配置您自己的配置。
  {
     "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"
         }
       }
     }
}