From d88c585305aae501420794b1e6353e57a487c410 Mon Sep 17 00:00:00 2001 From: binary-husky Date: Tue, 21 May 2024 10:47:50 +0000 Subject: [PATCH] improve latex plugin --- crazy_functional.py | 102 +++++++++--------- .../{Latex输出PDF.py => Latex_Function.py} | 0 crazy_functions/Latex_Function_Wrap.py | 34 ++++++ crazy_functions/PDF_Translate_Wrap.py | 3 + .../plugin_template/plugin_class_template.py | 2 +- docs/translate_english.json | 2 +- docs/translate_japanese.json | 2 +- docs/translate_std.json | 2 +- docs/translate_traditionalchinese.json | 2 +- tests/test_plugins.py | 6 +- 10 files changed, 93 insertions(+), 62 deletions(-) rename crazy_functions/{Latex输出PDF.py => Latex_Function.py} (100%) create mode 100644 crazy_functions/Latex_Function_Wrap.py diff --git a/crazy_functional.py b/crazy_functional.py index 3c65d7e4..99a73b43 100644 --- a/crazy_functional.py +++ b/crazy_functional.py @@ -35,8 +35,12 @@ def get_crazy_functions(): from crazy_functions.Markdown_Translate import Markdown中译英 from crazy_functions.虚空终端 import 虚空终端 from crazy_functions.生成多种Mermaid图表 import 生成多种Mermaid图表 - from crazy_functions.PDF_Translate_Wrap import PDF_Tran + from crazy_functions.Latex_Function import Latex英文纠错加PDF对比 + from crazy_functions.Latex_Function import Latex翻译中文并重新编译PDF + from crazy_functions.Latex_Function import PDF翻译中文并重新编译PDF + from crazy_functions.Latex_Function_Wrap import Arxiv_Localize + function_plugins = { "虚空终端": { @@ -287,8 +291,51 @@ def get_crazy_functions(): "Info": "批量将Markdown文件中文翻译为英文 | 输入参数为路径或上传压缩包", "Function": HotReload(Markdown中译英), }, + "Latex英文纠错+高亮修正位置 [需Latex]": { + "Group": "学术", + "Color": "stop", + "AsButton": False, + "AdvancedArgs": True, + "ArgsReminder": "如果有必要, 请在此处追加更细致的矫错指令(使用英文)。", + "Function": HotReload(Latex英文纠错加PDF对比), + }, + "Arxiv论文精细翻译(输入arxivID)[需Latex]": { + "Group": "学术", + "Color": "stop", + "AsButton": False, + "AdvancedArgs": True, + "ArgsReminder": r"如果有必要, 请在此处给出自定义翻译命令, 解决部分词汇翻译不准确的问题。 " + r"例如当单词'agent'翻译不准确时, 请尝试把以下指令复制到高级参数区: " + r'If the term "agent" is used in this section, it should be translated to "智能体". ', + "Info": "Arixv论文精细翻译 | 输入参数arxiv论文的ID,比如1812.10695", + "Function": None, + "Class": Arxiv_Localize, + }, + "本地Latex论文精细翻译(上传Latex项目)[需Latex]": { + "Group": "学术", + "Color": "stop", + "AsButton": False, + "AdvancedArgs": True, + "ArgsReminder": r"如果有必要, 请在此处给出自定义翻译命令, 解决部分词汇翻译不准确的问题。 " + r"例如当单词'agent'翻译不准确时, 请尝试把以下指令复制到高级参数区: " + r'If the term "agent" is used in this section, it should be translated to "智能体". ', + "Info": "本地Latex论文精细翻译 | 输入参数是路径", + "Function": HotReload(Latex翻译中文并重新编译PDF), + }, + "PDF翻译中文并重新编译PDF(上传PDF)[需Latex]": { + "Group": "学术", + "Color": "stop", + "AsButton": False, + "AdvancedArgs": True, + "ArgsReminder": r"如果有必要, 请在此处给出自定义翻译命令, 解决部分词汇翻译不准确的问题。 " + r"例如当单词'agent'翻译不准确时, 请尝试把以下指令复制到高级参数区: " + r'If the term "agent" is used in this section, it should be translated to "智能体". ', + "Info": "PDF翻译中文,并重新编译PDF | 输入参数为路径", + "Function": HotReload(PDF翻译中文并重新编译PDF) + } } + # -=--=- 尚未充分测试的实验性插件 & 需要额外依赖的插件 -=--=- try: from crazy_functions.下载arxiv论文翻译摘要 import 下载arxiv论文并翻译摘要 @@ -534,59 +581,6 @@ def get_crazy_functions(): print(trimmed_format_exc()) print("Load function plugin failed") - try: - from crazy_functions.Latex输出PDF import Latex英文纠错加PDF对比 - from crazy_functions.Latex输出PDF import Latex翻译中文并重新编译PDF - from crazy_functions.Latex输出PDF import PDF翻译中文并重新编译PDF - - function_plugins.update( - { - "Latex英文纠错+高亮修正位置 [需Latex]": { - "Group": "学术", - "Color": "stop", - "AsButton": False, - "AdvancedArgs": True, - "ArgsReminder": "如果有必要, 请在此处追加更细致的矫错指令(使用英文)。", - "Function": HotReload(Latex英文纠错加PDF对比), - }, - "Arxiv论文精细翻译(输入arxivID)[需Latex]": { - "Group": "学术", - "Color": "stop", - "AsButton": False, - "AdvancedArgs": True, - "ArgsReminder": r"如果有必要, 请在此处给出自定义翻译命令, 解决部分词汇翻译不准确的问题。 " - r"例如当单词'agent'翻译不准确时, 请尝试把以下指令复制到高级参数区: " - r'If the term "agent" is used in this section, it should be translated to "智能体". ', - "Info": "Arixv论文精细翻译 | 输入参数arxiv论文的ID,比如1812.10695", - "Function": HotReload(Latex翻译中文并重新编译PDF), - }, - "本地Latex论文精细翻译(上传Latex项目)[需Latex]": { - "Group": "学术", - "Color": "stop", - "AsButton": False, - "AdvancedArgs": True, - "ArgsReminder": r"如果有必要, 请在此处给出自定义翻译命令, 解决部分词汇翻译不准确的问题。 " - r"例如当单词'agent'翻译不准确时, 请尝试把以下指令复制到高级参数区: " - r'If the term "agent" is used in this section, it should be translated to "智能体". ', - "Info": "本地Latex论文精细翻译 | 输入参数是路径", - "Function": HotReload(Latex翻译中文并重新编译PDF), - }, - "PDF翻译中文并重新编译PDF(上传PDF)[需Latex]": { - "Group": "学术", - "Color": "stop", - "AsButton": False, - "AdvancedArgs": True, - "ArgsReminder": r"如果有必要, 请在此处给出自定义翻译命令, 解决部分词汇翻译不准确的问题。 " - r"例如当单词'agent'翻译不准确时, 请尝试把以下指令复制到高级参数区: " - r'If the term "agent" is used in this section, it should be translated to "智能体". ', - "Info": "PDF翻译中文,并重新编译PDF | 输入参数为路径", - "Function": HotReload(PDF翻译中文并重新编译PDF) - } - } - ) - except: - print(trimmed_format_exc()) - print("Load function plugin failed") try: from toolbox import get_conf diff --git a/crazy_functions/Latex输出PDF.py b/crazy_functions/Latex_Function.py similarity index 100% rename from crazy_functions/Latex输出PDF.py rename to crazy_functions/Latex_Function.py diff --git a/crazy_functions/Latex_Function_Wrap.py b/crazy_functions/Latex_Function_Wrap.py new file mode 100644 index 00000000..3736da57 --- /dev/null +++ b/crazy_functions/Latex_Function_Wrap.py @@ -0,0 +1,34 @@ + +from crazy_functions.Latex_Function import Latex翻译中文并重新编译PDF +from crazy_functions.plugin_template.plugin_class_template import GptAcademicPluginTemplate, ArgProperty + + +class Arxiv_Localize(GptAcademicPluginTemplate): + def __init__(self): + pass + + def define_arg_selection_menu(self): + """ + 定义插件的二级选项菜单 + """ + gui_definition = { + "main_input": + ArgProperty(title="ArxivID", description="输入Arxiv的ID或者网址", default_value="", type="string").model_dump_json(), # 主输入,自动从输入框同步 + "advanced_arg": + ArgProperty(title="额外的翻译提示词", + description=r"如果有必要, 请在此处给出自定义翻译命令, 解决部分词汇翻译不准确的问题。 " + r"例如当单词'agent'翻译不准确时, 请尝试把以下指令复制到高级参数区: " + r'If the term "agent" is used in this section, it should be translated to "智能体". ', + default_value="", type="string").model_dump_json(), # 高级参数输入区,自动同步 + "allow_cache": + ArgProperty(title="是否允许从缓存中调取结果", options=["允许缓存", "从头执行"], default_value="允许缓存", description="无", type="dropdown").model_dump_json(), + } + return gui_definition + + def execute(txt, llm_kwargs, plugin_kwargs, chatbot, history, system_prompt, user_request): + + allow_cache = plugin_kwargs["allow_cache"] + advanced_arg = plugin_kwargs["advanced_arg"] + + if allow_cache == "从头执行": plugin_kwargs["advanced_arg"] = "--no-cache " + plugin_kwargs["advanced_arg"] + yield from Latex翻译中文并重新编译PDF(txt, llm_kwargs, plugin_kwargs, chatbot, history, system_prompt, user_request) \ No newline at end of file diff --git a/crazy_functions/PDF_Translate_Wrap.py b/crazy_functions/PDF_Translate_Wrap.py index 7eaad37f..88a97bcf 100644 --- a/crazy_functions/PDF_Translate_Wrap.py +++ b/crazy_functions/PDF_Translate_Wrap.py @@ -7,6 +7,9 @@ class PDF_Tran(GptAcademicPluginTemplate): pass def define_arg_selection_menu(self): + """ + 定义插件的二级选项菜单 + """ gui_definition = { "main_input": ArgProperty(title="PDF文件路径", description="请上传文件后,再点击该插件", default_value="", type="string").model_dump_json(), # 主输入,自动从输入框同步 diff --git a/crazy_functions/plugin_template/plugin_class_template.py b/crazy_functions/plugin_template/plugin_class_template.py index 870204c6..d06d127d 100644 --- a/crazy_functions/plugin_template/plugin_class_template.py +++ b/crazy_functions/plugin_template/plugin_class_template.py @@ -7,7 +7,7 @@ class ArgProperty(BaseModel): # PLUGIN_ARG_MENU title: str = Field(description="The title", default="") description: str = Field(description="The description", default="") default_value: str|float = Field(description="The default value", default="") - type: str = Field(description="The type", default="") + type: str = Field(description="The type", default="") # currently we support ['string', 'dropdown'] options: List[str] = Field(default=[], description="List of options available for the argument") class GptAcademicPluginTemplate(): diff --git a/docs/translate_english.json b/docs/translate_english.json index 063c84bd..f91ecfa1 100644 --- a/docs/translate_english.json +++ b/docs/translate_english.json @@ -1668,7 +1668,7 @@ "Markdown翻译指定语言": "TranslateMarkdownToSpecifiedLanguage", "Langchain知识库": "LangchainKnowledgeBase", "Latex英文纠错加PDF对比": "CorrectEnglishInLatexWithPDFComparison", - "Latex输出PDF": "OutputPDFFromLatex", + "Latex_Function": "OutputPDFFromLatex", "Latex翻译中文并重新编译PDF": "TranslateChineseToEnglishInLatexAndRecompilePDF", "sprint亮靛": "SprintIndigo", "寻找Latex主文件": "FindLatexMainFile", diff --git a/docs/translate_japanese.json b/docs/translate_japanese.json index 401457a4..0fa17ab9 100644 --- a/docs/translate_japanese.json +++ b/docs/translate_japanese.json @@ -1492,7 +1492,7 @@ "交互功能模板函数": "InteractiveFunctionTemplateFunction", "交互功能函数模板": "InteractiveFunctionFunctionTemplate", "Latex英文纠错加PDF对比": "LatexEnglishErrorCorrectionWithPDFComparison", - "Latex输出PDF": "LatexOutputPDFResult", + "Latex_Function": "LatexOutputPDFResult", "Latex翻译中文并重新编译PDF": "TranslateChineseAndRecompilePDF", "语音助手": "VoiceAssistant", "微调数据集生成": "FineTuneDatasetGeneration", diff --git a/docs/translate_std.json b/docs/translate_std.json index f624a04f..8c1c888a 100644 --- a/docs/translate_std.json +++ b/docs/translate_std.json @@ -16,7 +16,7 @@ "Markdown_Translate": "BatchTranslateMarkdown", "连接bing搜索回答问题": "ConnectBingSearchAnswerQuestion", "Langchain知识库": "LangchainKnowledgeBase", - "Latex输出PDF": "OutputPDFFromLatex", + "Latex_Function": "OutputPDFFromLatex", "把字符太少的块清除为回车": "ClearBlocksWithTooFewCharactersToNewline", "Latex精细分解与转化": "DecomposeAndConvertLatex", "解析一个C项目的头文件": "ParseCProjectHeaderFiles", diff --git a/docs/translate_traditionalchinese.json b/docs/translate_traditionalchinese.json index a6bc674d..31086a73 100644 --- a/docs/translate_traditionalchinese.json +++ b/docs/translate_traditionalchinese.json @@ -1468,7 +1468,7 @@ "交互功能模板函数": "InteractiveFunctionTemplateFunctions", "交互功能函数模板": "InteractiveFunctionFunctionTemplates", "Latex英文纠错加PDF对比": "LatexEnglishCorrectionWithPDFComparison", - "Latex输出PDF": "OutputPDFFromLatex", + "Latex_Function": "OutputPDFFromLatex", "Latex翻译中文并重新编译PDF": "TranslateLatexToChineseAndRecompilePDF", "语音助手": "VoiceAssistant", "微调数据集生成": "FineTuneDatasetGeneration", diff --git a/tests/test_plugins.py b/tests/test_plugins.py index d5f87cfa..6d1c4856 100644 --- a/tests/test_plugins.py +++ b/tests/test_plugins.py @@ -20,12 +20,12 @@ if __name__ == "__main__": # plugin_test(plugin='crazy_functions.函数动态生成->函数动态生成', main_input='交换图像的蓝色通道和红色通道', advanced_arg={"file_path_arg": "./build/ants.jpg"}) - # plugin_test(plugin='crazy_functions.Latex输出PDF->Latex翻译中文并重新编译PDF', main_input="2307.07522") + # plugin_test(plugin='crazy_functions.Latex_Function->Latex翻译中文并重新编译PDF', main_input="2307.07522") plugin_test(plugin='crazy_functions.PDF_Translate->批量翻译PDF文档', main_input='build/pdf/t1.pdf') # plugin_test( - # plugin="crazy_functions.Latex输出PDF->Latex翻译中文并重新编译PDF", + # plugin="crazy_functions.Latex_Function->Latex翻译中文并重新编译PDF", # main_input="G:/SEAFILE_LOCAL/50503047/我的资料库/学位/paperlatex/aaai/Fu_8368_with_appendix", # ) @@ -68,7 +68,7 @@ if __name__ == "__main__": # plugin_test(plugin='crazy_functions.知识库文件注入->读取知识库作答', main_input="远程云服务器部署?") - # plugin_test(plugin='crazy_functions.Latex输出PDF->Latex翻译中文并重新编译PDF', main_input="2210.03629") + # plugin_test(plugin='crazy_functions.Latex_Function->Latex翻译中文并重新编译PDF', main_input="2210.03629") # advanced_arg = {"advanced_arg":"--llm_to_learn=gpt-3.5-turbo --prompt_prefix='根据下面的服装类型提示,想象一个穿着者,对这个人外貌、身处的环境、内心世界、人设进行描写。要求:100字以内,用第二人称。' --system_prompt=''" } # plugin_test(plugin='crazy_functions.chatglm微调工具->微调数据集生成', main_input='build/dev.json', advanced_arg=advanced_arg)