优化界面显示|将say也转换为markdwon 格式,并且不做多处理|增强user 和 bot 的对比
This commit is contained in:
@ -395,8 +395,8 @@ def check_proxy_free():
|
|||||||
time.sleep(5)
|
time.sleep(5)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
# PORT = find_free_port() if WEB_PORT <= 0 else WEB_PORT
|
PORT = find_free_port() if WEB_PORT <= 0 else WEB_PORT
|
||||||
PORT = 7891 if WEB_PORT <= 0 else WEB_PORT
|
# PORT = 7891 if WEB_PORT <= 0 else WEB_PORT
|
||||||
check_proxy_free()
|
check_proxy_free()
|
||||||
ChatBot().main()
|
ChatBot().main()
|
||||||
gr.close_all()
|
gr.close_all()
|
||||||
|
|||||||
@ -118,11 +118,11 @@ def get_crazy_functions():
|
|||||||
"Function": HotReload(解析项目本身),
|
"Function": HotReload(解析项目本身),
|
||||||
"AsButton": False, # 加入下拉菜单中
|
"AsButton": False, # 加入下拉菜单中
|
||||||
},
|
},
|
||||||
"[老旧的Demo] 把本项目源代码切换成全英文": {
|
# "[老旧的Demo] 把本项目源代码切换成全英文": {
|
||||||
# HotReload 的意思是热更新,修改函数插件代码后,不需要重启程序,代码直接生效
|
# # HotReload 的意思是热更新,修改函数插件代码后,不需要重启程序,代码直接生效
|
||||||
"AsButton": False, # 加入下拉菜单中
|
# "AsButton": False, # 加入下拉菜单中
|
||||||
"Function": HotReload(全项目切换英文)
|
# "Function": HotReload(全项目切换英文)
|
||||||
},
|
# },
|
||||||
"[插件demo] 历史上的今天": {
|
"[插件demo] 历史上的今天": {
|
||||||
# HotReload 的意思是热更新,修改函数插件代码后,不需要重启程序,代码直接生效
|
# HotReload 的意思是热更新,修改函数插件代码后,不需要重启程序,代码直接生效
|
||||||
"Function": HotReload(高阶功能模板函数)
|
"Function": HotReload(高阶功能模板函数)
|
||||||
|
|||||||
30
crazy_functions/理解Jupyter.py
Normal file
30
crazy_functions/理解Jupyter.py
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
#! .\venv\
|
||||||
|
# encoding: utf-8
|
||||||
|
# @Time : 2023/5/23
|
||||||
|
# @Author : Spike
|
||||||
|
# @Descr :
|
||||||
|
import json
|
||||||
|
from toolbox import CatchException, update_ui
|
||||||
|
from crazy_functions.crazy_utils import request_gpt_model_in_new_thread_with_ui_alive, input_clipping
|
||||||
|
import func_box
|
||||||
|
|
||||||
|
|
||||||
|
class ParseNoteBook:
|
||||||
|
|
||||||
|
def __init__(self, file):
|
||||||
|
self.file = file
|
||||||
|
|
||||||
|
def load_dict(self):
|
||||||
|
with open(self.file, 'r', encoding='utf-8', errors='replace') as f:
|
||||||
|
return json.load(f)
|
||||||
|
|
||||||
|
|
||||||
|
@CatchException
|
||||||
|
def 翻译理解jupyter(txt, llm_kwargs, plugin_kwargs, chatbot, history, system_prompt, web_port):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
obj = ParseNoteBook('/Users/kilig/Desktop/jupy/NotarizedUpload.ipynb').load_dict()
|
||||||
|
print(obj['cells'])
|
||||||
|
|
||||||
@ -144,3 +144,13 @@ def 解析ipynb文件(txt, llm_kwargs, plugin_kwargs, chatbot, history, system_p
|
|||||||
yield from update_ui(chatbot=chatbot, history=history) # 刷新界面
|
yield from update_ui(chatbot=chatbot, history=history) # 刷新界面
|
||||||
return
|
return
|
||||||
yield from ipynb解释(file_manifest, project_folder, llm_kwargs, plugin_kwargs, chatbot, history, system_prompt, )
|
yield from ipynb解释(file_manifest, project_folder, llm_kwargs, plugin_kwargs, chatbot, history, system_prompt, )
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
import json
|
||||||
|
filename = ''
|
||||||
|
code = parseNotebook(filename)
|
||||||
|
print(code)
|
||||||
|
with open(filename, 'r', encoding='utf-8', errors='replace') as f:
|
||||||
|
notebook = f.read()
|
||||||
|
print(notebook)
|
||||||
22
func_box.py
22
func_box.py
@ -4,6 +4,7 @@
|
|||||||
# @Author : Spike
|
# @Author : Spike
|
||||||
# @Descr :
|
# @Descr :
|
||||||
import hashlib
|
import hashlib
|
||||||
|
import io
|
||||||
import json
|
import json
|
||||||
import os.path
|
import os.path
|
||||||
import subprocess
|
import subprocess
|
||||||
@ -480,8 +481,8 @@ def thread_write_chat(chatbot):
|
|||||||
"""
|
"""
|
||||||
private_key = toolbox.get_conf('private_key')[0]
|
private_key = toolbox.get_conf('private_key')[0]
|
||||||
chat_title = chatbot[0][0].split()
|
chat_title = chatbot[0][0].split()
|
||||||
i_say = chatbot[-1][0].strip("<p>/p")
|
i_say = chatbot[-1][0].strip("<p>/p").strip('<div class="markdown-body">/div')
|
||||||
gpt_result = chatbot[-1][1].strip('<div class="markdown-body">/div')
|
gpt_result = chatbot[-1][1].strip("<p>/p").strip('<div class="markdown-body">/div')
|
||||||
if private_key in chat_title:
|
if private_key in chat_title:
|
||||||
SqliteHandle(f'ai_private_{chat_title[-2]}').inset_prompt({i_say: gpt_result})
|
SqliteHandle(f'ai_private_{chat_title[-2]}').inset_prompt({i_say: gpt_result})
|
||||||
else:
|
else:
|
||||||
@ -526,17 +527,20 @@ class YamlHandle:
|
|||||||
|
|
||||||
class JsonHandle:
|
class JsonHandle:
|
||||||
|
|
||||||
def __init__(self, file=os.path.join(prompt_path, 'prompts-PlexPt.json')):
|
def __init__(self, file):
|
||||||
if not os.path.exists(file):
|
if os.path.exists(file):
|
||||||
Shell(f'touch {file}').read()
|
with open(file=file, mode='r') as self.file_obj:
|
||||||
self.file = file
|
pass
|
||||||
|
else:
|
||||||
|
self.file_obj = io.StringIO() # 创建空白文本对象
|
||||||
|
self.file_obj.write('{}') # 向文本对象写入有有效 JSON 格式的数据
|
||||||
|
self.file_obj.seek(0) # 将文本对象的光标重置到开头
|
||||||
|
|
||||||
def load(self):
|
def load(self):
|
||||||
with open(file=self.file, mode='r') as f:
|
data = json.load(self.file_obj)
|
||||||
data = json.load(f)
|
|
||||||
return data
|
return data
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
pass
|
print(JsonHandle('/Users/kilig/Job/Python-project/academic_gpt/test.json').load())
|
||||||
|
|||||||
@ -282,7 +282,7 @@ def generate_payload(inputs, llm_kwargs, history, system_prompt, stream):
|
|||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
llm_kwargs = {
|
llm_kwargs = {
|
||||||
'api_key': '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',
|
'api_key': 'sk-',
|
||||||
'llm_model': 'gpt-3.5-turbo',
|
'llm_model': 'gpt-3.5-turbo',
|
||||||
'top_p': 1,
|
'top_p': 1,
|
||||||
'max_length': 512,
|
'max_length': 512,
|
||||||
|
|||||||
8
theme.py
8
theme.py
@ -33,7 +33,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=["sans-serif", "PingFang SC", "ui-sans-serif", "system-ui",
|
||||||
"sans-serif", gr.themes.utils.fonts.GoogleFont("Source Sans Pro")],
|
"sans-serif", gr.themes.utils.fonts.GoogleFont("Source Sans Pro")],
|
||||||
font_mono=["ui-monospace", "Consolas", "monospace", gr.themes.utils.fonts.GoogleFont("IBM Plex Mono")])
|
font_mono=["ui-monospace", "Consolas", "monospace", gr.themes.utils.fonts.GoogleFont("IBM Plex Mono")])
|
||||||
set_theme.set(
|
set_theme.set(
|
||||||
@ -137,11 +137,15 @@ advanced_css = """
|
|||||||
}
|
}
|
||||||
[data-testid = "bot"] {
|
[data-testid = "bot"] {
|
||||||
max-width: 95%;
|
max-width: 95%;
|
||||||
|
color: #ccd2db !important;
|
||||||
|
letter-spacing: 0.5px;
|
||||||
|
font-weight: normal;
|
||||||
/* width: auto !important; */
|
/* width: auto !important; */
|
||||||
border-bottom-left-radius: 0 !important;
|
border-bottom-left-radius: 0 !important;
|
||||||
}
|
}
|
||||||
[data-testid = "user"] {
|
[data-testid = "user"] {
|
||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
|
letter-spacing: 0.5px;
|
||||||
/* width: auto !important; */
|
/* width: auto !important; */
|
||||||
border-bottom-right-radius: 0 !important;
|
border-bottom-right-radius: 0 !important;
|
||||||
}
|
}
|
||||||
@ -154,7 +158,7 @@ advanced_css = """
|
|||||||
margin: 0 2px 0 2px;
|
margin: 0 2px 0 2px;
|
||||||
padding: .2em .4em .1em .4em;
|
padding: .2em .4em .1em .4em;
|
||||||
background-color: rgba(13, 17, 23, 0.95);
|
background-color: rgba(13, 17, 23, 0.95);
|
||||||
color: #c9d1d9;
|
color: #eff0f2;
|
||||||
}
|
}
|
||||||
|
|
||||||
.dark .markdown-body code {
|
.dark .markdown-body code {
|
||||||
|
|||||||
10
toolbox.py
10
toolbox.py
@ -249,10 +249,10 @@ def text_divide_paragraph(text):
|
|||||||
return text
|
return text
|
||||||
else:
|
else:
|
||||||
# wtf input
|
# wtf input
|
||||||
lines = text.split("\n")
|
# lines = text.split("\n")
|
||||||
# for i, line in enumerate(lines):
|
# for i, line in enumerate(lines):
|
||||||
# lines[i] = lines[i].replace(" ", " ")
|
# lines[i] = lines[i].replace(" ", " ")
|
||||||
text = "</br>".join(lines)
|
# text = "</br>".join(lines)
|
||||||
return text
|
return text
|
||||||
|
|
||||||
@lru_cache(maxsize=128) # 使用 lru缓存 加快转换速度
|
@lru_cache(maxsize=128) # 使用 lru缓存 加快转换速度
|
||||||
@ -365,11 +365,11 @@ def format_io(self, y):
|
|||||||
if y is None or y == []:
|
if y is None or y == []:
|
||||||
return []
|
return []
|
||||||
i_ask, gpt_reply = y[-1]
|
i_ask, gpt_reply = y[-1]
|
||||||
i_ask = text_divide_paragraph(i_ask) # 输入部分太自由,预处理一波
|
# i_ask = text_divide_paragraph(i_ask) # 输入部分太自由,预处理一波
|
||||||
gpt_reply = close_up_code_segment_during_stream(gpt_reply) # 当代码输出半截的时候,试着补上后个```
|
gpt_reply = close_up_code_segment_during_stream(gpt_reply) # 当代码输出半截的时候,试着补上后个```
|
||||||
y[-1] = (
|
y[-1] = (
|
||||||
None if i_ask is None else markdown.markdown(i_ask, extensions=['fenced_code', 'tables']),
|
# None if i_ask is None else markdown.markdown(i_ask, extensions=['fenced_code', 'tables']),
|
||||||
#None if i_ask is None else markdown_convertion(i_ask),
|
None if i_ask is None else markdown_convertion(i_ask),
|
||||||
None if gpt_reply is None else markdown_convertion(gpt_reply)
|
None if gpt_reply is None else markdown_convertion(gpt_reply)
|
||||||
)
|
)
|
||||||
return y
|
return y
|
||||||
|
|||||||
Reference in New Issue
Block a user