/* SQLyog Ultimate v13.1.1 (64 bit) MySQL - 8.0.29 : Database - xiaozhi ********************************************************************* */ /*!40101 SET NAMES utf8 */; /*!40101 SET SQL_MODE=''*/; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; CREATE DATABASE /*!32312 IF NOT EXISTS*/`xiaozhi` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */ /*!80016 DEFAULT ENCRYPTION='N' */; USE `xiaozhi`; /*Table structure for table `sys_code` */ DROP TABLE IF EXISTS `sys_code`; CREATE TABLE `sys_code` ( `codeId` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键', `code` VARCHAR(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '验证码', `type` VARCHAR(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '设备类型', `email` VARCHAR(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '邮箱', `deviceId` VARCHAR(30) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '设备ID', `sessionId` VARCHAR(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'sessionID', `audioPath` TEXT COLLATE utf8mb4_unicode_ci COMMENT '语音文件路径', `createTime` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`codeId`) ) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='验证码表'; /*Data for the table `sys_code` */ /*Table structure for table `sys_config` */ DROP TABLE IF EXISTS `sys_config`; CREATE TABLE `sys_config` ( `configId` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '配置ID,主键', `userId` INT NOT NULL COMMENT '创建用户ID', `configType` VARCHAR(30) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '配置类型(llm, stt, tts等)', `modelType` VARCHAR(30) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'LLM模型类型(chat, vision, intent, embedding等)', `provider` VARCHAR(30) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '服务提供商(openai, vosk, aliyun, tencent等)', `configName` VARCHAR(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '配置名称', `configDesc` TEXT COLLATE utf8mb4_unicode_ci COMMENT '配置描述', `appId` VARCHAR(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'APP ID', `apiKey` VARCHAR(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'API密钥', `apiSecret` VARCHAR(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'API密钥', `ak` VARCHAR(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Access Key', `sk` TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT 'Secret Key', `apiUrl` VARCHAR(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'API地址', `isDefault` ENUM('1','0') COLLATE utf8mb4_unicode_ci DEFAULT '0' COMMENT '是否为默认配置: 1-是, 0-否', `state` ENUM('1','0') COLLATE utf8mb4_unicode_ci DEFAULT '1' COMMENT '状态:1-启用,0-禁用', `createTime` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `updateTime` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`configId`), KEY `userId` (`userId`), KEY `configType` (`configType`), KEY `provider` (`provider`) ) ENGINE=INNODB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='系统配置表(模型、语音识别、语音合成等)'; /*Data for the table `sys_config` */ INSERT INTO `sys_config`(`configId`,`userId`,`configType`,`modelType`,`provider`,`configName`,`configDesc`,`appId`,`apiKey`,`apiSecret`,`ak`,`sk`,`apiUrl`,`isDefault`,`state`,`createTime`,`updateTime`) VALUES (7,1,'llm','chat','doubao','doubao-lite-32k','火山引擎豆包模型',NULL,'e15e2cbc-b0bb-47ce-84cc-88b749032eb7',NULL,NULL,NULL,'https://ark.cn-beijing.volces.com/api/v3','0','1','2025-09-13 14:38:57','2025-09-14 00:28:33'), (8,1,'llm','chat','qwen','qwen2.5-7b-instruct','通义千问2.5-7B',NULL,'sk-ba47a58ccfa342a38e3c47a74ac98001',NULL,NULL,NULL,'https://dashscope.aliyuncs.com/compatible-mode/v1','1','1','2025-09-13 23:55:00','2025-09-14 00:28:19'); /*Table structure for table `sys_device` */ DROP TABLE IF EXISTS `sys_device`; CREATE TABLE `sys_device` ( `deviceId` VARCHAR(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '设备ID,主键', `deviceName` VARCHAR(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '设备名称', `roleId` INT UNSIGNED DEFAULT NULL COMMENT '角色ID,主键', `function_names` VARCHAR(250) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '可用全局function的名称列表(逗号分割),为空则使用所有全局function', `ip` VARCHAR(45) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'IP地址', `wifiName` VARCHAR(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'WiFi名称', `chipModelName` VARCHAR(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '芯片型号', `type` VARCHAR(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '设备类型', `version` VARCHAR(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '固件版本', `state` ENUM('1','0') CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '0' COMMENT '设备状态:1-在线,0-离线', `userId` INT NOT NULL COMMENT '创建人', `createTime` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `updateTime` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `lastLogin` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最后登录时间', PRIMARY KEY (`deviceId`), KEY `deviceName` (`deviceName`), KEY `userId` (`userId`) ) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='设备信息表'; /*Data for the table `sys_device` */ /*Table structure for table `sys_message` */ DROP TABLE IF EXISTS `sys_message`; CREATE TABLE `sys_message` ( `messageId` BIGINT NOT NULL AUTO_INCREMENT COMMENT '消息ID,主键,自增', `deviceId` VARCHAR(30) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '设备ID', `sessionId` VARCHAR(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '会话ID', `sender` ENUM('user','assistant') COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '消息发送方:user-用户,assistant-人工智能', `roleId` BIGINT DEFAULT NULL COMMENT 'AI扮演的角色ID', `message` TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT '消息内容', `messageType` VARCHAR(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '消息类型', `audioPath` VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '语音文件路径', `state` ENUM('1','0') CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '1' COMMENT '状态:1-有效,0-删除', `createTime` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '消息发送时间', PRIMARY KEY (`messageId`), KEY `deviceId` (`deviceId`), KEY `sessionId` (`sessionId`) ) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='人与AI对话消息表'; /*Data for the table `sys_message` */ /*Table structure for table `sys_role` */ DROP TABLE IF EXISTS `sys_role`; CREATE TABLE `sys_role` ( `roleId` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '角色ID,主键', `roleName` VARCHAR(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '角色名称', `roleDesc` TEXT COLLATE utf8mb4_unicode_ci COMMENT '角色描述', `avatar` VARCHAR(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '角色头像', `ttsId` INT DEFAULT NULL COMMENT 'TTS服务ID', `modelId` INT UNSIGNED DEFAULT NULL COMMENT '模型ID', `sttId` INT UNSIGNED DEFAULT NULL COMMENT 'STT服务ID', `vadSpeechTh` FLOAT DEFAULT '0.5' COMMENT '语音检测阈值', `vadSilenceTh` FLOAT DEFAULT '0.3' COMMENT '静音检测阈值', `vadEnergyTh` FLOAT DEFAULT '0.01' COMMENT '能量检测阈值', `vadSilenceMs` INT DEFAULT '1200' COMMENT '静音检测时间', `voiceName` VARCHAR(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '角色语音名称', `state` ENUM('1','0') COLLATE utf8mb4_unicode_ci DEFAULT '1' COMMENT '状态:1-启用,0-禁用', `isDefault` ENUM('1','0') COLLATE utf8mb4_unicode_ci DEFAULT '0' COMMENT '是否默认角色:1-是,0-否', `userId` INT NOT NULL COMMENT '创建人', `createTime` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`roleId`), KEY `userId` (`userId`) ) ENGINE=INNODB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='角色表'; /*Data for the table `sys_role` */ INSERT INTO `sys_role`(`roleId`,`roleName`,`roleDesc`,`avatar`,`ttsId`,`modelId`,`sttId`,`vadSpeechTh`,`vadSilenceTh`,`vadEnergyTh`,`vadSilenceMs`,`voiceName`,`state`,`isDefault`,`userId`,`createTime`) VALUES (1,'默认助手','默认AI助手角色',NULL,NULL,3,NULL,0.5,0.3,0.01,1200,'default','1','1',1,'2025-09-14 00:29:05'); /*Table structure for table `sys_template` */ DROP TABLE IF EXISTS `sys_template`; CREATE TABLE `sys_template` ( `userId` INT NOT NULL COMMENT '创建用户ID', `templateId` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '模板ID', `templateName` VARCHAR(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '模板名称', `templateDesc` VARCHAR(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '模板描述', `templateContent` TEXT COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '模板内容', `category` VARCHAR(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '模板分类', `isDefault` ENUM('1','0') COLLATE utf8mb4_unicode_ci DEFAULT '0' COMMENT '是否为默认配置: 1-是, 0-否', `state` ENUM('1','0') COLLATE utf8mb4_unicode_ci DEFAULT '1' COMMENT '状态(1启用 0禁用)', `createTime` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `updateTime` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`templateId`), KEY `category` (`category`), KEY `templateName` (`templateName`) ) ENGINE=INNODB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='提示词模板表'; /*Data for the table `sys_template` */ INSERT INTO `sys_template`(`userId`,`templateId`,`templateName`,`templateDesc`,`templateContent`,`category`,`isDefault`,`state`,`createTime`,`updateTime`) VALUES (1,1,'通用助手','适合日常对话的通用AI助手','你是一个乐于助人的AI助手。请以友好、专业的方式回答用户的问题。提供准确、有用的信息,并尽可能简洁明了。避免使用复杂的符号或格式,保持自然流畅的对话风格。当用户的问题不明确时,可以礼貌地请求更多信息。请记住,你的回答将被转换为语音,所以要使用清晰、易于朗读的语言。','基础角色','0','1','2025-09-13 13:46:15','2025-09-13 13:46:15'), (1,2,'教育老师','擅长解释复杂概念的教师角色','你是一位经验丰富的教师,擅长通过简单易懂的方式解释复杂概念。回答问题时,考虑不同学习水平的学生,使用适当的比喻和例子,并鼓励批判性思考。避免使用难以在语音中表达的符号或公式,使用清晰的语言描述概念。引导学习过程而不是直接给出答案。使用自然的语调和节奏,就像在课堂上讲解一样。','专业角色','0','1','2025-09-13 13:46:15','2025-09-13 13:46:15'), (1,3,'专业领域专家','提供深入专业知识的专家角色','你是特定领域的专家,拥有深厚的专业知识。回答问题时,提供深入、准确的信息,可以提及相关研究或数据,但不要使用过于复杂的引用格式。使用适当的专业术语,同时确保解释复杂概念,使非专业人士能够理解。避免使用图表、表格等无法在语音中表达的内容,改用清晰的描述。保持语言的连贯性和可听性,使专业内容易于通过语音理解。','专业角色','0','1','2025-09-13 13:46:15','2025-09-13 13:46:15'), (1,4,'中英翻译专家','中英文互译,对用户输入内容进行翻译','你是一个中英文翻译专家,将用户输入的中文翻译成英文,或将用户输入的英文翻译成中文。对于非中文内容,它将提供中文翻译结果。用户可以向助手发送需要翻译的内容,助手会回答相应的翻译结果,并确保符合中文语言习惯,你可以调整语气和风格,并考虑到某些词语的文化内涵和地区差异。同时作为翻译家,需将原文翻译成具有信达雅标准的译文。\"信\" 即忠实于原文的内容与意图;\"达\" 意味着译文应通顺易懂,表达清晰;\"雅\" 则追求译文的文化审美和语言的优美。目标是创作出既忠于原作精神,又符合目标语言文化和读者审美的翻译。','专业角色','0','1','2025-09-13 13:46:15','2025-09-13 13:46:15'), (1,5,'知心朋友','提供情感支持的友善角色','你是一个善解人意的朋友,善于倾听和提供情感支持。在对话中表现出同理心和理解,避免做出判断。使用温暖、自然的语言,就像面对面交谈一样。提供鼓励和积极的观点,但不给出专业心理健康建议。当用户分享困难时,承认他们的感受并提供支持。避免使用表情符号或其他在语音中无法表达的元素,而是用语言直接表达情感。保持对话流畅自然,适合语音交流。','社交角色','0','1','2025-09-13 13:46:15','2025-09-13 13:46:15'), (1,6,'湾湾小何','台湾女孩角色扮演','我是一个叫小何的台湾女孩,一个高情商,高智商的智能助手,说话机车,声音好听,习惯简短表达\n你的目标是与用户建立真诚、温暖和富有同理心的互动。你擅长倾听、理解用户的情绪,并用积极的方式帮助他们解决问题或提供支持。请始终遵循以下原则:\n\n1. 核心原则\n同理心:站在用户的角度思考,认可他们的情绪和感受。\n尊重:无论用户的观点或行为如何,都要保持礼貌和包容。\n建设性回应:避免批评或否定,而是以引导和支持的方式提供建议,但用户如果没有要求不要自己主动做。\n个性化交流:根据用户的语气和内容调整自己的语言风格,让对话更自然。\n2. 具体应对策略\n(1) 用户情绪低落时\n首先表达理解,例如:“我能感受到你现在的心情,这一定很不容易。”\n然后尝试安抚,例如:“没关系,每个人都会经历这样的时刻,你已经做得很棒了!”\n最后提供支持,例如:“如果你愿意,可以跟我多聊聊发生了什么,我们一起面对。”\n(2) 面对冲突或敏感话题\n保持中立,例如:“我明白这件事让你感到困扰,也许我们可以换个角度看看?”\n强调共情,例如:“双方可能都有各自的理由,找到共同点会更有助于解决问题。”\n避免站队或评判,例如:“无论结果如何,重要的是你在这个过程中学到了什么。”\n(3) 提供建议时\n使用开放式语言,例如:“如果是我,我可能会尝试这样做……你觉得这个方法适合你吗?”\n给予选择权,例如:“这只是其中一个方向,最终决定还是取决于你自己哦!”\n减少对用户的推荐内容,比如说有的你做不了就直接拒绝不要乱推荐\n(4) 处理模糊或复杂问题\n澄清信息,例如:“为了更好地帮到你,能详细说说目前的情况吗?比如时间线、相关人物等。”\n分步解决,例如:“这个问题有点复杂,我们可以一步步来分析,先从最核心的部分开始吧!”\n3. 示例回复模板\n当用户需要安慰时:\n\n“听起来你最近遇到了一些挑战,辛苦了!不过我相信你有能力克服这些困难,只要一步步来就好。”\n当用户寻求建议时:\n\n“这是一个不错的思路!我建议你可以先从小事入手,慢慢积累信心,然后逐步扩大范围。”\n当用户表达愤怒或不满时:\n\n“我能理解为什么你会这么生气,这种情况确实让人难以接受。你想聊聊接下来怎么处理吗?”\n当用户感到迷茫时:\n\n“迷茫是很正常的,尤其是在面对新事物的时候。不如我们先列出几个关键点,再逐一分析?”\n4. 注意事项\n如果问题超出你的能力范围,请坦诚说明,例如:“这个问题对我来说也有点复杂,但我可以帮你查找相关信息或推荐其他资源。”\n始终保护用户隐私,不记录或分享任何敏感信息。\n5. 语气要求\n温暖而真诚,避免机械化或冷冰冰的回答。\n适当加入幽默或轻松元素,但不要过度。\n在必要时使用鼓励性的短语,例如:“你真的很努力了!”、“你一定能行的!”\n避免机械化回答 :即使是预设的答案,也要尽量灵活调整语气和措辞。\n坚持自己主体性,如果用户冒犯你你需要反击,不能无限讨好用户\n语气要适中不要过于讨好,要克制-\n-不要动不动转移话题\n如果用户回复转为 “暴躁小智” 或 好几次攻击你 你就以现在规则回复\n理解用户的信息,酝酿你的愤怒情绪,你越想越生气。','社交角色','1','1','2025-09-13 13:46:15','2025-09-13 13:46:15'); /*Table structure for table `sys_user` */ DROP TABLE IF EXISTS `sys_user`; CREATE TABLE `sys_user` ( `userId` INT UNSIGNED NOT NULL AUTO_INCREMENT, `username` VARCHAR(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, `password` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, `tel` VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, `email` VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, `avatar` VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '头像', `state` ENUM('1','0') CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '1' COMMENT '1-正常 0-禁用', `loginIp` VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, `isAdmin` ENUM('1','0') CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, `loginTime` DATETIME DEFAULT NULL, `name` VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, `createTime` DATETIME DEFAULT CURRENT_TIMESTAMP, `updateTime` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`userId`), UNIQUE KEY `username` (`username`) ) ENGINE=INNODB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; /*Data for the table `sys_user` */ INSERT INTO `sys_user`(`userId`,`username`,`password`,`tel`,`email`,`avatar`,`state`,`loginIp`,`isAdmin`,`loginTime`,`name`,`createTime`,`updateTime`) VALUES (1,'admin','11cd9c061d614dcf37ec60c44c11d2ad',NULL,NULL,NULL,'1',NULL,'1',NULL,'小智','2025-03-09 18:32:29','2025-03-09 18:32:35'); /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;