修改前端代码

This commit is contained in:
qingxu fu 2023-08-31 00:21:24 +08:00
parent 89de49f31e
commit 2d5a1fbc12
11 changed files with 1059 additions and 280 deletions

View File

@ -43,7 +43,11 @@ API_URL_REDIRECT = {}
DEFAULT_WORKER_NUM = 3 DEFAULT_WORKER_NUM = 3
# 对话窗的高度 # 色彩主题,可选 ["Default", "Chuanhu-Small-and-Beautiful", "High-Contrast"]
THEME = "Default"
# 对话窗的高度 仅在LAYOUT="TOP-DOWN"时生效)
CHATBOT_HEIGHT = 1115 CHATBOT_HEIGHT = 1115
@ -69,7 +73,7 @@ MAX_RETRY = 2
# 插件分类默认选项 # 插件分类默认选项
DEFAULT_FN_GROUPS = ['学术优化', '多功能插件', '代码解析'] DEFAULT_FN_GROUPS = ['对话', '编程', '学术']
# 模型选择是 (注意: LLM_MODEL是默认选中的模型, 它*必须*被包含在AVAIL_LLM_MODELS列表中 ) # 模型选择是 (注意: LLM_MODEL是默认选中的模型, 它*必须*被包含在AVAIL_LLM_MODELS列表中 )
@ -103,10 +107,6 @@ CONCURRENT_COUNT = 100
AUTO_CLEAR_TXT = False AUTO_CLEAR_TXT = False
# 色彩主题,可选 ["Default", "Chuanhu-Small-and-Beautiful"]
THEME = "Chuanhu-Small-and-Beautiful"
# 加一个live2d装饰 # 加一个live2d装饰
ADD_WAIFU = False ADD_WAIFU = False

View File

@ -1,16 +1,8 @@
from toolbox import HotReload # HotReload 的意思是热更新,修改函数插件后,不需要重启程序,代码直接生效 from toolbox import HotReload # HotReload 的意思是热更新,修改函数插件后,不需要重启程序,代码直接生效
function_plugins = {}
def get_crazy_functions(): def get_crazy_functions():
get_functions_学术优化() from crazy_functions.读文章写摘要 import 读文章写摘要
get_functions_文档读取()
get_functions_代码解析()
get_functions_多功能插件()
return function_plugins
def get_functions_代码解析():
from crazy_functions.生成函数注释 import 批量生成函数注释 from crazy_functions.生成函数注释 import 批量生成函数注释
from crazy_functions.解析项目源代码 import 解析项目本身 from crazy_functions.解析项目源代码 import 解析项目本身
from crazy_functions.解析项目源代码 import 解析一个Python项目 from crazy_functions.解析项目源代码 import 解析一个Python项目
@ -22,202 +14,423 @@ def get_functions_代码解析():
from crazy_functions.解析项目源代码 import 解析一个前端项目 from crazy_functions.解析项目源代码 import 解析一个前端项目
from crazy_functions.高级功能函数模板 import 高阶功能模板函数 from crazy_functions.高级功能函数模板 import 高阶功能模板函数
from crazy_functions.代码重写为全英文_多线程 import 全项目切换英文 from crazy_functions.代码重写为全英文_多线程 import 全项目切换英文
from crazy_functions.Latex全文润色 import Latex英文润色
from crazy_functions.询问多个大语言模型 import 同时问询
from crazy_functions.解析项目源代码 import 解析一个Lua项目 from crazy_functions.解析项目源代码 import 解析一个Lua项目
from crazy_functions.解析项目源代码 import 解析一个CSharp项目 from crazy_functions.解析项目源代码 import 解析一个CSharp项目
from crazy_functions.总结word文档 import 总结word文档
from crazy_functions.解析JupyterNotebook import 解析ipynb文件 from crazy_functions.解析JupyterNotebook import 解析ipynb文件
from crazy_functions.解析项目源代码 import 解析任意code项目 from crazy_functions.对话历史存档 import 对话历史存档
from crazy_functions.对话历史存档 import 载入对话历史存档
from crazy_functions.对话历史存档 import 删除所有本地对话历史记录
from crazy_functions.辅助功能 import 清除缓存
from crazy_functions.批量Markdown翻译 import Markdown英译中
from crazy_functions.批量总结PDF文档 import 批量总结PDF文档
from crazy_functions.批量翻译PDF文档_多线程 import 批量翻译PDF文档
from crazy_functions.谷歌检索小助手 import 谷歌检索小助手
from crazy_functions.理解PDF文档内容 import 理解PDF文档内容标准文件输入
from crazy_functions.Latex全文润色 import Latex中文润色
from crazy_functions.Latex全文润色 import Latex英文纠错
from crazy_functions.Latex全文翻译 import Latex中译英
from crazy_functions.Latex全文翻译 import Latex英译中
from crazy_functions.批量Markdown翻译 import Markdown中译英 from crazy_functions.批量Markdown翻译 import Markdown中译英
function_plugins['代码解析'] = {
function_plugins = {
"解析整个Python项目": { "解析整个Python项目": {
"Color": "primary", "Group": "编程",
"Color": "stop",
"AsButton": True, "AsButton": True,
"Info": "解析一个Python项目的所有源文件(.py) | 输入参数为路径", "Info": "解析一个Python项目的所有源文件(.py) | 输入参数为路径",
"Function": HotReload(解析一个Python项目) "Function": HotReload(解析一个Python项目)
}, },
"载入对话历史存档(先上传存档或输入路径)": {
"Group": "对话",
"Color": "stop",
"AsButton": False,
"Info": "载入对话历史存档 | 输入参数为路径",
"Function": HotReload(载入对话历史存档)
},
"删除所有本地对话历史记录(谨慎操作)": {
"Group": "对话",
"AsButton": False,
"Info": "删除所有本地对话历史记录,谨慎操作 | 不需要输入参数",
"Function": HotReload(删除所有本地对话历史记录)
},
"清除所有缓存文件(谨慎操作)": {
"Group": "对话",
"Color": "stop",
"AsButton": False, # 加入下拉菜单中
"Info": "清除所有缓存文件,谨慎操作 | 不需要输入参数",
"Function": HotReload(清除缓存)
},
"批量总结Word文档": {
"Group": "学术",
"Color": "stop",
"AsButton": True,
"Info": "批量总结word文档 | 输入参数为路径",
"Function": HotReload(总结word文档)
},
"解析整个C++项目头文件": { "解析整个C++项目头文件": {
"Color": "primary", "Group": "编程",
"Color": "stop",
"AsButton": False, # 加入下拉菜单中 "AsButton": False, # 加入下拉菜单中
"Info": "解析一个C++项目的所有头文件(.h/.hpp) | 输入参数为路径", "Info": "解析一个C++项目的所有头文件(.h/.hpp) | 输入参数为路径",
"Function": HotReload(解析一个C项目的头文件) "Function": HotReload(解析一个C项目的头文件)
}, },
"解析整个C++项目(.cpp/.hpp/.c/.h": { "解析整个C++项目(.cpp/.hpp/.c/.h": {
"Color": "primary", "Group": "编程",
"Color": "stop",
"AsButton": False, # 加入下拉菜单中 "AsButton": False, # 加入下拉菜单中
"Info": "解析一个C++项目的所有源文件(.cpp/.hpp/.c/.h| 输入参数为路径", "Info": "解析一个C++项目的所有源文件(.cpp/.hpp/.c/.h| 输入参数为路径",
"Function": HotReload(解析一个C项目) "Function": HotReload(解析一个C项目)
}, },
"解析整个Go项目": { "解析整个Go项目": {
"Color": "primary", "Group": "编程",
"Color": "stop",
"AsButton": False, # 加入下拉菜单中 "AsButton": False, # 加入下拉菜单中
"Info": "解析一个Go项目的所有源文件 | 输入参数为路径", "Info": "解析一个Go项目的所有源文件 | 输入参数为路径",
"Function": HotReload(解析一个Golang项目) "Function": HotReload(解析一个Golang项目)
}, },
"解析整个Rust项目": { "解析整个Rust项目": {
"Color": "primary", "Group": "编程",
"Color": "stop",
"AsButton": False, # 加入下拉菜单中 "AsButton": False, # 加入下拉菜单中
"Info": "解析一个Rust项目的所有源文件 | 输入参数为路径", "Info": "解析一个Rust项目的所有源文件 | 输入参数为路径",
"Function": HotReload(解析一个Rust项目) "Function": HotReload(解析一个Rust项目)
}, },
"解析整个Java项目": { "解析整个Java项目": {
"Color": "primary", "Group": "编程",
"Color": "stop",
"AsButton": False, # 加入下拉菜单中 "AsButton": False, # 加入下拉菜单中
"Info": "解析一个Java项目的所有源文件 | 输入参数为路径", "Info": "解析一个Java项目的所有源文件 | 输入参数为路径",
"Function": HotReload(解析一个Java项目) "Function": HotReload(解析一个Java项目)
}, },
"解析整个前端项目js,ts,css等": { "解析整个前端项目js,ts,css等": {
"Color": "primary", "Group": "编程",
"Color": "stop",
"AsButton": False, # 加入下拉菜单中 "AsButton": False, # 加入下拉菜单中
"Info": "解析一个前端项目的所有源文件js,ts,css等 | 输入参数为路径", "Info": "解析一个前端项目的所有源文件js,ts,css等 | 输入参数为路径",
"Function": HotReload(解析一个前端项目) "Function": HotReload(解析一个前端项目)
}, },
"解析整个Lua项目": { "解析整个Lua项目": {
"Color": "primary", "Group": "编程",
"Color": "stop",
"AsButton": False, # 加入下拉菜单中 "AsButton": False, # 加入下拉菜单中
"Info": "解析一个Lua项目的所有源文件 | 输入参数为路径", "Info": "解析一个Lua项目的所有源文件 | 输入参数为路径",
"Function": HotReload(解析一个Lua项目) "Function": HotReload(解析一个Lua项目)
}, },
"解析整个CSharp项目": { "解析整个CSharp项目": {
"Color": "primary", "Group": "编程",
"Color": "stop",
"AsButton": False, # 加入下拉菜单中 "AsButton": False, # 加入下拉菜单中
"Info": "解析一个CSharp项目的所有源文件 | 输入参数为路径", "Info": "解析一个CSharp项目的所有源文件 | 输入参数为路径",
"Function": HotReload(解析一个CSharp项目) "Function": HotReload(解析一个CSharp项目)
}, },
"解析Jupyter Notebook文件": { "解析Jupyter Notebook文件": {
"Color": "primary", "Group": "编程",
"Color": "stop",
"AsButton": False, "AsButton": False,
"Info": "解析Jupyter Notebook文件 | 输入参数为路径", "Info": "解析Jupyter Notebook文件 | 输入参数为路径",
"Function": HotReload(解析ipynb文件), "Function": HotReload(解析ipynb文件),
"AdvancedArgs": True, # 调用时唤起高级参数输入区默认False "AdvancedArgs": True, # 调用时唤起高级参数输入区默认False
"ArgsReminder": "若输入0则不解析notebook中的Markdown块", # 高级参数输入区的显示提示 "ArgsReminder": "若输入0则不解析notebook中的Markdown块", # 高级参数输入区的显示提示
}, },
"批量生成函数注释": {
"Color": "primary",
"AsButton": False, # 加入下拉菜单中
"Function": HotReload(批量生成函数注释)
},
"[多线程Demo] 解析此项目本身(源码自译解)": {
"AsButton": False, # 加入下拉菜单中
"Function": HotReload(解析项目本身)
},
"[插件demo] 历史上的今天": {
"AsButton": True,
"Function": HotReload(高阶功能模板函数)
},
"批量Markdown中译英输入路径或上传压缩包": {
"Color": "primary",
"AsButton": False, # 加入下拉菜单中
"Function": HotReload(Markdown中译英)
},
"解析项目源代码(手动指定和筛选源代码文件类型)": {
"Color": "primary",
"AsButton": False,
"AdvancedArgs": True, # 调用时唤起高级参数输入区默认False
"ArgsReminder": "输入时用逗号隔开, *代表通配符, 加了^代表不匹配; 不输入代表全部匹配。例如: \"*.c, ^*.cpp, config.toml, ^*.toml\"",
# 高级参数输入区的显示提示
"Function": HotReload(解析任意code项目)
},
}
def get_functions_文档读取():
from crazy_functions.读文章写摘要 import 读文章写摘要
from crazy_functions.总结word文档 import 总结word文档
from crazy_functions.批量总结PDF文档 import 批量总结PDF文档
from crazy_functions.批量翻译PDF文档_多线程 import 批量翻译PDF文档
from crazy_functions.批量Markdown翻译 import Markdown英译中
from crazy_functions.理解PDF文档内容 import 理解PDF文档内容标准文件输入
from crazy_functions.批量Markdown翻译 import Markdown翻译指定语言
function_plugins['文档读取'] = {
"批量总结PDF文档": {
"Color": "primary",
"AsButton": False, # 加入下拉菜单中
"Function": HotReload(批量总结PDF文档)
},
"理解PDF文档内容 模仿ChatPDF": {
"Color": "primary",
"AsButton": False, # 加入下拉菜单中
"Function": HotReload(理解PDF文档内容标准文件输入)
},
"精准翻译PDF论文": {
"Color": "primary",
"AsButton": True, # 加入下拉菜单中
"Function": HotReload(批量翻译PDF文档)
},
"批量总结Word文档": {
"Color": "primary",
"AsButton": True,
"Info": "批量总结word文档 | 输入参数为路径",
"Function": HotReload(总结word文档)
},
"读Tex论文写摘要": { "读Tex论文写摘要": {
"Color": "primary", "Group": "学术",
"Color": "stop",
"AsButton": True, "AsButton": True,
"Function": HotReload(读文章写摘要) "Function": HotReload(读文章写摘要)
}, },
"翻译README或.MD": { "翻译README或MD": {
"Color": "primary", "Group": "编程",
"Color": "stop",
"AsButton": True, "AsButton": True,
"Info": "将Markdown翻译为中文 | 输入参数为路径或URL", "Info": "将Markdown翻译为中文 | 输入参数为路径或URL",
"Function": HotReload(Markdown英译中) "Function": HotReload(Markdown英译中)
}, },
"翻译Markdown或README支持Github链接": { "翻译Markdown或README支持Github链接": {
"Color": "primary", "Group": "编程",
"Color": "stop",
"AsButton": False, "AsButton": False,
"Function": HotReload(Markdown英译中) "Function": HotReload(Markdown英译中)
}, },
"Markdown翻译手动指定语言": { "批量生成函数注释": {
"Color": "primary", "Group": "编程",
"AsButton": False, "Color": "stop",
"AdvancedArgs": True, "AsButton": False, # 加入下拉菜单中
"ArgsReminder": "请输入要翻译成哪种语言默认为Chinese。", "Function": HotReload(批量生成函数注释)
"Function": HotReload(Markdown翻译指定语言) },
"保存当前的对话": {
"Group": "对话",
"AsButton": True,
"Info": "保存当前的对话 | 不需要输入参数",
"Function": HotReload(对话历史存档)
},
"[多线程Demo]解析此项目本身(源码自译解)": {
"Group": "对话",
"AsButton": False, # 加入下拉菜单中
"Function": HotReload(解析项目本身)
},
"[插件demo]历史上的今天": {
"Group": "对话",
"AsButton": True,
"Function": HotReload(高阶功能模板函数)
},
"精准翻译PDF论文": {
"Group": "学术",
"Color": "stop",
"AsButton": True, # 加入下拉菜单中
"Function": HotReload(批量翻译PDF文档)
},
"询问多个GPT模型": {
"Group": "对话",
"Color": "stop",
"AsButton": True,
"Function": HotReload(同时问询)
},
"批量总结PDF文档": {
"Group": "学术",
"Color": "stop",
"AsButton": False, # 加入下拉菜单中
"Function": HotReload(批量总结PDF文档)
},
"谷歌学术检索助手输入谷歌学术搜索页url": {
"Group": "学术",
"Color": "stop",
"AsButton": False, # 加入下拉菜单中
"Function": HotReload(谷歌检索小助手)
},
"理解PDF文档内容 模仿ChatPDF": {
"Group": "学术",
"Color": "stop",
"AsButton": False, # 加入下拉菜单中
"Function": HotReload(理解PDF文档内容标准文件输入)
},
"英文Latex项目全文润色输入路径或上传压缩包": {
"Group": "学术",
"Color": "stop",
"AsButton": False, # 加入下拉菜单中
"Function": HotReload(Latex英文润色)
}, },
}
def get_functions_学术优化():
from crazy_functions.谷歌检索小助手 import 谷歌检索小助手
from crazy_functions.Latex全文润色 import Latex中文润色
from crazy_functions.Latex全文润色 import Latex英文纠错
from crazy_functions.Latex全文翻译 import Latex中译英
from crazy_functions.Latex全文翻译 import Latex英译中
from crazy_functions.Latex全文润色 import Latex英文润色
from crazy_functions.下载arxiv论文翻译摘要 import 下载arxiv论文并翻译摘要
from crazy_functions.Latex输出PDF结果 import Latex英文纠错加PDF对比
from crazy_functions.Latex输出PDF结果 import Latex翻译中文并重新编译PDF
function_plugins['学术优化'] = {
"英文Latex项目全文纠错输入路径或上传压缩包": { "英文Latex项目全文纠错输入路径或上传压缩包": {
"Color": "primary", "Group": "学术",
"Color": "stop",
"AsButton": False, # 加入下拉菜单中 "AsButton": False, # 加入下拉菜单中
"Function": HotReload(Latex英文纠错) "Function": HotReload(Latex英文纠错)
}, },
"中文Latex项目全文润色输入路径或上传压缩包": { "中文Latex项目全文润色输入路径或上传压缩包": {
"Color": "primary", "Group": "学术",
"Color": "stop",
"AsButton": False, # 加入下拉菜单中 "AsButton": False, # 加入下拉菜单中
"Function": HotReload(Latex中文润色) "Function": HotReload(Latex中文润色)
}, },
"Latex项目全文中译英输入路径或上传压缩包": { "Latex项目全文中译英输入路径或上传压缩包": {
"Color": "primary", "Group": "学术",
"Color": "stop",
"AsButton": False, # 加入下拉菜单中 "AsButton": False, # 加入下拉菜单中
"Function": HotReload(Latex中译英) "Function": HotReload(Latex中译英)
}, },
"Latex项目全文英译中输入路径或上传压缩包": { "Latex项目全文英译中输入路径或上传压缩包": {
"Color": "primary", "Group": "学术",
"Color": "stop",
"AsButton": False, # 加入下拉菜单中 "AsButton": False, # 加入下拉菜单中
"Function": HotReload(Latex英译中) "Function": HotReload(Latex英译中)
}, },
"谷歌学术检索助手输入谷歌学术搜索页url": { "批量Markdown中译英输入路径或上传压缩包": {
"Color": "primary", "Group": "编程",
"Color": "stop",
"AsButton": False, # 加入下拉菜单中 "AsButton": False, # 加入下拉菜单中
"Function": HotReload(谷歌检索小助手) "Function": HotReload(Markdown中译英)
}, },
"英文Latex项目全文润色输入路径或上传压缩包": { }
"Color": "primary",
# -=--=- 尚未充分测试的实验性插件 & 需要额外依赖的插件 -=--=-
try:
from crazy_functions.下载arxiv论文翻译摘要 import 下载arxiv论文并翻译摘要
function_plugins.update({
"一键下载arxiv论文并翻译摘要先在input输入编号如1812.10695": {
"Group": "学术",
"Color": "stop",
"AsButton": False, # 加入下拉菜单中 "AsButton": False, # 加入下拉菜单中
"Function": HotReload(Latex英文润色) "Function": HotReload(下载arxiv论文并翻译摘要)
}
})
except:
print('Load function plugin failed')
try:
from crazy_functions.联网的ChatGPT import 连接网络回答问题
function_plugins.update({
"连接网络回答问题(输入问题后点击该插件,需要访问谷歌)": {
"Group": "对话",
"Color": "stop",
"AsButton": False, # 加入下拉菜单中
"Function": HotReload(连接网络回答问题)
}
})
from crazy_functions.联网的ChatGPT_bing版 import 连接bing搜索回答问题
function_plugins.update({
"连接网络回答问题中文Bing版输入问题后点击该插件": {
"Group": "对话",
"Color": "stop",
"AsButton": False, # 加入下拉菜单中
"Function": HotReload(连接bing搜索回答问题)
}
})
except:
print('Load function plugin failed')
try:
from crazy_functions.解析项目源代码 import 解析任意code项目
function_plugins.update({
"解析项目源代码(手动指定和筛选源代码文件类型)": {
"Group": "编程",
"Color": "stop",
"AsButton": False,
"AdvancedArgs": True, # 调用时唤起高级参数输入区默认False
"ArgsReminder": "输入时用逗号隔开, *代表通配符, 加了^代表不匹配; 不输入代表全部匹配。例如: \"*.c, ^*.cpp, config.toml, ^*.toml\"", # 高级参数输入区的显示提示
"Function": HotReload(解析任意code项目)
}, },
})
except:
print('Load function plugin failed')
try:
from crazy_functions.询问多个大语言模型 import 同时问询_指定模型
function_plugins.update({
"询问多个GPT模型手动指定询问哪些模型": {
"Group": "对话",
"Color": "stop",
"AsButton": False,
"AdvancedArgs": True, # 调用时唤起高级参数输入区默认False
"ArgsReminder": "支持任意数量的llm接口用&符号分隔。例如chatglm&gpt-3.5-turbo&api2d-gpt-4", # 高级参数输入区的显示提示
"Function": HotReload(同时问询_指定模型)
},
})
except:
print('Load function plugin failed')
try:
from crazy_functions.图片生成 import 图片生成
function_plugins.update({
"图片生成先切换模型到openai或api2d": {
"Group": "对话",
"Color": "stop",
"AsButton": False,
"AdvancedArgs": True, # 调用时唤起高级参数输入区默认False
"ArgsReminder": "在这里输入分辨率, 如256x256默认", # 高级参数输入区的显示提示
"Info": "图片生成 | 输入参数字符串,提供图像的内容",
"Function": HotReload(图片生成)
},
})
except:
print('Load function plugin failed')
try:
from crazy_functions.总结音视频 import 总结音视频
function_plugins.update({
"批量总结音视频(输入路径或上传压缩包)": {
"Group": "对话",
"Color": "stop",
"AsButton": False,
"AdvancedArgs": True,
"ArgsReminder": "调用openai api 使用whisper-1模型, 目前支持的格式:mp4, m4a, wav, mpga, mpeg, mp3。此处可以输入解析提示例如解析为简体中文默认",
"Info": "批量总结音频或视频 | 输入参数为路径",
"Function": HotReload(总结音视频)
}
})
except:
print('Load function plugin failed')
try:
from crazy_functions.数学动画生成manim import 动画生成
function_plugins.update({
"数学动画生成Manim": {
"Group": "对话",
"Color": "stop",
"AsButton": False,
"Function": HotReload(动画生成)
}
})
except:
print('Load function plugin failed')
try:
from crazy_functions.批量Markdown翻译 import Markdown翻译指定语言
function_plugins.update({
"Markdown翻译手动指定语言": {
"Group": "编程",
"Color": "stop",
"AsButton": False,
"AdvancedArgs": True,
"ArgsReminder": "请输入要翻译成哪种语言默认为Chinese。",
"Function": HotReload(Markdown翻译指定语言)
}
})
except:
print('Load function plugin failed')
try:
from crazy_functions.Langchain知识库 import 知识库问答
function_plugins.update({
"构建知识库(请先上传文件素材)": {
"Group": "对话",
"Color": "stop",
"AsButton": False,
"AdvancedArgs": True,
"ArgsReminder": "待注入的知识库名称id, 默认为default",
"Function": HotReload(知识库问答)
}
})
except:
print('Load function plugin failed')
try:
from crazy_functions.Langchain知识库 import 读取知识库作答
function_plugins.update({
"知识库问答": {
"Group": "对话",
"Color": "stop",
"AsButton": False,
"AdvancedArgs": True,
"ArgsReminder": "待提取的知识库名称id, 默认为default, 您需要首先调用构建知识库",
"Function": HotReload(读取知识库作答)
}
})
except:
print('Load function plugin failed')
try:
from crazy_functions.交互功能函数模板 import 交互功能模板函数
function_plugins.update({
"交互功能模板函数": {
"Group": "对话",
"Color": "stop",
"AsButton": False,
"Function": HotReload(交互功能模板函数)
}
})
except:
print('Load function plugin failed')
try:
from crazy_functions.Latex输出PDF结果 import Latex英文纠错加PDF对比
function_plugins.update({
"Latex英文纠错+高亮修正位置 [需Latex]": {
"Group": "学术",
"Color": "stop",
"AsButton": False,
"AdvancedArgs": True,
"ArgsReminder": "如果有必要, 请在此处追加更细致的矫错指令(使用英文)。",
"Function": HotReload(Latex英文纠错加PDF对比)
}
})
from crazy_functions.Latex输出PDF结果 import Latex翻译中文并重新编译PDF
function_plugins.update({
"Arixv论文精细翻译输入arxivID[需Latex]": { "Arixv论文精细翻译输入arxivID[需Latex]": {
"Color": "primary", "Group": "学术",
"Color": "stop",
"AsButton": False, "AsButton": False,
"AdvancedArgs": True, "AdvancedArgs": True,
"ArgsReminder": "ArgsReminder":
@ -225,142 +438,58 @@ def get_functions_学术优化():
"例如当单词'agent'翻译不准确时, 请尝试把以下指令复制到高级参数区: " + "例如当单词'agent'翻译不准确时, 请尝试把以下指令复制到高级参数区: " +
'If the term "agent" is used in this section, it should be translated to "智能体". ', 'If the term "agent" is used in this section, it should be translated to "智能体". ',
"Function": HotReload(Latex翻译中文并重新编译PDF) "Function": HotReload(Latex翻译中文并重新编译PDF)
},
"Latex英文纠错+高亮修正位置 [需Latex]": {
"Color": "primary",
"AsButton": False,
"AdvancedArgs": True,
"ArgsReminder": "如果有必要, 请在此处追加更细致的矫错指令(使用英文)。",
"Function": HotReload(Latex英文纠错加PDF对比)
},
}
function_plugins['学术优化'].update({
"一键下载arxiv论文并翻译摘要先在input输入编号如1812.10695": {
"Color": "primary",
"AsButton": False, # 加入下拉菜单中
"Function": HotReload(下载arxiv论文并翻译摘要)
} }
}) })
function_plugins.update({
"本地Latex论文精细翻译上传Latex项目[需Latex]": {
"Group": "学术",
"Color": "stop",
"AsButton": False,
"AdvancedArgs": True,
"ArgsReminder":
"如果有必要, 请在此处给出自定义翻译命令, 解决部分词汇翻译不准确的问题。 " +
"例如当单词'agent'翻译不准确时, 请尝试把以下指令复制到高级参数区: " +
'If the term "agent" is used in this section, it should be translated to "智能体". ',
"Function": HotReload(Latex翻译中文并重新编译PDF)
}
})
except:
print('Load function plugin failed')
def get_functions_多功能插件(): try:
from crazy_functions.询问多个大语言模型 import 同时问询 from toolbox import get_conf
from crazy_functions.对话历史存档 import 对话历史存档 ENABLE_AUDIO, = get_conf('ENABLE_AUDIO')
from crazy_functions.对话历史存档 import 载入对话历史存档 if ENABLE_AUDIO:
from crazy_functions.对话历史存档 import 删除所有本地对话历史记录
from crazy_functions.辅助功能 import 清除缓存
from crazy_functions.联网的ChatGPT import 连接网络回答问题
from crazy_functions.联网的ChatGPT_bing版 import 连接bing搜索回答问题
from crazy_functions.询问多个大语言模型 import 同时问询_指定模型
from crazy_functions.图片生成 import 图片生成
from crazy_functions.总结音视频 import 总结音视频
from crazy_functions.数学动画生成manim import 动画生成
from crazy_functions.Langchain知识库 import 知识库问答
from crazy_functions.Langchain知识库 import 读取知识库作答
from crazy_functions.交互功能函数模板 import 交互功能模板函数
from crazy_functions.语音助手 import 语音助手 from crazy_functions.语音助手 import 语音助手
from crazy_functions.虚空终端 import 自动终端 function_plugins.update({
function_plugins['多功能插件'] = {
"询问多个GPT模型": {
"Color": "primary",
"AsButton": True,
"Function": HotReload(同时问询)
},
"保存当前的对话": {
"AsButton": True,
"Info": "保存当前的对话 | 不需要输入参数",
"Function": HotReload(对话历史存档)
},
"载入对话历史存档(先上传存档或输入路径)": {
"Color": "primary",
"AsButton": False,
"Info": "载入对话历史存档 | 输入参数为路径",
"Function": HotReload(载入对话历史存档)
},
"删除所有本地对话历史记录(谨慎操作)": {
"AsButton": False,
"Info": "删除所有本地对话历史记录,谨慎操作 | 不需要输入参数",
"Function": HotReload(删除所有本地对话历史记录)
},
"清除所有缓存文件(谨慎操作)": {
"Color": "primary",
"AsButton": False, # 加入下拉菜单中
"Info": "清除所有缓存文件,谨慎操作 | 不需要输入参数",
"Function": HotReload(清除缓存)
},
"连接网络回答问题(输入问题后点击该插件,需要访问谷歌)": {
"Color": "primary",
"AsButton": False, # 加入下拉菜单中
"Function": HotReload(连接网络回答问题)
},
"连接网络回答问题中文Bing版输入问题后点击该插件": {
"Color": "primary",
"AsButton": False, # 加入下拉菜单中
"Function": HotReload(连接bing搜索回答问题)
},
"询问多个GPT模型手动指定询问哪些模型": {
"Color": "primary",
"AsButton": False,
"AdvancedArgs": True, # 调用时唤起高级参数输入区默认False
"ArgsReminder": "支持任意数量的llm接口用&符号分隔。例如chatglm&gpt-3.5-turbo&api2d-gpt-4", # 高级参数输入区的显示提示
"Function": HotReload(同时问询_指定模型)
},
"图片生成先切换模型到openai或api2d": {
"Color": "primary",
"AsButton": False,
"AdvancedArgs": True, # 调用时唤起高级参数输入区默认False
"ArgsReminder": "在这里输入分辨率, 如256x256默认", # 高级参数输入区的显示提示
"Info": "图片生成 | 输入参数字符串,提供图像的内容",
"Function": HotReload(图片生成)
},
"批量总结音视频(输入路径或上传压缩包)": {
"Color": "primary",
"AsButton": False,
"AdvancedArgs": True,
"ArgsReminder": "调用openai api 使用whisper-1模型, 目前支持的格式:mp4, m4a, wav, mpga, mpeg, mp3。此处可以输入解析提示例如解析为简体中文默认",
"Info": "批量总结音频或视频 | 输入参数为路径",
"Function": HotReload(总结音视频)
},
"数学动画生成Manim": {
"Color": "primary",
"AsButton": False,
"Function": HotReload(动画生成)
},
"构建知识库(请先上传文件素材)": {
"Color": "primary",
"AsButton": False,
"AdvancedArgs": True,
"ArgsReminder": "待注入的知识库名称id, 默认为default",
"Function": HotReload(知识库问答)
},
"知识库问答": {
"Color": "primary",
"AsButton": False,
"AdvancedArgs": True,
"ArgsReminder": "待提取的知识库名称id, 默认为default, 您需要首先调用构建知识库",
"Function": HotReload(读取知识库作答)
},
"交互功能模板函数": {
"Color": "primary",
"AsButton": False,
"Function": HotReload(交互功能模板函数)
},
"实时音频采集": { "实时音频采集": {
"Color": "primary", "Group": "对话",
"Color": "stop",
"AsButton": True, "AsButton": True,
"Function": HotReload(语音助手) "Function": HotReload(语音助手)
}, }
})
except:
print('Load function plugin failed')
try:
from crazy_functions.虚空终端 import 自动终端
function_plugins.update({
"自动终端": { "自动终端": {
"Color": "primary", "Group": "对话",
"Color": "stop",
"AsButton": False, "AsButton": False,
"Function": HotReload(自动终端) "Function": HotReload(自动终端)
} }
} })
except:
print('Load function plugin failed')
# try: # try:
# from crazy_functions.chatglm微调工具 import 微调数据集生成 # from crazy_functions.chatglm微调工具 import 微调数据集生成
# function_plugins['多功能'].update({ # function_plugins.update({
# "黑盒模型学习: 微调数据集生成 (先上传数据集)": { # "黑盒模型学习: 微调数据集生成 (先上传数据集)": {
# "Color": "primary", # "Color": "stop",
# "AsButton": False, # "AsButton": False,
# "AdvancedArgs": True, # "AdvancedArgs": True,
# "ArgsReminder": "针对数据集输入(如 绿帽子*深蓝色衬衫*黑色运动裤)给出指令,例如您可以将以下命令复制到下方: --llm_to_learn=azure-gpt-3.5 --prompt_prefix='根据下面的服装类型提示想象一个穿着者对这个人外貌、身处的环境、内心世界、过去经历进行描写。要求100字以内用第二人称。' --system_prompt=''", # "ArgsReminder": "针对数据集输入(如 绿帽子*深蓝色衬衫*黑色运动裤)给出指令,例如您可以将以下命令复制到下方: --llm_to_learn=azure-gpt-3.5 --prompt_prefix='根据下面的服装类型提示想象一个穿着者对这个人外貌、身处的环境、内心世界、过去经历进行描写。要求100字以内用第二人称。' --system_prompt=''",
@ -370,3 +499,13 @@ def get_functions_多功能插件():
# except: # except:
# print('Load function plugin failed') # print('Load function plugin failed')
regroupped_functions = {}
for name, function_meta in function_plugins.items():
if "Group" in function_meta:
groups = function_meta["Group"].split('|')
else:
groups = ['对话']
for gruop in groups:
regroupped_functions[gruop] = regroupped_functions.get(gruop, {})
regroupped_functions[gruop].update({name: function_meta})
return regroupped_functions

View File

@ -89,13 +89,15 @@ def main():
if ("Visible" in functional[k]) and (not functional[k]["Visible"]): continue if ("Visible" in functional[k]) and (not functional[k]["Visible"]): continue
variant = functional[k]["Color"] if "Color" in functional[k] else "secondary" variant = functional[k]["Color"] if "Color" in functional[k] else "secondary"
functional[k]["Button"] = gr.Button(k, variant=variant) functional[k]["Button"] = gr.Button(k, variant=variant)
functional[k]["Button"].style(size="sm")
with gr.Accordion("函数插件区", open=True, elem_id="plugin-panel") as area_crazy_fn: with gr.Accordion("函数插件区", open=True, elem_id="plugin-panel") as area_crazy_fn:
with gr.Row(): with gr.Row():
gr.Markdown("插件可读取“输入区”文本/路径作为参数(上传文件自动修正路径)") gr.Markdown("插件可读取“输入区”文本/路径作为参数(上传文件自动修正路径)")
plugin_dropdown = gr.Dropdown(choices=crazy_classification, label='选择插件分类', with gr.Row(elem_id="input-plugin-group"):
plugin_dropdown = gr.Dropdown(choices=crazy_classification, label='',
value=DEFAULT_FN_GROUPS, value=DEFAULT_FN_GROUPS,
multiselect=True, interactive=True, multiselect=True, interactive=True,
elem_classes='normal_mut_select' elem_classes='normal_mut_select',
).style(container=False) ).style(container=False)
with gr.Row(): with gr.Row():
for role in crazy_fns_role: for role in crazy_fns_role:
@ -138,7 +140,6 @@ def main():
max_length_sl = gr.Slider(minimum=256, maximum=8192, value=4096, step=1, interactive=True, label="Local LLM MaxLength",) max_length_sl = gr.Slider(minimum=256, maximum=8192, value=4096, step=1, interactive=True, label="Local LLM MaxLength",)
checkboxes = gr.CheckboxGroup(["基础功能区", "函数插件区", "底部输入区", "输入清除键", "插件参数区"], value=["基础功能区", "函数插件区"], label="显示/隐藏功能区") checkboxes = gr.CheckboxGroup(["基础功能区", "函数插件区", "底部输入区", "输入清除键", "插件参数区"], value=["基础功能区", "函数插件区"], label="显示/隐藏功能区")
md_dropdown = gr.Dropdown(AVAIL_LLM_MODELS, value=LLM_MODEL, label="更换LLM模型/请求源").style(container=False) md_dropdown = gr.Dropdown(AVAIL_LLM_MODELS, value=LLM_MODEL, label="更换LLM模型/请求源").style(container=False)
gr.Markdown(description) gr.Markdown(description)
with gr.Accordion("备选输入区", open=True, visible=False, elem_id="input-panel2") as area_input_secondary: with gr.Accordion("备选输入区", open=True, visible=False, elem_id="input-panel2") as area_input_secondary:
with gr.Row(): with gr.Row():

15
themes/common.css Normal file
View File

@ -0,0 +1,15 @@
/* hide remove all button */
.remove-all.svelte-aqlk7e.svelte-aqlk7e.svelte-aqlk7e {
visibility: hidden;
}
/* hide selector border */
#input-plugin-group .wrap.svelte-aqlk7e.svelte-aqlk7e.svelte-aqlk7e {
border: 0px;
box-shadow: none;
}
/* hide selector label */
#input-plugin-group .svelte-1gfkn6j {
visibility: hidden;
}

View File

@ -39,7 +39,10 @@ function get_elements() {
const panel4 = document.querySelector('#interact-panel'); const panel4 = document.querySelector('#interact-panel');
const panel5 = document.querySelector('#input-panel2'); const panel5 = document.querySelector('#input-panel2');
const panel_active = document.querySelector('#state-panel'); const panel_active = document.querySelector('#state-panel');
var panel_height_target = (20-panel_active.offsetHeight) + panel1.offsetHeight + panel2.offsetHeight + panel3.offsetHeight + panel4.offsetHeight + panel5.offsetHeight + 21; // 25.3 是chatbot的label高度, 16 是右侧的gap
var panel_height_target = panel1.offsetHeight + panel2.offsetHeight + panel3.offsetHeight + panel4.offsetHeight + panel5.offsetHeight - 25.5 + 16*3;
// 禁止动态的state-panel高度影响
panel_height_target = panel_height_target + (21-panel_active.offsetHeight)
var panel_height_target = parseInt(panel_height_target); var panel_height_target = parseInt(panel_height_target);
var chatbot_height = chatbot.style.height; var chatbot_height = chatbot.style.height;
var chatbot_height = parseInt(chatbot_height); var chatbot_height = parseInt(chatbot_height);

482
themes/contrast.css Normal file
View File

@ -0,0 +1,482 @@
:root {
--body-text-color: #FFFFFF;
--link-text-color: #FFFFFF;
--link-text-color-active: #FFFFFF;
--link-text-color-hover: #FFFFFF;
--link-text-color-visited: #FFFFFF;
--body-text-color-subdued: #FFFFFF;
--block-info-text-color: #FFFFFF;
--block-label-text-color: #FFFFFF;
--block-title-text-color: #FFFFFF;
--checkbox-label-text-color: #FFFFFF;
--checkbox-label-text-color-selected: #FFFFFF;
--error-text-color: #FFFFFF;
--button-cancel-text-color: #FFFFFF;
--button-cancel-text-color-hover: #FFFFFF;
--button-primary-text-color: #FFFFFF;
--button-primary-text-color-hover: #FFFFFF;
--button-secondary-text-color: #FFFFFF;
--button-secondary-text-color-hover: #FFFFFF;
--border-bottom-right-radius: 0px;
--border-bottom-left-radius: 0px;
--border-top-right-radius: 0px;
--border-top-left-radius: 0px;
--block-radius: 0px;
--button-large-radius: 0px;
--button-small-radius: 0px;
--block-background-fill: #000000;
--border-color-accent: #3cff00;
--border-color-primary: #3cff00;
--block-border-color: #3cff00;
--block-label-border-color: #3cff00;
--block-title-border-color: #3cff00;
--panel-border-color: #3cff00;
--checkbox-border-color: #3cff00;
--checkbox-border-color-focus: #3cff00;
--checkbox-border-color-hover: #3cff00;
--checkbox-border-color-selected: #3cff00;
--checkbox-label-border-color: #3cff00;
--checkbox-label-border-color-hover: #3cff00;
--error-border-color: #3cff00;
--input-border-color: #3cff00;
--input-border-color-focus: #3cff00;
--input-border-color-hover: #3cff00;
--table-border-color: #3cff00;
--button-cancel-border-color: #3cff00;
--button-cancel-border-color-hover: #3cff00;
--button-primary-border-color: #3cff00;
--button-primary-border-color-hover: #3cff00;
--button-secondary-border-color: #3cff00;
--button-secondary-border-color-hover: #3cff00;
--body-background-fill: #000000;
--background-fill-primary: #000000;
--background-fill-secondary: #000000;
--block-background-fill: #000000;
--block-label-background-fill: #000000;
--block-title-background-fill: #000000;
--panel-background-fill: #000000;
--chatbot-code-background-color: #000000;
--checkbox-background-color: #000000;
--checkbox-background-color-focus: #000000;
--checkbox-background-color-hover: #000000;
--checkbox-background-color-selected: #000000;
--checkbox-label-background-fill: #000000;
--checkbox-label-background-fill-hover: #000000;
--checkbox-label-background-fill-selected: #000000;
--error-background-fill: #000000;
--input-background-fill: #000000;
--input-background-fill-focus: #000000;
--input-background-fill-hover: #000000;
--stat-background-fill: #000000;
--table-even-background-fill: #000000;
--table-odd-background-fill: #000000;
--button-cancel-background-fill: #000000;
--button-cancel-background-fill-hover: #000000;
--button-primary-background-fill: #000000;
--button-primary-background-fill-hover: #000000;
--button-secondary-background-fill: #000000;
--button-secondary-background-fill-hover: #000000;
--color-accent-soft: #000000;
}
.dark {
--body-text-color: #FFFFFF;
--link-text-color: #FFFFFF;
--link-text-color-active: #FFFFFF;
--link-text-color-hover: #FFFFFF;
--link-text-color-visited: #FFFFFF;
--body-text-color-subdued: #FFFFFF;
--block-info-text-color: #FFFFFF;
--block-label-text-color: #FFFFFF;
--block-title-text-color: #FFFFFF;
--checkbox-label-text-color: #FFFFFF;
--checkbox-label-text-color-selected: #FFFFFF;
--error-text-color: #FFFFFF;
--button-cancel-text-color: #FFFFFF;
--button-cancel-text-color-hover: #FFFFFF;
--button-primary-text-color: #FFFFFF;
--button-primary-text-color-hover: #FFFFFF;
--button-secondary-text-color: #FFFFFF;
--button-secondary-text-color-hover: #FFFFFF;
--border-bottom-right-radius: 0px;
--border-bottom-left-radius: 0px;
--border-top-right-radius: 0px;
--border-top-left-radius: 0px;
--block-radius: 0px;
--button-large-radius: 0px;
--button-small-radius: 0px;
--block-background-fill: #000000;
--border-color-accent: #3cff00;
--border-color-primary: #3cff00;
--block-border-color: #3cff00;
--block-label-border-color: #3cff00;
--block-title-border-color: #3cff00;
--panel-border-color: #3cff00;
--checkbox-border-color: #3cff00;
--checkbox-border-color-focus: #3cff00;
--checkbox-border-color-hover: #3cff00;
--checkbox-border-color-selected: #3cff00;
--checkbox-label-border-color: #3cff00;
--checkbox-label-border-color-hover: #3cff00;
--error-border-color: #3cff00;
--input-border-color: #3cff00;
--input-border-color-focus: #3cff00;
--input-border-color-hover: #3cff00;
--table-border-color: #3cff00;
--button-cancel-border-color: #3cff00;
--button-cancel-border-color-hover: #3cff00;
--button-primary-border-color: #3cff00;
--button-primary-border-color-hover: #3cff00;
--button-secondary-border-color: #3cff00;
--button-secondary-border-color-hover: #3cff00;
--body-background-fill: #000000;
--background-fill-primary: #000000;
--background-fill-secondary: #000000;
--block-background-fill: #000000;
--block-label-background-fill: #000000;
--block-title-background-fill: #000000;
--panel-background-fill: #000000;
--chatbot-code-background-color: #000000;
--checkbox-background-color: #000000;
--checkbox-background-color-focus: #000000;
--checkbox-background-color-hover: #000000;
--checkbox-background-color-selected: #000000;
--checkbox-label-background-fill: #000000;
--checkbox-label-background-fill-hover: #000000;
--checkbox-label-background-fill-selected: #000000;
--error-background-fill: #000000;
--input-background-fill: #000000;
--input-background-fill-focus: #000000;
--input-background-fill-hover: #000000;
--stat-background-fill: #000000;
--table-even-background-fill: #000000;
--table-odd-background-fill: #000000;
--button-cancel-background-fill: #000000;
--button-cancel-background-fill-hover: #000000;
--button-primary-background-fill: #000000;
--button-primary-background-fill-hover: #000000;
--button-secondary-background-fill: #000000;
--button-secondary-background-fill-hover: #000000;
--color-accent-soft: #000000;
}
.block.svelte-mppz8v {
border-color: #3cff00;
}
/* 插件下拉菜单 */
#plugin-panel .wrap.svelte-aqlk7e.svelte-aqlk7e.svelte-aqlk7e {
box-shadow: var(--input-shadow);
border: var(--input-border-width) dashed var(--border-color-primary);
border-radius: 4px;
}
#plugin-panel .dropdown-arrow.svelte-p5edak {
width: 50px;
}
#plugin-panel input.svelte-aqlk7e.svelte-aqlk7e.svelte-aqlk7e {
padding-left: 5px;
}
.root{
border-bottom-right-radius: 0px;
border-bottom-left-radius: 0px;
border-top-right-radius: 0px;
border-top-left-radius: 0px;
}
/* 小按钮 */
.sm.svelte-1ipelgc {
font-family: "Microsoft YaHei UI", "Helvetica", "Microsoft YaHei", "ui-sans-serif", "sans-serif", "system-ui";
--button-small-text-weight: 600;
--button-small-text-size: 16px;
border-bottom-right-radius: 0px;
border-bottom-left-radius: 0px;
border-top-right-radius: 0px;
border-top-left-radius: 0px;
}
#plugin-panel .sm.svelte-1ipelgc {
font-family: "Microsoft YaHei UI", "Helvetica", "Microsoft YaHei", "ui-sans-serif", "sans-serif", "system-ui";
--button-small-text-weight: 400;
--button-small-text-size: 14px;
border-bottom-right-radius: 0px;
border-bottom-left-radius: 0px;
border-top-right-radius: 0px;
border-top-left-radius: 0px;
}
.wrap-inner.svelte-aqlk7e.svelte-aqlk7e.svelte-aqlk7e {
padding: 0%;
}
.markdown-body table {
margin: 1em 0;
border-collapse: collapse;
empty-cells: show;
}
.markdown-body th, .markdown-body td {
border: 1.2px solid var(--border-color-primary);
padding: 5px;
}
.markdown-body thead {
background-color: rgb(0, 0, 0);
}
.markdown-body thead th {
padding: .5em .2em;
}
.normal_mut_select .svelte-1gfkn6j {
float: left;
width: auto;
line-height: 260% !important;
}
.markdown-body ol, .markdown-body ul {
padding-inline-start: 2em !important;
}
/* chat box. */
[class *= "message"] {
border-radius: var(--radius-xl) !important;
/* padding: var(--spacing-xl) !important; */
/* font-size: var(--text-md) !important; */
/* line-height: var(--line-md) !important; */
/* min-height: calc(var(--text-md)*var(--line-md) + 2*var(--spacing-xl)); */
/* min-width: calc(var(--text-md)*var(--line-md) + 2*var(--spacing-xl)); */
}
[data-testid = "bot"] {
max-width: 95%;
/* width: auto !important; */
border-bottom-left-radius: 0 !important;
}
[data-testid = "user"] {
max-width: 100%;
/* width: auto !important; */
border-bottom-right-radius: 0 !important;
}
/* linein code block. */
.markdown-body code {
display: inline;
white-space: break-spaces;
border-radius: 6px;
margin: 0 2px 0 2px;
padding: .2em .4em .1em .4em;
background-color: rgba(0, 0, 0, 0.95);
color: #c9d1d9;
}
.dark .markdown-body code {
display: inline;
white-space: break-spaces;
border-radius: 6px;
margin: 0 2px 0 2px;
padding: .2em .4em .1em .4em;
background-color: rgba(0,0,0,0.2);
}
/* code block css */
.markdown-body pre code {
display: block;
overflow: auto;
white-space: pre;
background-color: rgba(0, 0, 0, 0.95);
border-radius: 10px;
padding: 1em;
margin: 1em 2em 1em 0.5em;
}
.dark .markdown-body pre code {
display: block;
overflow: auto;
white-space: pre;
background-color: rgba(0,0,0,0.2);
border-radius: 10px;
padding: 1em;
margin: 1em 2em 1em 0.5em;
}
/* .mic-wrap.svelte-1thnwz {
} */
.block.svelte-mppz8v > .mic-wrap.svelte-1thnwz{
justify-content: center;
display: flex;
padding: 0;
}
.codehilite .hll { background-color: #6e7681 }
.codehilite .c { color: #8b949e; font-style: italic } /* Comment */
.codehilite .err { color: #f85149 } /* Error */
.codehilite .esc { color: #c9d1d9 } /* Escape */
.codehilite .g { color: #c9d1d9 } /* Generic */
.codehilite .k { color: #ff7b72 } /* Keyword */
.codehilite .l { color: #a5d6ff } /* Literal */
.codehilite .n { color: #c9d1d9 } /* Name */
.codehilite .o { color: #ff7b72; font-weight: bold } /* Operator */
.codehilite .x { color: #c9d1d9 } /* Other */
.codehilite .p { color: #c9d1d9 } /* Punctuation */
.codehilite .ch { color: #8b949e; font-style: italic } /* Comment.Hashbang */
.codehilite .cm { color: #8b949e; font-style: italic } /* Comment.Multiline */
.codehilite .cp { color: #8b949e; font-weight: bold; font-style: italic } /* Comment.Preproc */
.codehilite .cpf { color: #8b949e; font-style: italic } /* Comment.PreprocFile */
.codehilite .c1 { color: #8b949e; font-style: italic } /* Comment.Single */
.codehilite .cs { color: #8b949e; font-weight: bold; font-style: italic } /* Comment.Special */
.codehilite .gd { color: #ffa198; background-color: #490202 } /* Generic.Deleted */
.codehilite .ge { color: #c9d1d9; font-style: italic } /* Generic.Emph */
.codehilite .gr { color: #ffa198 } /* Generic.Error */
.codehilite .gh { color: #79c0ff; font-weight: bold } /* Generic.Heading */
.codehilite .gi { color: #56d364; background-color: #0f5323 } /* Generic.Inserted */
.codehilite .go { color: #8b949e } /* Generic.Output */
.codehilite .gp { color: #8b949e } /* Generic.Prompt */
.codehilite .gs { color: #c9d1d9; font-weight: bold } /* Generic.Strong */
.codehilite .gu { color: #79c0ff } /* Generic.Subheading */
.codehilite .gt { color: #ff7b72 } /* Generic.Traceback */
.codehilite .g-Underline { color: #c9d1d9; text-decoration: underline } /* Generic.Underline */
.codehilite .kc { color: #79c0ff } /* Keyword.Constant */
.codehilite .kd { color: #ff7b72 } /* Keyword.Declaration */
.codehilite .kn { color: #ff7b72 } /* Keyword.Namespace */
.codehilite .kp { color: #79c0ff } /* Keyword.Pseudo */
.codehilite .kr { color: #ff7b72 } /* Keyword.Reserved */
.codehilite .kt { color: #ff7b72 } /* Keyword.Type */
.codehilite .ld { color: #79c0ff } /* Literal.Date */
.codehilite .m { color: #a5d6ff } /* Literal.Number */
.codehilite .s { color: #a5d6ff } /* Literal.String */
.codehilite .na { color: #c9d1d9 } /* Name.Attribute */
.codehilite .nb { color: #c9d1d9 } /* Name.Builtin */
.codehilite .nc { color: #f0883e; font-weight: bold } /* Name.Class */
.codehilite .no { color: #79c0ff; font-weight: bold } /* Name.Constant */
.codehilite .nd { color: #d2a8ff; font-weight: bold } /* Name.Decorator */
.codehilite .ni { color: #ffa657 } /* Name.Entity */
.codehilite .ne { color: #f0883e; font-weight: bold } /* Name.Exception */
.codehilite .nf { color: #d2a8ff; font-weight: bold } /* Name.Function */
.codehilite .nl { color: #79c0ff; font-weight: bold } /* Name.Label */
.codehilite .nn { color: #ff7b72 } /* Name.Namespace */
.codehilite .nx { color: #c9d1d9 } /* Name.Other */
.codehilite .py { color: #79c0ff } /* Name.Property */
.codehilite .nt { color: #7ee787 } /* Name.Tag */
.codehilite .nv { color: #79c0ff } /* Name.Variable */
.codehilite .ow { color: #ff7b72; font-weight: bold } /* Operator.Word */
.codehilite .pm { color: #c9d1d9 } /* Punctuation.Marker */
.codehilite .w { color: #6e7681 } /* Text.Whitespace */
.codehilite .mb { color: #a5d6ff } /* Literal.Number.Bin */
.codehilite .mf { color: #a5d6ff } /* Literal.Number.Float */
.codehilite .mh { color: #a5d6ff } /* Literal.Number.Hex */
.codehilite .mi { color: #a5d6ff } /* Literal.Number.Integer */
.codehilite .mo { color: #a5d6ff } /* Literal.Number.Oct */
.codehilite .sa { color: #79c0ff } /* Literal.String.Affix */
.codehilite .sb { color: #a5d6ff } /* Literal.String.Backtick */
.codehilite .sc { color: #a5d6ff } /* Literal.String.Char */
.codehilite .dl { color: #79c0ff } /* Literal.String.Delimiter */
.codehilite .sd { color: #a5d6ff } /* Literal.String.Doc */
.codehilite .s2 { color: #a5d6ff } /* Literal.String.Double */
.codehilite .se { color: #79c0ff } /* Literal.String.Escape */
.codehilite .sh { color: #79c0ff } /* Literal.String.Heredoc */
.codehilite .si { color: #a5d6ff } /* Literal.String.Interpol */
.codehilite .sx { color: #a5d6ff } /* Literal.String.Other */
.codehilite .sr { color: #79c0ff } /* Literal.String.Regex */
.codehilite .s1 { color: #a5d6ff } /* Literal.String.Single */
.codehilite .ss { color: #a5d6ff } /* Literal.String.Symbol */
.codehilite .bp { color: #c9d1d9 } /* Name.Builtin.Pseudo */
.codehilite .fm { color: #d2a8ff; font-weight: bold } /* Name.Function.Magic */
.codehilite .vc { color: #79c0ff } /* Name.Variable.Class */
.codehilite .vg { color: #79c0ff } /* Name.Variable.Global */
.codehilite .vi { color: #79c0ff } /* Name.Variable.Instance */
.codehilite .vm { color: #79c0ff } /* Name.Variable.Magic */
.codehilite .il { color: #a5d6ff } /* Literal.Number.Integer.Long */
.dark .codehilite .hll { background-color: #2C3B41 }
.dark .codehilite .c { color: #79d618; font-style: italic } /* Comment */
.dark .codehilite .err { color: #FF5370 } /* Error */
.dark .codehilite .esc { color: #89DDFF } /* Escape */
.dark .codehilite .g { color: #EEFFFF } /* Generic */
.dark .codehilite .k { color: #BB80B3 } /* Keyword */
.dark .codehilite .l { color: #C3E88D } /* Literal */
.dark .codehilite .n { color: #EEFFFF } /* Name */
.dark .codehilite .o { color: #89DDFF } /* Operator */
.dark .codehilite .p { color: #89DDFF } /* Punctuation */
.dark .codehilite .ch { color: #79d618; font-style: italic } /* Comment.Hashbang */
.dark .codehilite .cm { color: #79d618; font-style: italic } /* Comment.Multiline */
.dark .codehilite .cp { color: #79d618; font-style: italic } /* Comment.Preproc */
.dark .codehilite .cpf { color: #79d618; font-style: italic } /* Comment.PreprocFile */
.dark .codehilite .c1 { color: #79d618; font-style: italic } /* Comment.Single */
.dark .codehilite .cs { color: #79d618; font-style: italic } /* Comment.Special */
.dark .codehilite .gd { color: #FF5370 } /* Generic.Deleted */
.dark .codehilite .ge { color: #89DDFF } /* Generic.Emph */
.dark .codehilite .gr { color: #FF5370 } /* Generic.Error */
.dark .codehilite .gh { color: #C3E88D } /* Generic.Heading */
.dark .codehilite .gi { color: #C3E88D } /* Generic.Inserted */
.dark .codehilite .go { color: #79d618 } /* Generic.Output */
.dark .codehilite .gp { color: #FFCB6B } /* Generic.Prompt */
.dark .codehilite .gs { color: #FF5370 } /* Generic.Strong */
.dark .codehilite .gu { color: #89DDFF } /* Generic.Subheading */
.dark .codehilite .gt { color: #FF5370 } /* Generic.Traceback */
.dark .codehilite .kc { color: #89DDFF } /* Keyword.Constant */
.dark .codehilite .kd { color: #BB80B3 } /* Keyword.Declaration */
.dark .codehilite .kn { color: #89DDFF; font-style: italic } /* Keyword.Namespace */
.dark .codehilite .kp { color: #89DDFF } /* Keyword.Pseudo */
.dark .codehilite .kr { color: #BB80B3 } /* Keyword.Reserved */
.dark .codehilite .kt { color: #BB80B3 } /* Keyword.Type */
.dark .codehilite .ld { color: #C3E88D } /* Literal.Date */
.dark .codehilite .m { color: #F78C6C } /* Literal.Number */
.dark .codehilite .s { color: #C3E88D } /* Literal.String */
.dark .codehilite .na { color: #BB80B3 } /* Name.Attribute */
.dark .codehilite .nb { color: #82AAFF } /* Name.Builtin */
.dark .codehilite .nc { color: #FFCB6B } /* Name.Class */
.dark .codehilite .no { color: #EEFFFF } /* Name.Constant */
.dark .codehilite .nd { color: #82AAFF } /* Name.Decorator */
.dark .codehilite .ni { color: #89DDFF } /* Name.Entity */
.dark .codehilite .ne { color: #FFCB6B } /* Name.Exception */
.dark .codehilite .nf { color: #82AAFF } /* Name.Function */
.dark .codehilite .nl { color: #82AAFF } /* Name.Label */
.dark .codehilite .nn { color: #FFCB6B } /* Name.Namespace */
.dark .codehilite .nx { color: #EEFFFF } /* Name.Other */
.dark .codehilite .py { color: #FFCB6B } /* Name.Property */
.dark .codehilite .nt { color: #FF5370 } /* Name.Tag */
.dark .codehilite .nv { color: #89DDFF } /* Name.Variable */
.dark .codehilite .ow { color: #89DDFF; font-style: italic } /* Operator.Word */
.dark .codehilite .pm { color: #89DDFF } /* Punctuation.Marker */
.dark .codehilite .w { color: #EEFFFF } /* Text.Whitespace */
.dark .codehilite .mb { color: #F78C6C } /* Literal.Number.Bin */
.dark .codehilite .mf { color: #F78C6C } /* Literal.Number.Float */
.dark .codehilite .mh { color: #F78C6C } /* Literal.Number.Hex */
.dark .codehilite .mi { color: #F78C6C } /* Literal.Number.Integer */
.dark .codehilite .mo { color: #F78C6C } /* Literal.Number.Oct */
.dark .codehilite .sa { color: #BB80B3 } /* Literal.String.Affix */
.dark .codehilite .sb { color: #C3E88D } /* Literal.String.Backtick */
.dark .codehilite .sc { color: #C3E88D } /* Literal.String.Char */
.dark .codehilite .dl { color: #EEFFFF } /* Literal.String.Delimiter */
.dark .codehilite .sd { color: #79d618; font-style: italic } /* Literal.String.Doc */
.dark .codehilite .s2 { color: #C3E88D } /* Literal.String.Double */
.dark .codehilite .se { color: #EEFFFF } /* Literal.String.Escape */
.dark .codehilite .sh { color: #C3E88D } /* Literal.String.Heredoc */
.dark .codehilite .si { color: #89DDFF } /* Literal.String.Interpol */
.dark .codehilite .sx { color: #C3E88D } /* Literal.String.Other */
.dark .codehilite .sr { color: #89DDFF } /* Literal.String.Regex */
.dark .codehilite .s1 { color: #C3E88D } /* Literal.String.Single */
.dark .codehilite .ss { color: #89DDFF } /* Literal.String.Symbol */
.dark .codehilite .bp { color: #89DDFF } /* Name.Builtin.Pseudo */
.dark .codehilite .fm { color: #82AAFF } /* Name.Function.Magic */
.dark .codehilite .vc { color: #89DDFF } /* Name.Variable.Class */
.dark .codehilite .vg { color: #89DDFF } /* Name.Variable.Global */
.dark .codehilite .vi { color: #89DDFF } /* Name.Variable.Instance */
.dark .codehilite .vm { color: #82AAFF } /* Name.Variable.Magic */
.dark .codehilite .il { color: #F78C6C } /* Literal.Number.Integer.Long */

88
themes/contrast.py Normal file
View File

@ -0,0 +1,88 @@
import gradio as gr
from toolbox import get_conf
CODE_HIGHLIGHT, ADD_WAIFU, LAYOUT = get_conf('CODE_HIGHLIGHT', 'ADD_WAIFU', 'LAYOUT')
def adjust_theme():
try:
color_er = gr.themes.utils.colors.fuchsia
set_theme = gr.themes.Default(
primary_hue=gr.themes.utils.colors.orange,
neutral_hue=gr.themes.utils.colors.gray,
font=["Helvetica", "Microsoft YaHei", "ui-sans-serif", "sans-serif", "system-ui"],
font_mono=["ui-monospace", "Consolas", "monospace"])
set_theme.set(
# Colors
input_background_fill_dark="*neutral_800",
# Transition
button_transition="none",
# Shadows
button_shadow="*shadow_drop",
button_shadow_hover="*shadow_drop_lg",
button_shadow_active="*shadow_inset",
input_shadow="0 0 0 *shadow_spread transparent, *shadow_inset",
input_shadow_focus="0 0 0 *shadow_spread *secondary_50, *shadow_inset",
input_shadow_focus_dark="0 0 0 *shadow_spread *neutral_700, *shadow_inset",
checkbox_label_shadow="*shadow_drop",
block_shadow="*shadow_drop",
form_gap_width="1px",
# Button borders
input_border_width="1px",
input_background_fill="white",
# Gradients
stat_background_fill="linear-gradient(to right, *primary_400, *primary_200)",
stat_background_fill_dark="linear-gradient(to right, *primary_400, *primary_600)",
error_background_fill=f"linear-gradient(to right, {color_er.c100}, *background_fill_secondary)",
error_background_fill_dark="*background_fill_primary",
checkbox_label_background_fill="linear-gradient(to top, *neutral_50, white)",
checkbox_label_background_fill_dark="linear-gradient(to top, *neutral_900, *neutral_800)",
checkbox_label_background_fill_hover="linear-gradient(to top, *neutral_100, white)",
checkbox_label_background_fill_hover_dark="linear-gradient(to top, *neutral_900, *neutral_800)",
button_primary_background_fill="linear-gradient(to bottom right, *primary_100, *primary_300)",
button_primary_background_fill_dark="linear-gradient(to bottom right, *primary_500, *primary_600)",
button_primary_background_fill_hover="linear-gradient(to bottom right, *primary_100, *primary_200)",
button_primary_background_fill_hover_dark="linear-gradient(to bottom right, *primary_500, *primary_500)",
button_primary_border_color_dark="*primary_500",
button_secondary_background_fill="linear-gradient(to bottom right, *neutral_100, *neutral_200)",
button_secondary_background_fill_dark="linear-gradient(to bottom right, *neutral_600, *neutral_700)",
button_secondary_background_fill_hover="linear-gradient(to bottom right, *neutral_100, *neutral_100)",
button_secondary_background_fill_hover_dark="linear-gradient(to bottom right, *neutral_600, *neutral_600)",
button_cancel_background_fill=f"linear-gradient(to bottom right, {color_er.c100}, {color_er.c200})",
button_cancel_background_fill_dark=f"linear-gradient(to bottom right, {color_er.c600}, {color_er.c700})",
button_cancel_background_fill_hover=f"linear-gradient(to bottom right, {color_er.c100}, {color_er.c100})",
button_cancel_background_fill_hover_dark=f"linear-gradient(to bottom right, {color_er.c600}, {color_er.c600})",
button_cancel_border_color=color_er.c200,
button_cancel_border_color_dark=color_er.c600,
button_cancel_text_color=color_er.c600,
button_cancel_text_color_dark="white",
)
if LAYOUT=="TOP-DOWN":
js = ""
else:
with open('themes/common.js', 'r', encoding='utf8') as f:
js = f"<script>{f.read()}</script>"
# 添加一个萌萌的看板娘
if ADD_WAIFU:
js += """
<script src="file=docs/waifu_plugin/jquery.min.js"></script>
<script src="file=docs/waifu_plugin/jquery-ui.min.js"></script>
<script src="file=docs/waifu_plugin/autoload.js"></script>
"""
gradio_original_template_fn = gr.routes.templates.TemplateResponse
def gradio_new_template_fn(*args, **kwargs):
res = gradio_original_template_fn(*args, **kwargs)
res.body = res.body.replace(b'</html>', f'{js}</html>'.encode("utf8"))
res.init_headers()
return res
gr.routes.templates.TemplateResponse = gradio_new_template_fn # override gradio template
except:
set_theme = None
print('gradio版本较旧, 不能自定义字体和颜色')
return set_theme
with open("themes/contrast.css", "r", encoding="utf-8") as f:
advanced_css = f.read()
with open("themes/common.css", "r", encoding="utf-8") as f:
advanced_css += f.read()

View File

@ -1,3 +1,46 @@
.dark {
--background-fill-primary: #050810;
--body-background-fill: var(--background-fill-primary);
}
/* 插件下拉菜单 */
#plugin-panel .wrap.svelte-aqlk7e.svelte-aqlk7e.svelte-aqlk7e {
box-shadow: var(--input-shadow);
border: var(--input-border-width) dashed var(--border-color-primary);
border-radius: 4px;
}
#plugin-panel .dropdown-arrow.svelte-p5edak {
width: 50px;
}
#plugin-panel input.svelte-aqlk7e.svelte-aqlk7e.svelte-aqlk7e {
padding-left: 5px;
}
/* 小按钮 */
.sm.svelte-1ipelgc {
font-family: "Microsoft YaHei UI", "Helvetica", "Microsoft YaHei", "ui-sans-serif", "sans-serif", "system-ui";
--button-small-text-weight: 600;
--button-small-text-size: 16px;
border-bottom-right-radius: 6px;
border-bottom-left-radius: 6px;
border-top-right-radius: 6px;
border-top-left-radius: 6px;
}
#plugin-panel .sm.svelte-1ipelgc {
font-family: "Microsoft YaHei UI", "Helvetica", "Microsoft YaHei", "ui-sans-serif", "sans-serif", "system-ui";
--button-small-text-weight: 400;
--button-small-text-size: 14px;
border-bottom-right-radius: 6px;
border-bottom-left-radius: 6px;
border-top-right-radius: 6px;
border-top-left-radius: 6px;
}
.wrap-inner.svelte-aqlk7e.svelte-aqlk7e.svelte-aqlk7e {
padding: 0%;
}
.markdown-body table { .markdown-body table {
margin: 1em 0; margin: 1em 0;
border-collapse: collapse; border-collapse: collapse;
@ -16,6 +59,7 @@
.markdown-body thead th { .markdown-body thead th {
padding: .5em .2em; padding: .5em .2em;
} }
.normal_mut_select .svelte-1gfkn6j { .normal_mut_select .svelte-1gfkn6j {
float: left; float: left;
width: auto; width: auto;

View File

@ -9,7 +9,7 @@ def adjust_theme():
set_theme = gr.themes.Default( set_theme = gr.themes.Default(
primary_hue=gr.themes.utils.colors.orange, primary_hue=gr.themes.utils.colors.orange,
neutral_hue=gr.themes.utils.colors.gray, neutral_hue=gr.themes.utils.colors.gray,
font=["sans-serif", "Microsoft YaHei", "ui-sans-serif", "system-ui"], font=["Helvetica", "Microsoft YaHei", "ui-sans-serif", "sans-serif", "system-ui"],
font_mono=["ui-monospace", "Consolas", "monospace"]) font_mono=["ui-monospace", "Consolas", "monospace"])
set_theme.set( set_theme.set(
# Colors # Colors
@ -84,3 +84,5 @@ def adjust_theme():
with open("themes/default.css", "r", encoding="utf-8") as f: with open("themes/default.css", "r", encoding="utf-8") as f:
advanced_css = f.read() advanced_css = f.read()
with open("themes/common.css", "r", encoding="utf-8") as f:
advanced_css += f.read()

View File

@ -106,3 +106,5 @@ def adjust_theme():
with open("themes/green.css", "r", encoding="utf-8") as f: with open("themes/green.css", "r", encoding="utf-8") as f:
advanced_css = f.read() advanced_css = f.read()
with open("themes/common.css", "r", encoding="utf-8") as f:
advanced_css += f.read()

View File

@ -5,6 +5,9 @@ THEME, = get_conf('THEME')
if THEME == 'Chuanhu-Small-and-Beautiful': if THEME == 'Chuanhu-Small-and-Beautiful':
from .green import adjust_theme, advanced_css from .green import adjust_theme, advanced_css
theme_declaration = "<h2 align=\"center\" class=\"small\">[Chuanhu-Small-and-Beautiful主题]</h2>" theme_declaration = "<h2 align=\"center\" class=\"small\">[Chuanhu-Small-and-Beautiful主题]</h2>"
elif THEME == 'High-Contrast':
from .contrast import adjust_theme, advanced_css
theme_declaration = ""
else: else:
from .default import adjust_theme, advanced_css from .default import adjust_theme, advanced_css
theme_declaration = "" theme_declaration = ""