feat: 新增对tool支持的相关接口 (#495)

* 修复后台API反代地址未能正确显示的问题

* 更新渲染页面配置

* 添加个人聊天模式配置

* 将用户数据获取改到common中

* 修复错误的渲染页面参数

* 修复bug

* 添加Live2D

* 修复渲染页面错误

* 修复渲染传入值

* 更新渲染

* 修复图表渲染bug

* 调整live2d模型大小

* 修复live2d无法关闭问题

* 修复错误的传值

* 修复ai命名

* 更新渲染

* 添加用户独立设定

* 更新渲染配置适配个人设置

* 修复合并导致的渲染文件异常删除

* 修复用户数据缺失问题

* 修复旧版本数据缺失问题

* 修复bing参数不存在问题,兼容miao的截图

* 修复受限token重试时不被排除的问题

* 修复个人模式下结束对话的模式错误

* 更新渲染页面,将预览版转为正式版

* 修复传统渲染无法调用截图功能的问题

* 文字模式也进行一次缓存

* 更新README

* Update README.md

* 更新渲染

* 更新渲染页面

* 添加版本信息

* 遗漏参数

* 丢失引用

* 补充路由

* 添加云转码功能

* 判断node-silk是否正常合成

* 云转码提示

* 修复图片渲染出错

* 云转码支持发送Buffer

* 添加云转码模式支持

* 更新描述

* 更新后台渲染页面

* 更新配置

* 更新渲染页面

* 添加云渲染

* 修复错误的接口调用

* 修复遗漏的数据转换

* 修复获取的图片数据异常问题

* 更新后台配置

* 更新渲染页面

* 修复云渲染访问地址错误

* 更新渲染页面

* 修复遗漏的模型文件

* 修复live2d问题

* 更新live2d以及相关配置

* 修复遗漏的数据参数

* 修复新live2d情况下云渲染错误的问题

* 适配云渲染1.1.2等待参数

* 添加云服务api检查

* 更新渲染页面

* 添加live2d加载检测

* 修复错误的属性判断

* 添加云渲染DPR

* 更新sydney支持内容生成

* 修改文件模式语音转码接收模式

* 添加云转码时recordUrl检查

* 更新后台配置项

* 修复错误的文本描述

* 更新后台页面

* 添加全局对话模式设置,更新后台面板

* 添加第三方渲染服务适配

* 修复第三方服务器live2d加载导致的渲染失败问题

* 修复后台地址无法实时保存的问题

* 添加live2d模型透明度设置

* 合并更新

* 更新渲染页面

* 更新渲染页面

* 使dpr对本地渲染也生效

* 更新渲染页面

* 添加网页截图功能

* 添加后台配置项

* 添加配置导出和导入功能

* 运行通过参数传递用户token

* 登录时将token作为参数返回

* 修复错误

* 添加密码修改和用户删除接口

* 修正密码比对

* 修复user错误

* 优化数据保存时的返回值

* 添加系统额外服务检查api

* 添加AccessToken配置

* 修复错误的导入提示

* 添加ws连接

* 添加ws用户信息获取

* 修复错误的循环

* 修正ws参数

* 添加群消息获取权限

* 添加用户多端登录支持

* 修复错误的路径引用

* 修复错误的路径引用

* 修复错误

* 修复页面数据获取失败问题

* 修复异常的中断

* 添加配置视图

* 更新配置面板

* 添加用户版本信息

* 更新配置视图

* 修复错误的视图绑定

* 修改视图文件位置,添加mediaLink相关代码

---------

Co-authored-by: ikechan8370 <geyinchibuaa@gmail.com>
This commit is contained in:
HalcyonAlcedo 2023-07-01 15:47:07 +08:00 committed by GitHub
parent 2443ed6f71
commit ca3788d719
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 1169 additions and 67 deletions

View file

@ -0,0 +1,867 @@
[
{
"id": "GeneralSettings",
"title": "通用设置",
"view": [
{
"type": "check",
"label": "图片识别OCR",
"data": "imgOcr"
},
{
"type": "check",
"label": "允许其他模式",
"data": "allowOtherMode"
},
{
"type": "check",
"label": "调试信息",
"data": "debug"
},
{
"type": "check",
"label": "是否允许私聊机器人",
"data": "enablePrivateChat"
},
{
"type": "check",
"label": "回复确认",
"model": "redisConfig",
"data": "turnConfirm"
},
{
"type": "check",
"label": "新版帮助",
"data": "newhelp"
},
{
"type": "number",
"label": "对话保留时长",
"placeholder": "每个人发起的对话保留时长",
"data": "conversationPreserveTime"
},
{
"type": "url",
"label": "代理服务器地址",
"placeholder": "数据通过代理服务器发送http或socks5代理",
"data": "proxy"
},
{
"type": "select",
"label": "对话模式",
"model": "redisConfig",
"data": "useMode",
"items": [
{
"label": "必应",
"value": "bing"
},
{
"label": "ChatGPT API",
"value": "api"
},
{
"label": "ChatGPT API3",
"value": "api3"
},
{
"label": "Slack Claude",
"value": "claude"
},
{
"label": "ChatGLM",
"value": "chatglm"
},
{
"label": "星火",
"value": "xh"
},
{
"label": "浏览器",
"value": "browser"
}
]
},
{
"type": "password",
"label": "高德APIKey",
"placeholder": "用于查询天气",
"data": "amapKey"
},
{
"type": "url",
"label": "Azure search key",
"placeholder": "https://www.microsoft.com/en-us/bing/apis/bing-web-search-api",
"data": "azSerpKey"
},
{
"type": "select",
"label": "搜索来源",
"data": "serpSource",
"items": [
{
"label": "Azure",
"value": "azure"
},
{
"label": "ikechan8370",
"value": "ikechan8370"
}
]
},
{
"type": "url",
"label": "额外工具url",
"placeholder": "测试期间提供一个公益接口,一段时间后撤掉",
"data": "extraUrl"
}
]
},
{
"id": "ChatSettings",
"title": "聊天设置",
"view": [
{
"type": "tabs",
"id": "ChatSetting",
"tabs": [
{
"title": "文本模式",
"icon": "mdi-format-text",
"tab": "text",
"view": [
{
"type": "check",
"label": "长文本自动转图片",
"data": "autoUsePicture"
},
{
"type": "check",
"label": "是否允许机器人真AT",
"data": "enableRobotAt"
},
{
"type": "number",
"label": "自动转图片阈值",
"placeholder": "自动转图片的字数阈值",
"data": "autoUsePictureThreshold"
}
]
},
{
"title": "图片模式[基础参数]",
"icon": "mdi-image",
"tab": "image_base",
"view": [
{
"type": "check",
"label": "全局图片模式",
"data": "defaultUsePicture"
},
{
"type": "check",
"label": "图片引用消息",
"data": "quoteReply"
},
{
"type": "check",
"label": "启用二维码",
"data": "showQRCode"
},
{
"type": "text",
"label": "BOT命名",
"placeholder": "强制修改Bot命名",
"data": "chatViewBotName"
},
{
"type": "url",
"label": "渲染服务器地址",
"placeholder": "可选择第三方渲染服务器",
"data": "viewHost"
},
{
"type": "number",
"label": "图片渲染宽度",
"placeholder": "图片渲染宽度",
"data": "chatViewWidth"
},
{
"type": "check",
"label": "云渲染",
"data": "cloudRender"
},
{
"type": "number",
"label": "云渲染DPR",
"placeholder": "设置云渲染画面缩放,数值愈大越清晰",
"data": "cloudDPR"
}
]
},
{
"title": "图片模式[Live2D]",
"icon": "mdi-image",
"tab": "image_live2d",
"view": [
{
"type": "check",
"label": "Live2D",
"data": "live2d"
},
{
"type": "text",
"label": "Live2D模型",
"placeholder": "使用的Live2D模式文件",
"data": "live2dModel"
},
{
"type": "number",
"label": "Live2D模型缩放",
"placeholder": "渲染live2d的模型大小",
"data": "live2dOption_scale"
},
{
"type": "number",
"label": "Live2D模型位置X",
"placeholder": "Live2d模型在区域的位置X轴微调",
"data": "live2dOption_positionX"
},
{
"type": "number",
"label": "Live2D模型位置Y",
"placeholder": "Live2d模型在区域的位置Y轴微调",
"data": "live2dOption_positionY"
},
{
"type": "number",
"label": "Live2D模型旋转",
"placeholder": "Live2d模型在区域的旋转角度",
"data": "live2dOption_rotation"
},
{
"type": "number",
"label": "Live2D模型透明度",
"placeholder": "Live2d模型的透明度",
"data": "live2dOption_alpha"
}
]
},
{
"title": "图片模式[旧渲染]",
"icon": "mdi-image",
"tab": "image_old",
"view": [
{
"type": "check",
"label": "旧版本渲染",
"data": "oldview"
},
{
"type": "check",
"label": "预制渲染服务器访问代码",
"data": "cacheEntry"
},
{
"type": "url",
"label": "渲染服务器地址",
"placeholder": "可选择第三方渲染服务器",
"data": "cacheUrl"
}
]
},
{
"title": "语音模式",
"icon": "mdi-microphone",
"tab": "voice",
"view": [
{
"type": "check",
"label": "全局语音模式",
"data": "defaultUseTTS"
},
{
"type": "check",
"label": "语音同时发送文字",
"data": "alsoSendText"
},
{
"type": "number",
"label": "语音转文字阈值",
"placeholder": "语音模式下,字数超过这个阈值就降级为文字",
"data": "ttsAutoFallbackThreshold"
},
{
"type": "text",
"label": "语音过滤正则表达式",
"placeholder": "语音模式下,配置此项以过滤不想被读出来的内容",
"data": "ttsRegex"
},
{
"type": "select",
"label": "语音模式源",
"data": "ttsMode",
"items": [
{
"label": "Vits",
"value": "vits-uma-genshin-honkai"
},
{
"label": "微软Azure",
"value": "azure"
},
{
"label": "VoiceVox",
"value": "VoiceVox"
}
]
},
{
"type": "select",
"label": "云转码模式",
"data": "cloudMode",
"items": [
{
"label": "文件",
"value": "file"
},
{
"label": "链接",
"value": "url"
}
]
}
]
},
{
"title": "语音模式[vits]",
"icon": "mdi-microphone",
"tab": "vits",
"view": [
{
"type": "url",
"label": "语音转换API地址",
"placeholder": "前往duplicate空间查看api地址",
"data": "ttsSpace"
},
{
"type": "url",
"label": "语音转换huggingface反代",
"data": "huggingFaceReverseProxy"
},
{
"type": "number",
"label": "控制情感变化程度",
"data": "noiseScale"
},
{
"type": "number",
"label": "控制音素发音长度",
"data": "noiseScaleW"
},
{
"type": "number",
"label": "控制整体语速",
"data": "lengthScale"
},
{
"type": "check",
"label": "日语输出",
"data": "autoJapanese"
}
]
},
{
"title": "语音模式[Azure]",
"icon": "mdi-microphone",
"tab": "azure",
"view": [
{
"type": "password",
"label": "语音服务密钥",
"placeholder": "Azure的语音服务密钥",
"data": "azureTTSKey"
},
{
"type": "text",
"label": "语音服务区域",
"placeholder": "Azure语音服务区域",
"data": "azureTTSRegion"
},
{
"type": "number",
"label": "Azure情绪多样化",
"data": "azureTTSEmotion"
},
{
"type": "number",
"label": "Azure情绪纠正",
"data": "enhanceAzureTTSEmotion"
}
]
},
{
"title": "语音模式[Voicevox]",
"icon": "mdi-microphone",
"tab": "voicevox",
"view": [
{
"type": "url",
"label": "语音转换API地址",
"placeholder": "voicevox语音转换API地址",
"data": "voicevoxSpace"
}
]
}
]
}
]
},
{
"id": "ModelSettings",
"title": "模式设置",
"view": [
{
"type": "tabs",
"id": "ChatSetting",
"tabs": [
{
"title": "API",
"tab": "api",
"view": [
{
"type": "check",
"label": "强制使用OpenAI反代",
"data": "openAiForceUseReverse"
},
{
"type": "check",
"label": "智能模式",
"data": "smartMode"
},
{
"type": "password",
"label": "OpenAI API Key",
"placeholder": "OpenAI的ApiKey用于访问OpenAI的API接口",
"data": "apiKey"
},
{
"type": "text",
"label": "OpenAI 模型",
"placeholder": "gpt-4, gpt-4-0314, gpt-4-32k, gpt-4-32k-0314, gpt-3.5-turbo, gpt-3.5-turbo-0301",
"data": "model"
},
{
"type": "text",
"label": "AI名字",
"placeholder": "AI认为的自己的名字当你问他你是谁是他会回答这里的名字",
"data": "assistantLabel"
},
{
"type": "number",
"label": "temperature",
"placeholder": "用于控制回复内容的多样性,数值越大回复越加随机、多元化,数值越小回复越加保守",
"data": "temperature"
},
{
"type": "url",
"label": "OpenAI API服务器地址",
"placeholder": "OpenAI的API服务器地址注意要带上/v1。",
"data": "openAiBaseUrl"
},
{
"type": "textarea",
"label": "AI风格",
"placeholder": "你可以在这里写入你希望AI回答的风格比如希望优先回答中文回答长一点等",
"data": "promptPrefixOverride"
}
]
},
{
"title": "API3",
"tab": "api3",
"view": [
{
"type": "url",
"label": "ChatGPT API反代服务器地址",
"placeholder": "ChatGPT的API反代服务器用于绕过Cloudflare访问ChatGPT API。",
"data": "api"
},
{
"type": "url",
"label": "apiBaseUrl地址",
"data": "apiBaseUrl"
},
{
"type": "password",
"label": "OpenAI refreshToken",
"placeholder": "OpenAI的refreshToken用于刷新Access Token",
"data": "OpenAiPlatformRefreshToken"
},
{
"type": "password",
"label": "OpenAI AccessToken",
"model": "redisConfig",
"data": "openAiPlatformAccessToken"
},
{
"type": "check",
"label": "强制使用ChatGPT反代",
"data": "apiForceUseReverse"
},
{
"type": "check",
"label": "使用GPT-4",
"data": "useGPT4"
}
]
},
{
"title": "浏览器",
"tab": "browser",
"view": [
{
"type": "check",
"label": "无头模式",
"data": "headless"
},
{
"type": "text",
"label": "用户名",
"placeholder": "OpenAI用户名",
"data": "username"
},
{
"type": "password",
"label": "密码",
"placeholder": "OpenAI密码",
"data": "password"
},
{
"type": "text",
"label": "Chrome路径",
"placeholder": "为空使用默认puppeteer的chromium也可以传递自己本机安装的Chrome可执行文件地址提高通过率。",
"data": "chromePath"
},
{
"type": "textarea",
"label": "浏览器UA",
"placeholder": "模拟浏览器UA无特殊需求保持默认即可",
"data": "UA"
},
{
"type": "password",
"label": "验证码平台Token",
"placeholder": "可注册2captcha实现跳过验证码",
"data": "2captchaToken"
}
]
},
{
"title": "必应",
"tab": "bing",
"view": [
{
"type": "select",
"label": "Bing模式",
"data": "toneStyle",
"items": [
{
"label": "均衡",
"value": "balanced"
},
{
"label": "创意",
"value": "creative"
},
{
"label": "精确",
"value": "precise"
},
{
"label": "Sydney(可能存在风险)",
"value": "Sydney"
},
{
"label": "自设定(可能存在风险)",
"value": "Custom"
}
]
},
{
"type": "check",
"label": "是否开启建议回复",
"data": "enableSuggestedResponses"
},
{
"type": "check",
"label": "是否允许机器人读取近期的群聊聊天记录",
"data": "enableGroupContext"
},
{
"type": "number",
"label": "允许机器人读取近期的最多群聊聊天记录条数",
"placeholder": "允许机器人读取近期的最多群聊聊天记录条数。太多可能会超。",
"data": "groupContextLength"
},
{
"type": "text",
"label": "机器人读取聊天记录时的后台prompt",
"data": "groupContextTip"
},
{
"type": "check",
"label": "加强主人认知",
"data": "enforceMaster"
},
{
"type": "check",
"label": "Bing抱歉是否不计入聊天记录",
"data": "sydneyApologyIgnored"
},
{
"type": "check",
"label": "情感显示",
"data": "sydneyMood"
},
{
"type": "textarea",
"label": "Custom的设定",
"placeholder": "仅自设定模式下有效。你可以自己改写设定让Sydney变成你希望的样子",
"data": "sydney"
},
{
"type": "textarea",
"label": "Bing的扩展资料",
"placeholder": "AI将会从你提供的扩展资料中学习到一些知识帮助它更好地回答你的问题",
"data": "sydneyContext"
},
{
"type": "textarea",
"label": "情感模式设定",
"placeholder": "情感显示开启的情况下AI将根据设定在正文中体现情感内容",
"data": "sydneyMoodTip"
},
{
"type": "url",
"label": "sydney反代",
"placeholder": "仅悉尼和自设定模式下有效,用于创建对话(默认不用于正式对话)",
"data": "sydneyReverseProxy"
},
{
"type": "check",
"label": "强制使用sydney反代",
"data": "sydneyReverseProxy"
},
{
"type": "check",
"label": "对话使用sydney反代",
"data": "sydneyForceUseReverse"
},
{
"type": "check",
"label": "允许生成图像等内容",
"data": "enableGenerateContents"
}
]
},
{
"title": "ChatGLM",
"tab": "chatglm",
"view": [
{
"type": "url",
"label": "ChatGLM API地址",
"data": "chatglmBaseUrl"
}
]
},
{
"title": "Slack Claude",
"tab": "claude",
"view": [
{
"type": "password",
"label": "Slack用户Token",
"placeholder": "slackUserToken在OAuth&Permissions页面获取",
"data": "slackUserToken"
},
{
"type": "password",
"label": "Slack Bot Token",
"placeholder": "slackBotUserToken在OAuth&Permissions页面获取",
"data": "slackBotUserToken"
},
{
"type": "text",
"label": "Slack成员id",
"placeholder": "在Slack中点击Claude头像查看详情其中的成员ID复制过来",
"data": "slackClaudeUserId"
},
{
"type": "password",
"label": "Slack签名密钥",
"placeholder": "Signing Secret。在Basic Information页面获取",
"data": "slackSigningSecret"
},
{
"type": "check",
"label": "Claude使用全局设定",
"data": "slackClaudeEnableGlobalPreset"
},
{
"type": "textarea",
"label": "Slack全局设定",
"placeholder": "若启用全局设定,每个人都会默认使用这里的设定",
"data": "slackClaudeGlobalPreset"
}
]
},
{
"title": "星火",
"tab": "xh",
"view": [
{
"type": "password",
"label": "星火Cookie",
"data": "xinghuoToken"
}
]
}
]
}
]
},
{
"id": "DrawSettings",
"title": "绘图设置",
"view": [
{
"type": "check",
"label": "绘图功能开关",
"data": "enableDraw"
},
{
"type": "number",
"label": "绘图CD",
"placeholder": "绘图指令的CD时间",
"data": "drawCD"
},
{
"type": "url",
"label": "emojiAPI地址",
"placeholder": "合成emoji的API地址",
"data": "emojiBaseURL"
}
]
},
{
"id": "GroupSettings",
"title": "群聊设置",
"view": [
{
"type": "textarea",
"label": "打招呼prompt",
"placeholder": "将会用这段文字询问ChatGPT由ChatGPT给出随机的打招呼文字",
"data": "helloPrompt"
},
{
"type": "number",
"label": "打招呼间隔(小时)",
"data": "helloInterval"
},
{
"type": "number",
"label": "打招呼的触发概率(%)",
"placeholder": "设置为100则每次经过间隔时间必定触发主动打招呼事件。",
"data": "helloProbability"
},
{
"type": "select",
"label": "触发方式",
"data": "toggleMode",
"items": [
{
"label": "at",
"value": "at"
},
{
"label": "#chat",
"value": "prefix"
}
]
}
]
},
{
"id": "TimeoutSettings",
"title": "服务超时配置",
"view": [
{
"type": "number",
"label": "默认超时时间",
"placeholder": "各个地方的默认超时时间",
"data": "defaultTimeoutMs"
},
{
"type": "number",
"label": "浏览器超时时间",
"placeholder": "浏览器默认超时,浏览器可能需要更高的超时时间",
"data": "chromeTimeoutMS"
},
{
"type": "number",
"label": "Sydney模式接受首条信息超时时间",
"placeholder": "超过该时间阈值未收到Bing的任何消息则断开本次连接并重试",
"data": "sydneyFirstMessageTimeout"
}
]
},
{
"id": "ReviewSettings",
"title": "违禁内容核查",
"view": [
{
"type": "textarea",
"label": "输出黑名单",
"placeholder": "检查输出结果中是否有违禁词,如果存在黑名单中的违禁词则不输出。英文逗号隔开",
"data": "blockWords"
},
{
"type": "textarea",
"label": "输入黑名单",
"placeholder": "检查输入结果中是否有违禁词,如果存在黑名单中的违禁词则不输出。英文逗号隔开",
"data": "promptBlockWords"
}
]
},
{
"id": "GroupSettings",
"title": "群聊设置",
"view": [
{
"type": "number",
"label": "系统Api服务端口",
"placeholder": "系统Api服务开启的端口号如需外网访问请将系统防火墙和服务器防火墙对应端口开放",
"data": "ServerSettings"
},
{
"type": "text",
"label": "系统服务访问域名",
"placeholder": "使用域名代替公网ip适用于有服务器和域名的朋友避免暴露ip使用",
"data": "serverHost"
},
{
"type": "url",
"label": "云服务API地址",
"placeholder": "目前支持node-silk语音转码、云图片渲染和页面生成缓存",
"data": "cloudTranscode"
},
{
"type": "check",
"label": "允许群获取后台地址",
"data": "groupAdminPage"
}
]
}
]