Spaces:
Sleeping
Sleeping
tiktoken做lazyload处理
Browse files- check_proxy.py +8 -1
- crazy_functions/Latex全文润色.py +2 -3
- crazy_functions/Latex全文翻译.py +2 -3
- crazy_functions/crazy_utils.py +2 -2
- crazy_functions/代码重写为全英文_多线程.py +2 -3
- crazy_functions/批量Markdown翻译.py +2 -3
- crazy_functions/批量翻译PDF文档_多线程.py +2 -2
- crazy_functions/理解PDF文档内容.py +2 -2
- main.py +2 -1
- request_llm/bridge_all.py +28 -10
- request_llm/bridge_chatglm.py +31 -4
- toolbox.py +0 -1
check_proxy.py
CHANGED
@@ -103,7 +103,7 @@ def auto_update():
|
|
103 |
import json
|
104 |
proxies, = get_conf('proxies')
|
105 |
response = requests.get(
|
106 |
-
"https://raw.githubusercontent.com/binary-husky/chatgpt_academic/master/version", proxies=proxies, timeout=
|
107 |
remote_json_data = json.loads(response.text)
|
108 |
remote_version = remote_json_data['version']
|
109 |
if remote_json_data["show_feature"]:
|
@@ -133,6 +133,13 @@ def auto_update():
|
|
133 |
except:
|
134 |
print('自动更新程序:已禁用')
|
135 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
136 |
|
137 |
if __name__ == '__main__':
|
138 |
import os
|
|
|
103 |
import json
|
104 |
proxies, = get_conf('proxies')
|
105 |
response = requests.get(
|
106 |
+
"https://raw.githubusercontent.com/binary-husky/chatgpt_academic/master/version", proxies=proxies, timeout=5)
|
107 |
remote_json_data = json.loads(response.text)
|
108 |
remote_version = remote_json_data['version']
|
109 |
if remote_json_data["show_feature"]:
|
|
|
133 |
except:
|
134 |
print('自动更新程序:已禁用')
|
135 |
|
136 |
+
def warm_up_modules():
|
137 |
+
print('正在执行一些模块的预热...')
|
138 |
+
from request_llm.bridge_all import model_info
|
139 |
+
enc = model_info["gpt-3.5-turbo"]['tokenizer']
|
140 |
+
enc.encode("模块预热", disallowed_special=())
|
141 |
+
enc = model_info["gpt-4"]['tokenizer']
|
142 |
+
enc.encode("模块预热", disallowed_special=())
|
143 |
|
144 |
if __name__ == '__main__':
|
145 |
import os
|
crazy_functions/Latex全文润色.py
CHANGED
@@ -11,9 +11,8 @@ class PaperFileGroup():
|
|
11 |
self.sp_file_tag = []
|
12 |
|
13 |
# count_token
|
14 |
-
import
|
15 |
-
|
16 |
-
enc = tiktoken.encoding_for_model("gpt-3.5-turbo")
|
17 |
def get_token_num(txt): return len(enc.encode(txt, disallowed_special=()))
|
18 |
self.get_token_num = get_token_num
|
19 |
|
|
|
11 |
self.sp_file_tag = []
|
12 |
|
13 |
# count_token
|
14 |
+
from request_llm.bridge_all import model_info
|
15 |
+
enc = model_info["gpt-3.5-turbo"]['tokenizer']
|
|
|
16 |
def get_token_num(txt): return len(enc.encode(txt, disallowed_special=()))
|
17 |
self.get_token_num = get_token_num
|
18 |
|
crazy_functions/Latex全文翻译.py
CHANGED
@@ -11,9 +11,8 @@ class PaperFileGroup():
|
|
11 |
self.sp_file_tag = []
|
12 |
|
13 |
# count_token
|
14 |
-
import
|
15 |
-
|
16 |
-
enc = tiktoken.encoding_for_model("gpt-3.5-turbo")
|
17 |
def get_token_num(txt): return len(enc.encode(txt, disallowed_special=()))
|
18 |
self.get_token_num = get_token_num
|
19 |
|
|
|
11 |
self.sp_file_tag = []
|
12 |
|
13 |
# count_token
|
14 |
+
from request_llm.bridge_all import model_info
|
15 |
+
enc = model_info["gpt-3.5-turbo"]['tokenizer']
|
|
|
16 |
def get_token_num(txt): return len(enc.encode(txt, disallowed_special=()))
|
17 |
self.get_token_num = get_token_num
|
18 |
|
crazy_functions/crazy_utils.py
CHANGED
@@ -2,9 +2,9 @@ import traceback
|
|
2 |
from toolbox import update_ui, get_conf
|
3 |
|
4 |
def input_clipping(inputs, history, max_token_limit):
|
5 |
-
import tiktoken
|
6 |
import numpy as np
|
7 |
-
|
|
|
8 |
def get_token_num(txt): return len(enc.encode(txt, disallowed_special=()))
|
9 |
|
10 |
mode = 'input-and-history'
|
|
|
2 |
from toolbox import update_ui, get_conf
|
3 |
|
4 |
def input_clipping(inputs, history, max_token_limit):
|
|
|
5 |
import numpy as np
|
6 |
+
from request_llm.bridge_all import model_info
|
7 |
+
enc = model_info["gpt-3.5-turbo"]['tokenizer']
|
8 |
def get_token_num(txt): return len(enc.encode(txt, disallowed_special=()))
|
9 |
|
10 |
mode = 'input-and-history'
|
crazy_functions/代码重写为全英文_多线程.py
CHANGED
@@ -59,9 +59,8 @@ def 全项目切换英文(txt, llm_kwargs, plugin_kwargs, chatbot, history, sys_
|
|
59 |
|
60 |
# 第5步:Token限制下的截断与处理
|
61 |
MAX_TOKEN = 3000
|
62 |
-
import
|
63 |
-
|
64 |
-
enc = tiktoken.encoding_for_model("gpt-3.5-turbo")
|
65 |
def get_token_fn(txt): return len(enc.encode(txt, disallowed_special=()))
|
66 |
|
67 |
|
|
|
59 |
|
60 |
# 第5步:Token限制下的截断与处理
|
61 |
MAX_TOKEN = 3000
|
62 |
+
from request_llm.bridge_all import model_info
|
63 |
+
enc = model_info["gpt-3.5-turbo"]['tokenizer']
|
|
|
64 |
def get_token_fn(txt): return len(enc.encode(txt, disallowed_special=()))
|
65 |
|
66 |
|
crazy_functions/批量Markdown翻译.py
CHANGED
@@ -11,9 +11,8 @@ class PaperFileGroup():
|
|
11 |
self.sp_file_tag = []
|
12 |
|
13 |
# count_token
|
14 |
-
import
|
15 |
-
|
16 |
-
enc = tiktoken.encoding_for_model("gpt-3.5-turbo")
|
17 |
def get_token_num(txt): return len(enc.encode(txt, disallowed_special=()))
|
18 |
self.get_token_num = get_token_num
|
19 |
|
|
|
11 |
self.sp_file_tag = []
|
12 |
|
13 |
# count_token
|
14 |
+
from request_llm.bridge_all import model_info
|
15 |
+
enc = model_info["gpt-3.5-turbo"]['tokenizer']
|
|
|
16 |
def get_token_num(txt): return len(enc.encode(txt, disallowed_special=()))
|
17 |
self.get_token_num = get_token_num
|
18 |
|
crazy_functions/批量翻译PDF文档_多线程.py
CHANGED
@@ -68,8 +68,8 @@ def 解析PDF(file_manifest, project_folder, llm_kwargs, plugin_kwargs, chatbot,
|
|
68 |
|
69 |
# 递归地切割PDF文件
|
70 |
from .crazy_utils import breakdown_txt_to_satisfy_token_limit_for_pdf
|
71 |
-
from
|
72 |
-
enc =
|
73 |
def get_token_num(txt): return len(enc.encode(txt, disallowed_special=()))
|
74 |
paper_fragments = breakdown_txt_to_satisfy_token_limit_for_pdf(
|
75 |
txt=file_content, get_token_fn=get_token_num, limit=TOKEN_LIMIT_PER_FRAGMENT)
|
|
|
68 |
|
69 |
# 递归地切割PDF文件
|
70 |
from .crazy_utils import breakdown_txt_to_satisfy_token_limit_for_pdf
|
71 |
+
from request_llm.bridge_all import model_info
|
72 |
+
enc = model_info["gpt-3.5-turbo"]['tokenizer']
|
73 |
def get_token_num(txt): return len(enc.encode(txt, disallowed_special=()))
|
74 |
paper_fragments = breakdown_txt_to_satisfy_token_limit_for_pdf(
|
75 |
txt=file_content, get_token_fn=get_token_num, limit=TOKEN_LIMIT_PER_FRAGMENT)
|
crazy_functions/理解PDF文档内容.py
CHANGED
@@ -17,8 +17,8 @@ def 解析PDF(file_name, llm_kwargs, plugin_kwargs, chatbot, history, system_pro
|
|
17 |
TOKEN_LIMIT_PER_FRAGMENT = 2500
|
18 |
|
19 |
from .crazy_utils import breakdown_txt_to_satisfy_token_limit_for_pdf
|
20 |
-
from
|
21 |
-
enc =
|
22 |
def get_token_num(txt): return len(enc.encode(txt, disallowed_special=()))
|
23 |
paper_fragments = breakdown_txt_to_satisfy_token_limit_for_pdf(
|
24 |
txt=file_content, get_token_fn=get_token_num, limit=TOKEN_LIMIT_PER_FRAGMENT)
|
|
|
17 |
TOKEN_LIMIT_PER_FRAGMENT = 2500
|
18 |
|
19 |
from .crazy_utils import breakdown_txt_to_satisfy_token_limit_for_pdf
|
20 |
+
from request_llm.bridge_all import model_info
|
21 |
+
enc = model_info["gpt-3.5-turbo"]['tokenizer']
|
22 |
def get_token_num(txt): return len(enc.encode(txt, disallowed_special=()))
|
23 |
paper_fragments = breakdown_txt_to_satisfy_token_limit_for_pdf(
|
24 |
txt=file_content, get_token_fn=get_token_num, limit=TOKEN_LIMIT_PER_FRAGMENT)
|
main.py
CHANGED
@@ -40,7 +40,7 @@ def main():
|
|
40 |
set_theme = adjust_theme()
|
41 |
|
42 |
# 代理与自动更新
|
43 |
-
from check_proxy import check_proxy, auto_update
|
44 |
proxy_info = check_proxy(proxies)
|
45 |
|
46 |
gr_L1 = lambda: gr.Row().style()
|
@@ -180,6 +180,7 @@ def main():
|
|
180 |
webbrowser.open_new_tab(f"http://localhost:{PORT}/?__dark-theme=true")
|
181 |
threading.Thread(target=open, name="open-browser", daemon=True).start()
|
182 |
threading.Thread(target=auto_update, name="self-upgrade", daemon=True).start()
|
|
|
183 |
|
184 |
auto_opentab_delay()
|
185 |
demo.queue(concurrency_count=CONCURRENT_COUNT).launch(server_name="0.0.0.0", server_port=PORT, auth=AUTHENTICATION, favicon_path="docs/logo.png")
|
|
|
40 |
set_theme = adjust_theme()
|
41 |
|
42 |
# 代理与自动更新
|
43 |
+
from check_proxy import check_proxy, auto_update, warm_up_modules
|
44 |
proxy_info = check_proxy(proxies)
|
45 |
|
46 |
gr_L1 = lambda: gr.Row().style()
|
|
|
180 |
webbrowser.open_new_tab(f"http://localhost:{PORT}/?__dark-theme=true")
|
181 |
threading.Thread(target=open, name="open-browser", daemon=True).start()
|
182 |
threading.Thread(target=auto_update, name="self-upgrade", daemon=True).start()
|
183 |
+
threading.Thread(target=warm_up_modules, name="warm-up", daemon=True).start()
|
184 |
|
185 |
auto_opentab_delay()
|
186 |
demo.queue(concurrency_count=CONCURRENT_COUNT).launch(server_name="0.0.0.0", server_port=PORT, auth=AUTHENTICATION, favicon_path="docs/logo.png")
|
request_llm/bridge_all.py
CHANGED
@@ -9,7 +9,7 @@
|
|
9 |
2. predict_no_ui_long_connection:在实验过程中发现调用predict_no_ui处理长文档时,和openai的连接容易断掉,这个函数用stream的方式解决这个问题,同样支持多线程
|
10 |
"""
|
11 |
import tiktoken
|
12 |
-
|
13 |
from concurrent.futures import ThreadPoolExecutor
|
14 |
|
15 |
from .bridge_chatgpt import predict_no_ui_long_connection as chatgpt_noui
|
@@ -18,13 +18,31 @@ from .bridge_chatgpt import predict as chatgpt_ui
|
|
18 |
from .bridge_chatglm import predict_no_ui_long_connection as chatglm_noui
|
19 |
from .bridge_chatglm import predict as chatglm_ui
|
20 |
|
21 |
-
from .bridge_tgui import predict_no_ui_long_connection as tgui_noui
|
22 |
-
from .bridge_tgui import predict as tgui_ui
|
23 |
|
24 |
colors = ['#FF00FF', '#00FFFF', '#FF0000', '#990099', '#009999', '#990044']
|
25 |
|
26 |
-
|
27 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
28 |
|
29 |
model_info = {
|
30 |
# openai
|
@@ -33,7 +51,7 @@ model_info = {
|
|
33 |
"fn_without_ui": chatgpt_noui,
|
34 |
"endpoint": "https://api.openai.com/v1/chat/completions",
|
35 |
"max_token": 4096,
|
36 |
-
"tokenizer":
|
37 |
"token_cnt": get_token_num_gpt35,
|
38 |
},
|
39 |
|
@@ -42,7 +60,7 @@ model_info = {
|
|
42 |
"fn_without_ui": chatgpt_noui,
|
43 |
"endpoint": "https://api.openai.com/v1/chat/completions",
|
44 |
"max_token": 8192,
|
45 |
-
"tokenizer":
|
46 |
"token_cnt": get_token_num_gpt4,
|
47 |
},
|
48 |
|
@@ -52,7 +70,7 @@ model_info = {
|
|
52 |
"fn_without_ui": chatgpt_noui,
|
53 |
"endpoint": "https://openai.api2d.net/v1/chat/completions",
|
54 |
"max_token": 4096,
|
55 |
-
"tokenizer":
|
56 |
"token_cnt": get_token_num_gpt35,
|
57 |
},
|
58 |
|
@@ -61,7 +79,7 @@ model_info = {
|
|
61 |
"fn_without_ui": chatgpt_noui,
|
62 |
"endpoint": "https://openai.api2d.net/v1/chat/completions",
|
63 |
"max_token": 8192,
|
64 |
-
"tokenizer":
|
65 |
"token_cnt": get_token_num_gpt4,
|
66 |
},
|
67 |
|
@@ -71,7 +89,7 @@ model_info = {
|
|
71 |
"fn_without_ui": chatglm_noui,
|
72 |
"endpoint": None,
|
73 |
"max_token": 1024,
|
74 |
-
"tokenizer":
|
75 |
"token_cnt": get_token_num_gpt35,
|
76 |
},
|
77 |
|
|
|
9 |
2. predict_no_ui_long_connection:在实验过程中发现调用predict_no_ui处理长文档时,和openai的连接容易断掉,这个函数用stream的方式解决这个问题,同样支持多线程
|
10 |
"""
|
11 |
import tiktoken
|
12 |
+
from functools import wraps, lru_cache
|
13 |
from concurrent.futures import ThreadPoolExecutor
|
14 |
|
15 |
from .bridge_chatgpt import predict_no_ui_long_connection as chatgpt_noui
|
|
|
18 |
from .bridge_chatglm import predict_no_ui_long_connection as chatglm_noui
|
19 |
from .bridge_chatglm import predict as chatglm_ui
|
20 |
|
21 |
+
# from .bridge_tgui import predict_no_ui_long_connection as tgui_noui
|
22 |
+
# from .bridge_tgui import predict as tgui_ui
|
23 |
|
24 |
colors = ['#FF00FF', '#00FFFF', '#FF0000', '#990099', '#009999', '#990044']
|
25 |
|
26 |
+
class LazyloadTiktoken(object):
|
27 |
+
def __init__(self, model):
|
28 |
+
self.model = model
|
29 |
+
|
30 |
+
@staticmethod
|
31 |
+
@lru_cache(maxsize=128)
|
32 |
+
def get_encoder(model):
|
33 |
+
print('正在加载tokenizer,如果是第一次运行,可能需要一点时间下载参数')
|
34 |
+
tmp = tiktoken.encoding_for_model(model)
|
35 |
+
print('加载tokenizer完毕')
|
36 |
+
return tmp
|
37 |
+
|
38 |
+
def encode(self, *args, **kwargs):
|
39 |
+
encoder = self.get_encoder(self.model)
|
40 |
+
return encoder.encode(*args, **kwargs)
|
41 |
+
|
42 |
+
tokenizer_gpt35 = LazyloadTiktoken("gpt-3.5-turbo")
|
43 |
+
tokenizer_gpt4 = LazyloadTiktoken("gpt-4")
|
44 |
+
get_token_num_gpt35 = lambda txt: len(tokenizer_gpt35.encode(txt, disallowed_special=()))
|
45 |
+
get_token_num_gpt4 = lambda txt: len(tokenizer_gpt4.encode(txt, disallowed_special=()))
|
46 |
|
47 |
model_info = {
|
48 |
# openai
|
|
|
51 |
"fn_without_ui": chatgpt_noui,
|
52 |
"endpoint": "https://api.openai.com/v1/chat/completions",
|
53 |
"max_token": 4096,
|
54 |
+
"tokenizer": tokenizer_gpt35,
|
55 |
"token_cnt": get_token_num_gpt35,
|
56 |
},
|
57 |
|
|
|
60 |
"fn_without_ui": chatgpt_noui,
|
61 |
"endpoint": "https://api.openai.com/v1/chat/completions",
|
62 |
"max_token": 8192,
|
63 |
+
"tokenizer": tokenizer_gpt4,
|
64 |
"token_cnt": get_token_num_gpt4,
|
65 |
},
|
66 |
|
|
|
70 |
"fn_without_ui": chatgpt_noui,
|
71 |
"endpoint": "https://openai.api2d.net/v1/chat/completions",
|
72 |
"max_token": 4096,
|
73 |
+
"tokenizer": tokenizer_gpt35,
|
74 |
"token_cnt": get_token_num_gpt35,
|
75 |
},
|
76 |
|
|
|
79 |
"fn_without_ui": chatgpt_noui,
|
80 |
"endpoint": "https://openai.api2d.net/v1/chat/completions",
|
81 |
"max_token": 8192,
|
82 |
+
"tokenizer": tokenizer_gpt4,
|
83 |
"token_cnt": get_token_num_gpt4,
|
84 |
},
|
85 |
|
|
|
89 |
"fn_without_ui": chatglm_noui,
|
90 |
"endpoint": None,
|
91 |
"max_token": 1024,
|
92 |
+
"tokenizer": tokenizer_gpt35,
|
93 |
"token_cnt": get_token_num_gpt35,
|
94 |
},
|
95 |
|
request_llm/bridge_chatglm.py
CHANGED
@@ -5,6 +5,8 @@ import importlib
|
|
5 |
from toolbox import update_ui, get_conf
|
6 |
from multiprocessing import Process, Pipe
|
7 |
|
|
|
|
|
8 |
#################################################################################
|
9 |
class GetGLMHandle(Process):
|
10 |
def __init__(self):
|
@@ -12,13 +14,26 @@ class GetGLMHandle(Process):
|
|
12 |
self.parent, self.child = Pipe()
|
13 |
self.chatglm_model = None
|
14 |
self.chatglm_tokenizer = None
|
|
|
|
|
|
|
15 |
self.start()
|
16 |
-
print('初始化')
|
17 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
18 |
def ready(self):
|
19 |
return self.chatglm_model is not None
|
20 |
|
21 |
def run(self):
|
|
|
|
|
22 |
while True:
|
23 |
try:
|
24 |
if self.chatglm_model is None:
|
@@ -33,7 +48,12 @@ class GetGLMHandle(Process):
|
|
33 |
else:
|
34 |
break
|
35 |
except:
|
36 |
-
|
|
|
|
|
|
|
|
|
|
|
37 |
while True:
|
38 |
kwargs = self.child.recv()
|
39 |
try:
|
@@ -64,7 +84,11 @@ def predict_no_ui_long_connection(inputs, llm_kwargs, history=[], sys_prompt="",
|
|
64 |
global glm_handle
|
65 |
if glm_handle is None:
|
66 |
glm_handle = GetGLMHandle()
|
67 |
-
observe_window[0] = "
|
|
|
|
|
|
|
|
|
68 |
|
69 |
# chatglm 没有 sys_prompt 接口,因此把prompt加入 history
|
70 |
history_feedin = []
|
@@ -93,8 +117,11 @@ def predict(inputs, llm_kwargs, plugin_kwargs, chatbot, history=[], system_promp
|
|
93 |
global glm_handle
|
94 |
if glm_handle is None:
|
95 |
glm_handle = GetGLMHandle()
|
96 |
-
chatbot[-1] = (inputs, "
|
97 |
yield from update_ui(chatbot=chatbot, history=[])
|
|
|
|
|
|
|
98 |
|
99 |
if additional_fn is not None:
|
100 |
import core_functional
|
|
|
5 |
from toolbox import update_ui, get_conf
|
6 |
from multiprocessing import Process, Pipe
|
7 |
|
8 |
+
load_message = "ChatGLM尚未加载,加载需要一段时间。注意,取决于`config.py`的配置,ChatGLM消耗大量的内存(CPU)或显存(GPU),也许会导致低配计算机卡死 ……"
|
9 |
+
|
10 |
#################################################################################
|
11 |
class GetGLMHandle(Process):
|
12 |
def __init__(self):
|
|
|
14 |
self.parent, self.child = Pipe()
|
15 |
self.chatglm_model = None
|
16 |
self.chatglm_tokenizer = None
|
17 |
+
self.info = ""
|
18 |
+
self.success = True
|
19 |
+
self.check_dependency()
|
20 |
self.start()
|
|
|
21 |
|
22 |
+
def check_dependency(self):
|
23 |
+
try:
|
24 |
+
import sentencepiece
|
25 |
+
self.info = "依赖检测通过"
|
26 |
+
self.success = True
|
27 |
+
except:
|
28 |
+
self.info = "缺少ChatGLM的依赖,如果要使用ChatGLM,除了基础的pip依赖以外,您还需要运行`pip install -r request_llm/requirements_chatglm.txt`安装ChatGLM的依赖。"
|
29 |
+
self.success = False
|
30 |
+
|
31 |
def ready(self):
|
32 |
return self.chatglm_model is not None
|
33 |
|
34 |
def run(self):
|
35 |
+
# 第一次运行,加载参数
|
36 |
+
retry = 0
|
37 |
while True:
|
38 |
try:
|
39 |
if self.chatglm_model is None:
|
|
|
48 |
else:
|
49 |
break
|
50 |
except:
|
51 |
+
retry += 1
|
52 |
+
if retry > 3:
|
53 |
+
self.child.send('[Local Message] Call ChatGLM fail 不能正常加载ChatGLM的参数。')
|
54 |
+
raise RuntimeError("不能正常加载ChatGLM的参数!")
|
55 |
+
|
56 |
+
# 进入任务等待状态
|
57 |
while True:
|
58 |
kwargs = self.child.recv()
|
59 |
try:
|
|
|
84 |
global glm_handle
|
85 |
if glm_handle is None:
|
86 |
glm_handle = GetGLMHandle()
|
87 |
+
observe_window[0] = load_message + "\n\n" + glm_handle.info
|
88 |
+
if not glm_handle.success:
|
89 |
+
error = glm_handle.info
|
90 |
+
glm_handle = None
|
91 |
+
raise RuntimeError(error)
|
92 |
|
93 |
# chatglm 没有 sys_prompt 接口,因此把prompt加入 history
|
94 |
history_feedin = []
|
|
|
117 |
global glm_handle
|
118 |
if glm_handle is None:
|
119 |
glm_handle = GetGLMHandle()
|
120 |
+
chatbot[-1] = (inputs, load_message + "\n\n" + glm_handle.info)
|
121 |
yield from update_ui(chatbot=chatbot, history=[])
|
122 |
+
if not glm_handle.success:
|
123 |
+
glm_handle = None
|
124 |
+
return
|
125 |
|
126 |
if additional_fn is not None:
|
127 |
import core_functional
|
toolbox.py
CHANGED
@@ -25,7 +25,6 @@ def ArgsGeneralWrapper(f):
|
|
25 |
装饰器函数,用于重组输入参数,改变输入参数的顺序与结构。
|
26 |
"""
|
27 |
def decorated(cookies, max_length, llm_model, txt, txt2, top_p, temperature, chatbot, history, system_prompt, *args):
|
28 |
-
from request_llm.bridge_all import model_info
|
29 |
txt_passon = txt
|
30 |
if txt == "" and txt2 != "": txt_passon = txt2
|
31 |
# 引入一个有cookie的chatbot
|
|
|
25 |
装饰器函数,用于重组输入参数,改变输入参数的顺序与结构。
|
26 |
"""
|
27 |
def decorated(cookies, max_length, llm_model, txt, txt2, top_p, temperature, chatbot, history, system_prompt, *args):
|
|
|
28 |
txt_passon = txt
|
29 |
if txt == "" and txt2 != "": txt_passon = txt2
|
30 |
# 引入一个有cookie的chatbot
|