qingxu99 commited on
Commit
07807e4
1 Parent(s): 95f8b28

插件支持保存对话

Browse files
crazy_functional.py CHANGED
@@ -20,12 +20,17 @@ def get_crazy_functions():
20
  from crazy_functions.解析项目源代码 import 解析一个CSharp项目
21
  from crazy_functions.总结word文档 import 总结word文档
22
  from crazy_functions.解析JupyterNotebook import 解析ipynb文件
 
23
  function_plugins = {
24
 
25
  "解析整个Python项目": {
26
  "Color": "stop", # 按钮颜色
27
  "Function": HotReload(解析一个Python项目)
28
  },
 
 
 
 
29
  "[测试功能] 解析Jupyter Notebook文件": {
30
  "Color": "stop",
31
  "AsButton":False,
 
20
  from crazy_functions.解析项目源代码 import 解析一个CSharp项目
21
  from crazy_functions.总结word文档 import 总结word文档
22
  from crazy_functions.解析JupyterNotebook import 解析ipynb文件
23
+ from crazy_functions.对话历史存档 import 对话历史存档
24
  function_plugins = {
25
 
26
  "解析整个Python项目": {
27
  "Color": "stop", # 按钮颜色
28
  "Function": HotReload(解析一个Python项目)
29
  },
30
+ "保存当前的对话": {
31
+ "AsButton":False,
32
+ "Function": HotReload(对话历史存档)
33
+ },
34
  "[测试功能] 解析Jupyter Notebook文件": {
35
  "Color": "stop",
36
  "AsButton":False,
crazy_functions/对话历史存档.py ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from toolbox import CatchException, update_ui
2
+ from .crazy_utils import request_gpt_model_in_new_thread_with_ui_alive
3
+
4
+ def write_chat_to_file(chatbot, file_name=None):
5
+ """
6
+ 将对话记录history以Markdown格式写入文件中。如果没有指定文件名,则使用当前时间生成文件名。
7
+ """
8
+ import os
9
+ import time
10
+ if file_name is None:
11
+ file_name = 'chatGPT对话历史' + time.strftime("%Y-%m-%d-%H-%M-%S", time.localtime()) + '.html'
12
+ os.makedirs('./gpt_log/', exist_ok=True)
13
+ with open(f'./gpt_log/{file_name}', 'w', encoding='utf8') as f:
14
+ for i, contents in enumerate(chatbot):
15
+ for content in contents:
16
+ try: # 这个bug没找到触发条件,暂时先这样顶一下
17
+ if type(content) != str: content = str(content)
18
+ except:
19
+ continue
20
+ f.write(content)
21
+ f.write('\n\n')
22
+ f.write('<hr color="red"> \n\n')
23
+
24
+ res = '对话历史写入:' + os.path.abspath(f'./gpt_log/{file_name}')
25
+ print(res)
26
+ return res
27
+
28
+ @CatchException
29
+ def 对话历史存档(txt, llm_kwargs, plugin_kwargs, chatbot, history, system_prompt, web_port):
30
+ """
31
+ txt 输入栏用户输入的文本,例如需要翻译的一段话,再例如一个包含了待处理文件的路径
32
+ llm_kwargs gpt模型参数,如温度和top_p等,一般原样传递下去就行
33
+ plugin_kwargs 插件模型的参数,暂时没有用武之地
34
+ chatbot 聊天显示框的句柄,用于显示给用户
35
+ history 聊天历史,前情提要
36
+ system_prompt 给gpt的静默提醒
37
+ web_port 当前软件运行的端口号
38
+ """
39
+
40
+ chatbot.append(("保存当前对话", f"[Local Message] {write_chat_to_file(chatbot)}"))
41
+ yield from update_ui(chatbot=chatbot, history=history) # 刷新界面 # 由于请求gpt需要一段时间,我们先及时地做一次界面更新
42
+