From 7167c843946a1ece13cea46ff42099efa6a8e81f Mon Sep 17 00:00:00 2001 From: qingxu fu <505030475@qq.com> Date: Tue, 11 Apr 2023 17:42:56 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E8=A7=A3=E6=9E=90=E6=BA=90?= =?UTF-8?q?=E4=BB=A3=E7=A0=81bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- crazy_functional.py | 21 +++++++++++---------- crazy_functions/crazy_utils.py | 2 +- crazy_functions/解析项目源代码.py | 20 ++++++++++++++++++-- requirements.txt | 3 ++- 4 files changed, 32 insertions(+), 14 deletions(-) diff --git a/crazy_functional.py b/crazy_functional.py index ee40a21..36379d1 100644 --- a/crazy_functional.py +++ b/crazy_functional.py @@ -15,12 +15,10 @@ def get_crazy_functions(): from crazy_functions.解析项目源代码 import 解析一个Rect项目 from crazy_functions.高级功能函数模板 import 高阶功能模板函数 from crazy_functions.代码重写为全英文_多线程 import 全项目切换英文 + from crazy_functions.Latex全文润色 import Latex英文润色 function_plugins = { - "请解析并解构此项目本身(源码自译解)": { - "AsButton": False, # 加入下拉菜单中 - "Function": HotReload(解析项目本身) - }, + "解析整个Python项目": { "Color": "stop", # 按钮颜色 "Function": HotReload(解析一个Python项目) @@ -57,11 +55,15 @@ def get_crazy_functions(): "Color": "stop", # 按钮颜色 "Function": HotReload(批量生成函数注释) }, + "[多线程Demo] 解析此项目本身(源码自译解)": { + "Function": HotReload(解析项目本身) + }, "[多线程demo] 把本项目源代码切换成全英文": { # HotReload 的意思是热更新,修改函数插件代码后,不需要重启程序,代码直接生效 + "AsButton": False, # 加入下拉菜单中 "Function": HotReload(全项目切换英文) }, - "[函数插件模板demo] 历史上的今天": { + "[函数插件模板Demo] 历史上的今天": { # HotReload 的意思是热更新,修改函数插件代码后,不需要重启程序,代码直接生效 "Function": HotReload(高阶功能模板函数) }, @@ -76,7 +78,6 @@ def get_crazy_functions(): from crazy_functions.谷歌检索小助手 import 谷歌检索小助手 from crazy_functions.理解PDF文档内容 import 理解PDF文档内容 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英译中 @@ -87,13 +88,13 @@ def get_crazy_functions(): "AsButton": True, # 加入下拉菜单中 "Function": HotReload(批量翻译PDF文档) }, - "[仅供开发调试] 批量总结PDF文档": { + "[内测] 批量总结PDF文档": { "Color": "stop", "AsButton": False, # 加入下拉菜单中 # HotReload 的意思是热更新,修改函数插件代码后,不需要重启程序,代码直接生效 "Function": HotReload(批量总结PDF文档) }, - "[仅供开发调试] 批量总结PDF文档pdfminer": { + "[内测] 批量总结PDF文档pdfminer": { "Color": "stop", "AsButton": False, # 加入下拉菜单中 "Function": HotReload(批量总结PDF文档pdfminer) @@ -107,12 +108,12 @@ def get_crazy_functions(): "Color": "stop", "Function": HotReload(总结word文档) }, - "理解PDF文档内容(Tk文件选择接口,仅本地)": { + "[内测] 理解PDF文档内容(Tk文件选择接口,仅本地)": { # HotReload 的意思是热更新,修改函数插件代码后,不需要重启程序,代码直接生效 "AsButton": False, # 加入下拉菜单中 "Function": HotReload(理解PDF文档内容) }, - "理解PDF文档内容(通用接口,读取文件输入区)": { + "[内测] 理解PDF文档内容(通用接口,读取文件输入区)": { # HotReload 的意思是热更新,修改函数插件代码后,不需要重启程序,代码直接生效 "Color": "stop", "AsButton": False, # 加入下拉菜单中 diff --git a/crazy_functions/crazy_utils.py b/crazy_functions/crazy_utils.py index 1a877dd..9e96e58 100644 --- a/crazy_functions/crazy_utils.py +++ b/crazy_functions/crazy_utils.py @@ -76,7 +76,7 @@ def request_gpt_model_in_new_thread_with_ui_alive( try: # 【第一种情况】:顺利完成 result = predict_no_ui_long_connection( - inputs=inputs, llm_kwargs=llm_kwargs, + inputs=inputs, llm_kwargs=llm_kwargs, history=history, sys_prompt=sys_prompt, observe_window=mutable) return result except ConnectionAbortedError as token_exceeded_error: diff --git a/crazy_functions/解析项目源代码.py b/crazy_functions/解析项目源代码.py index 72a6967..6e4b128 100644 --- a/crazy_functions/解析项目源代码.py +++ b/crazy_functions/解析项目源代码.py @@ -41,6 +41,22 @@ def 解析源代码新(file_manifest, project_folder, llm_kwargs, plugin_kwargs, chatbot.append(("完成?", "逐个文件分析已完成。" + res + "\n\n正在开始汇总。")) yield from update_ui(chatbot=chatbot, history=history_to_return) # 刷新界面 + ############################## <存储中间数据进行调试> ################################## + + # def objdump(obj): + # import pickle + # with open('objdump.tmp', 'wb+') as f: + # pickle.dump(obj, f) + # return + + # def objload(): + # import pickle, os + # if not os.path.exists('objdump.tmp'): + # return + # with open('objdump.tmp', 'rb') as f: + # return pickle.load(f) + # objdump([report_part_1, gpt_response_collection, history_to_return, file_manifest, project_folder, fp, llm_kwargs, chatbot]) + ############################## <第二步,综合,单线程,分组+迭代处理> ################################## batchsize = 16 # 10个文件为一组 report_part_2 = [] @@ -53,14 +69,14 @@ def 解析源代码新(file_manifest, project_folder, llm_kwargs, plugin_kwargs, file_rel_path = [os.path.relpath(fp, project_folder) for index, fp in enumerate(this_iteration_file_manifest)] # 把“请对下面的程序文件做一个概述” 替换成 精简的 "文件名:{all_file[index]}" for index, content in enumerate(this_iteration_gpt_response_collection): - if index%2==0: this_iteration_gpt_response_collection[index] = f"文件名:{file_rel_path[index//2]}" + if index%2==0: this_iteration_gpt_response_collection[index] = f"{file_rel_path[index//2]}" # 只保留文件名节省token previous_iteration_files.extend([os.path.relpath(fp, project_folder) for index, fp in enumerate(this_iteration_file_manifest)]) previous_iteration_files_string = ', '.join(previous_iteration_files) current_iteration_focus = ', '.join([os.path.relpath(fp, project_folder) for index, fp in enumerate(this_iteration_file_manifest)]) i_say = f'根据以上分析,对程序的整体功能和构架重新做出概括。然后用一张markdown表格整理每个文件的功能(包括{previous_iteration_files_string})。' inputs_show_user = f'根据以上分析,对程序的整体功能和构架重新做出概括,由于输入长度限制,可能需要分组处理,本组文件为 {current_iteration_focus} + 已经汇总的文件组。' this_iteration_history = copy.deepcopy(this_iteration_gpt_response_collection) - this_iteration_history.extend(last_iteration_result) + this_iteration_history.append(last_iteration_result) result = yield from request_gpt_model_in_new_thread_with_ui_alive( inputs=i_say, inputs_show_user=inputs_show_user, llm_kwargs=llm_kwargs, chatbot=chatbot, history=this_iteration_history, # 迭代之前的分析 diff --git a/requirements.txt b/requirements.txt index 1b61d02..4a8fe45 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,6 +4,7 @@ transformers python-markdown-math beautifulsoup4 latex2mathml +python-docx mdtex2html colorama tiktoken @@ -12,4 +13,4 @@ pygments pymupdf openai numpy -python-docx \ No newline at end of file +arxiv \ No newline at end of file