From a938412b6f60d075909d2fec43281b52214a39c3 Mon Sep 17 00:00:00 2001 From: binary-husky Date: Thu, 23 May 2024 15:58:59 +0000 Subject: [PATCH] save conversation wrap --- crazy_functional.py | 10 +++--- ...话历史存档.py => Conversation_To_File.py} | 36 +++++++++++++++++-- crazy_functions/Latex_Function.py | 2 +- docs/self_analysis.md | 12 +++---- docs/translate_english.json | 4 +-- docs/translate_japanese.json | 4 +-- docs/translate_std.json | 4 +-- docs/translate_traditionalchinese.json | 4 +-- themes/common.css | 6 ++++ themes/gui_advanced_plugin_class.py | 4 +-- 10 files changed, 63 insertions(+), 23 deletions(-) rename crazy_functions/{对话历史存档.py => Conversation_To_File.py} (82%) diff --git a/crazy_functional.py b/crazy_functional.py index ad7de48f..45d54d39 100644 --- a/crazy_functional.py +++ b/crazy_functional.py @@ -22,9 +22,9 @@ def get_crazy_functions(): from crazy_functions.解析项目源代码 import 解析一个CSharp项目 from crazy_functions.总结word文档 import 总结word文档 from crazy_functions.解析JupyterNotebook import 解析ipynb文件 - from crazy_functions.对话历史存档 import 对话历史存档 - from crazy_functions.对话历史存档 import 载入对话历史存档 - from crazy_functions.对话历史存档 import 删除所有本地对话历史记录 + from crazy_functions.Conversation_To_File import 载入对话历史存档 + from crazy_functions.Conversation_To_File import Conversation_To_File_Wrap + from crazy_functions.Conversation_To_File import 删除所有本地对话历史记录 from crazy_functions.辅助功能 import 清除缓存 from crazy_functions.Markdown_Translate import Markdown英译中 from crazy_functions.批量总结PDF文档 import 批量总结PDF文档 @@ -198,7 +198,9 @@ def get_crazy_functions(): "Group": "对话", "AsButton": True, "Info": "保存当前的对话 | 不需要输入参数", - "Function": HotReload(对话历史存档), + # "Function": HotReload(Conversation_To_File), + "Function": None, + "Class": Conversation_To_File_Wrap }, "[多线程Demo]解析此项目本身(源码自译解)": { "Group": "对话|编程", diff --git a/crazy_functions/对话历史存档.py b/crazy_functions/Conversation_To_File.py similarity index 82% rename from crazy_functions/对话历史存档.py rename to crazy_functions/Conversation_To_File.py index 0132bc02..a077fcf4 100644 --- a/crazy_functions/对话历史存档.py +++ b/crazy_functions/Conversation_To_File.py @@ -1,4 +1,5 @@ from toolbox import CatchException, update_ui, promote_file_to_downloadzone, get_log_folder, get_user +from crazy_functions.plugin_template.plugin_class_template import GptAcademicPluginTemplate, ArgProperty import re f_prefix = 'GPT-Academic对话存档' @@ -79,11 +80,42 @@ def 对话历史存档(txt, llm_kwargs, plugin_kwargs, chatbot, history, system_ system_prompt 给gpt的静默提醒 user_request 当前用户的请求信息(IP地址等) """ + file_name = plugin_kwargs.get("file_name", None) + if (file_name is not None) and (file_name != "") and (not file_name.endswith('.html')): file_name += '.html' + else: file_name = None - chatbot.append(("保存当前对话", - f"[Local Message] {write_chat_to_file(chatbot, history)},您可以调用下拉菜单中的“载入对话历史存档”还原当下的对话。")) + chatbot.append((None, f"[Local Message] {write_chat_to_file(chatbot, history, file_name)},您可以调用下拉菜单中的“载入对话历史存档”还原当下的对话。")) yield from update_ui(chatbot=chatbot, history=history) # 刷新界面 # 由于请求gpt需要一段时间,我们先及时地做一次界面更新 + +class Conversation_To_File_Wrap(GptAcademicPluginTemplate): + def __init__(self): + """ + 请注意`execute`会执行在不同的线程中,因此您在定义和使用类变量时,应当慎之又慎! + """ + pass + + def define_arg_selection_menu(self): + """ + 定义插件的二级选项菜单 + + 第一个参数,名称`file_name`,参数`type`声明这是一个文本框,文本框上方显示`title`,文本框内部显示`description`,`default_value`为默认值; + """ + gui_definition = { + "file_name": ArgProperty(title="保存文件名", description="输入对话存档文件名,留空则使用时间作为文件名", default_value="", type="string").model_dump_json(), # 主输入,自动从输入框同步 + } + return gui_definition + + def execute(txt, llm_kwargs, plugin_kwargs, chatbot, history, system_prompt, user_request): + """ + 执行插件 + """ + yield from 对话历史存档(txt, llm_kwargs, plugin_kwargs, chatbot, history, system_prompt, user_request) + + + + + def hide_cwd(str): import os current_path = os.getcwd() diff --git a/crazy_functions/Latex_Function.py b/crazy_functions/Latex_Function.py index cda0fc6d..e63b1d36 100644 --- a/crazy_functions/Latex_Function.py +++ b/crazy_functions/Latex_Function.py @@ -294,7 +294,7 @@ def Latex英文纠错加PDF对比(txt, llm_kwargs, plugin_kwargs, chatbot, histo promote_file_to_downloadzone(file=zip_res, chatbot=chatbot) else: chatbot.append((f"失败了", - '虽然PDF生成失败了, 但请查收结果(压缩包), 内含已经翻译的Tex文档, 也是可读的, 您可以到Github Issue区, 用该压缩包+对话历史存档进行反馈 ...')) + '虽然PDF生成失败了, 但请查收结果(压缩包), 内含已经翻译的Tex文档, 也是可读的, 您可以到Github Issue区, 用该压缩包+Conversation_To_File进行反馈 ...')) yield from update_ui(chatbot=chatbot, history=history); time.sleep(1) # 刷新界面 promote_file_to_downloadzone(file=zip_res, chatbot=chatbot) diff --git a/docs/self_analysis.md b/docs/self_analysis.md index b41222b6..5863136e 100644 --- a/docs/self_analysis.md +++ b/docs/self_analysis.md @@ -22,7 +22,7 @@ | crazy_functions\下载arxiv论文翻译摘要.py | 下载 `arxiv` 论文的 PDF 文件,并提取摘要和翻译 | | crazy_functions\代码重写为全英文_多线程.py | 将Python源代码文件中的中文内容转化为英文 | | crazy_functions\图片生成.py | 根据激励文本使用GPT模型生成相应的图像 | -| crazy_functions\对话历史存档.py | 将每次对话记录写入Markdown格式的文件中 | +| crazy_functions\Conversation_To_File.py | 将每次对话记录写入Markdown格式的文件中 | | crazy_functions\总结word文档.py | 对输入的word文档进行摘要生成 | | crazy_functions\总结音视频.py | 对输入的音视频文件进行摘要生成 | | crazy_functions\Markdown_Translate.py | 将指定目录下的Markdown文件进行中英文翻译 | @@ -155,9 +155,9 @@ toolbox.py是一个工具类库,其中主要包含了一些函数装饰器和 该程序文件提供了一个用于生成图像的函数`图片生成`。函数实现的过程中,会调用`gen_image`函数来生成图像,并返回图像生成的网址和本地文件地址。函数有多个参数,包括`prompt`(激励文本)、`llm_kwargs`(GPT模型的参数)、`plugin_kwargs`(插件模型的参数)等。函数核心代码使用了`requests`库向OpenAI API请求图像,并做了简单的处理和保存。函数还更新了交互界面,清空聊天历史并显示正在生成图像的消息和最终的图像网址和预览。 -## [18/48] 请对下面的程序文件做一个概述: crazy_functions\对话历史存档.py +## [18/48] 请对下面的程序文件做一个概述: crazy_functions\Conversation_To_File.py -这个文件是名为crazy_functions\对话历史存档.py的Python程序文件,包含了4个函数: +这个文件是名为crazy_functions\Conversation_To_File.py的Python程序文件,包含了4个函数: 1. write_chat_to_file(chatbot, history=None, file_name=None):用来将对话记录以Markdown格式写入文件中,并且生成文件名,如果没指定文件名则用当前时间。写入完成后将文件路径打印出来。 @@ -165,7 +165,7 @@ toolbox.py是一个工具类库,其中主要包含了一些函数装饰器和 3. read_file_to_chat(chatbot, history, file_name):从传入的文件中读取内容,解析出对话历史记录并更新聊天显示框。 -4. 对话历史存档(txt, llm_kwargs, plugin_kwargs, chatbot, history, system_prompt, user_request):一个主要函数,用于保存当前对话记录并提醒用户。如果用户希望加载历史记录,则调用read_file_to_chat()来更新聊天显示框。如果用户希望删除历史记录,调用删除所有本地对话历史记录()函数完成删除操作。 +4. Conversation_To_File(txt, llm_kwargs, plugin_kwargs, chatbot, history, system_prompt, user_request):一个主要函数,用于保存当前对话记录并提醒用户。如果用户希望加载历史记录,则调用read_file_to_chat()来更新聊天显示框。如果用户希望删除历史记录,调用删除所有本地对话历史记录()函数完成删除操作。 ## [19/48] 请对下面的程序文件做一个概述: crazy_functions\总结word文档.py @@ -331,13 +331,13 @@ check_proxy.py, colorful.py, config.py, config_private.py, core_functional.py, c 这些程序源文件提供了基础的文本和语言处理功能、工具函数和高级插件,使 Chatbot 能够处理各种复杂的学术文本问题,包括润色、翻译、搜索、下载、解析等。 ## 用一张Markdown表格简要描述以下文件的功能: -crazy_functions\代码重写为全英文_多线程.py, crazy_functions\图片生成.py, crazy_functions\对话历史存档.py, crazy_functions\总结word文档.py, crazy_functions\总结音视频.py, crazy_functions\Markdown_Translate.py, crazy_functions\批量总结PDF文档.py, crazy_functions\批量总结PDF文档pdfminer.py, crazy_functions\PDF_Translate.py, crazy_functions\理解PDF文档内容.py, crazy_functions\生成函数注释.py, crazy_functions\联网的ChatGPT.py, crazy_functions\解析JupyterNotebook.py, crazy_functions\解析项目源代码.py, crazy_functions\询问多个大语言模型.py, crazy_functions\读文章写摘要.py。根据以上分析,用一句话概括程序的整体功能。 +crazy_functions\代码重写为全英文_多线程.py, crazy_functions\图片生成.py, crazy_functions\Conversation_To_File.py, crazy_functions\总结word文档.py, crazy_functions\总结音视频.py, crazy_functions\Markdown_Translate.py, crazy_functions\批量总结PDF文档.py, crazy_functions\批量总结PDF文档pdfminer.py, crazy_functions\PDF_Translate.py, crazy_functions\理解PDF文档内容.py, crazy_functions\生成函数注释.py, crazy_functions\联网的ChatGPT.py, crazy_functions\解析JupyterNotebook.py, crazy_functions\解析项目源代码.py, crazy_functions\询问多个大语言模型.py, crazy_functions\读文章写摘要.py。根据以上分析,用一句话概括程序的整体功能。 | 文件名 | 功能简述 | | --- | --- | | 代码重写为全英文_多线程.py | 将Python源代码文件中的中文内容转化为英文 | | 图片生成.py | 根据激励文本使用GPT模型生成相应的图像 | -| 对话历史存档.py | 将每次对话记录写入Markdown格式的文件中 | +| Conversation_To_File.py | 将每次对话记录写入Markdown格式的文件中 | | 总结word文档.py | 对输入的word文档进行摘要生成 | | 总结音视频.py | 对输入的音视频文件进行摘要生成 | | Markdown_Translate.py | 将指定目录下的Markdown文件进行中英文翻译 | diff --git a/docs/translate_english.json b/docs/translate_english.json index f91ecfa1..e0e16fea 100644 --- a/docs/translate_english.json +++ b/docs/translate_english.json @@ -36,8 +36,8 @@ "总结word文档": "SummarizingWordDocuments", "解析ipynb文件": "ParsingIpynbFiles", "解析JupyterNotebook": "ParsingJupyterNotebook", - "对话历史存档": "ConversationHistoryArchive", - "载入对话历史存档": "LoadConversationHistoryArchive", + "Conversation_To_File": "ConversationHistoryArchive", + "载入Conversation_To_File": "LoadConversationHistoryArchive", "删除所有本地对话历史记录": "DeleteAllLocalConversationHistoryRecords", "Markdown英译中": "TranslateMarkdownFromEnglishToChinese", "Markdown_Translate": "BatchTranslateMarkdown", diff --git a/docs/translate_japanese.json b/docs/translate_japanese.json index 0fa17ab9..c9f47c5a 100644 --- a/docs/translate_japanese.json +++ b/docs/translate_japanese.json @@ -36,8 +36,8 @@ "总结word文档": "SummarizeWordDocument", "解析ipynb文件": "ParseIpynbFile", "解析JupyterNotebook": "ParseJupyterNotebook", - "对话历史存档": "ConversationHistoryArchive", - "载入对话历史存档": "LoadConversationHistoryArchive", + "Conversation_To_File": "ConversationHistoryArchive", + "载入Conversation_To_File": "LoadConversationHistoryArchive", "删除所有本地对话历史记录": "DeleteAllLocalChatHistory", "Markdown英译中": "MarkdownTranslateFromEngToChi", "Markdown_Translate": "BatchTranslateMarkdown", diff --git a/docs/translate_std.json b/docs/translate_std.json index 8c1c888a..1c00355a 100644 --- a/docs/translate_std.json +++ b/docs/translate_std.json @@ -46,7 +46,7 @@ "高阶功能模板函数": "HighOrderFunctionTemplateFunctions", "高级功能函数模板": "AdvancedFunctionTemplate", "总结word文档": "SummarizingWordDocuments", - "载入对话历史存档": "LoadConversationHistoryArchive", + "载入Conversation_To_File": "LoadConversationHistoryArchive", "Latex中译英": "LatexChineseToEnglish", "Latex英译中": "LatexEnglishToChinese", "连接网络回答问题": "ConnectToNetworkToAnswerQuestions", @@ -70,7 +70,7 @@ "读文章写摘要": "ReadArticleWriteSummary", "生成函数注释": "GenerateFunctionComments", "解析项目本身": "ParseProjectItself", - "对话历史存档": "ConversationHistoryArchive", + "Conversation_To_File": "ConversationHistoryArchive", "专业词汇声明": "ProfessionalTerminologyDeclaration", "解析docx": "ParseDocx", "解析源代码新": "ParsingSourceCodeNew", diff --git a/docs/translate_traditionalchinese.json b/docs/translate_traditionalchinese.json index 31086a73..b3b35378 100644 --- a/docs/translate_traditionalchinese.json +++ b/docs/translate_traditionalchinese.json @@ -35,8 +35,8 @@ "总结word文档": "SummarizeWordDocument", "解析ipynb文件": "ParseIpynbFile", "解析JupyterNotebook": "ParseJupyterNotebook", - "对话历史存档": "ConversationHistoryArchive", - "载入对话历史存档": "LoadConversationHistoryArchive", + "Conversation_To_File": "ConversationHistoryArchive", + "载入Conversation_To_File": "LoadConversationHistoryArchive", "删除所有本地对话历史记录": "DeleteAllLocalConversationHistoryRecords", "Markdown英译中": "MarkdownEnglishToChinese", "Markdown_Translate": "BatchMarkdownTranslation", diff --git a/themes/common.css b/themes/common.css index 1512bec8..624e6347 100644 --- a/themes/common.css +++ b/themes/common.css @@ -1,3 +1,9 @@ +#plugin_arg_menu { + transform: translate(-50%, -50%); + border: dashed; +} + + /* hide remove all button */ .remove-all.svelte-aqlk7e.svelte-aqlk7e.svelte-aqlk7e { visibility: hidden; diff --git a/themes/gui_advanced_plugin_class.py b/themes/gui_advanced_plugin_class.py index ac996dd9..c2ac6e79 100644 --- a/themes/gui_advanced_plugin_class.py +++ b/themes/gui_advanced_plugin_class.py @@ -4,8 +4,8 @@ from toolbox import format_io, find_free_port, on_file_uploaded, on_report_gener def define_gui_advanced_plugin_class(plugins): # 定义新一代插件的高级参数区 - with gr.Floating(init_x="40%", init_y="20%", visible=False, width="30%", drag="top", elem_id="plugin_arg_menu"): - with gr.Accordion("请选择并确认插件参数!", open=True, elem_id="plugin_arg_panel"): + with gr.Floating(init_x="50%", init_y="50%", visible=False, width="30%", drag="top", elem_id="plugin_arg_menu"): + with gr.Accordion("选择插件参数", open=True, elem_id="plugin_arg_panel"): for u in range(8): with gr.Row(): gr.Textbox(show_label=True, label="T1", placeholder="请输入", lines=1, visible=False, elem_id=f"plugin_arg_txt_{u}").style(container=False)