Spaces:
Running
Running
:gem: [Feature] MessageStreamer: Support stop sequence and auto removal
Browse files- networks/message_streamer.py +21 -4
networks/message_streamer.py
CHANGED
@@ -10,11 +10,16 @@ class MessageStreamer:
|
|
10 |
MODEL_MAP = {
|
11 |
"mixtral-8x7b": "mistralai/Mixtral-8x7B-Instruct-v0.1", # 72.62, fast [Recommended]
|
12 |
"mistral-7b": "mistralai/Mistral-7B-Instruct-v0.2", # 65.71, fast
|
13 |
-
"openchat-3.5": "openchat/
|
14 |
# "zephyr-7b-alpha": "HuggingFaceH4/zephyr-7b-alpha", # 59.5, fast
|
15 |
# "zephyr-7b-beta": "HuggingFaceH4/zephyr-7b-beta", # 61.95, slow
|
16 |
"default": "mistralai/Mixtral-8x7B-Instruct-v0.1",
|
17 |
}
|
|
|
|
|
|
|
|
|
|
|
18 |
|
19 |
def __init__(self, model: str):
|
20 |
if model in self.MODEL_MAP.keys():
|
@@ -68,6 +73,13 @@ class MessageStreamer:
|
|
68 |
},
|
69 |
"stream": True,
|
70 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
71 |
logger.back(self.request_url)
|
72 |
enver.set_envs(proxies=True)
|
73 |
stream_response = requests.post(
|
@@ -100,18 +112,23 @@ class MessageStreamer:
|
|
100 |
]
|
101 |
logger.back(final_output)
|
102 |
|
|
|
103 |
for line in stream_response.iter_lines():
|
104 |
if not line:
|
105 |
continue
|
106 |
content = self.parse_line(line)
|
107 |
|
108 |
-
if content.strip() ==
|
109 |
logger.success("\n[Finished]")
|
110 |
break
|
111 |
else:
|
112 |
logger.back(content, end="")
|
113 |
-
|
|
|
|
|
|
|
114 |
|
|
|
115 |
return final_output
|
116 |
|
117 |
def chat_return_generator(self, stream_response):
|
@@ -122,7 +139,7 @@ class MessageStreamer:
|
|
122 |
|
123 |
content = self.parse_line(line)
|
124 |
|
125 |
-
if content.strip() ==
|
126 |
content_type = "Finished"
|
127 |
logger.success("\n[Finished]")
|
128 |
is_finished = True
|
|
|
10 |
MODEL_MAP = {
|
11 |
"mixtral-8x7b": "mistralai/Mixtral-8x7B-Instruct-v0.1", # 72.62, fast [Recommended]
|
12 |
"mistral-7b": "mistralai/Mistral-7B-Instruct-v0.2", # 65.71, fast
|
13 |
+
"openchat-3.5": "openchat/openchat-3.5-1210", # ??, fast
|
14 |
# "zephyr-7b-alpha": "HuggingFaceH4/zephyr-7b-alpha", # 59.5, fast
|
15 |
# "zephyr-7b-beta": "HuggingFaceH4/zephyr-7b-beta", # 61.95, slow
|
16 |
"default": "mistralai/Mixtral-8x7B-Instruct-v0.1",
|
17 |
}
|
18 |
+
STOP_SEQUENCES_MAP = {
|
19 |
+
"mixtral-8x7b": "</s>",
|
20 |
+
"mistral-7b": "</s>",
|
21 |
+
"openchat-3.5": "<|end_of_turn|>",
|
22 |
+
}
|
23 |
|
24 |
def __init__(self, model: str):
|
25 |
if model in self.MODEL_MAP.keys():
|
|
|
73 |
},
|
74 |
"stream": True,
|
75 |
}
|
76 |
+
|
77 |
+
if self.model in self.STOP_SEQUENCES_MAP.keys():
|
78 |
+
self.stop_sequences = self.STOP_SEQUENCES_MAP[self.model]
|
79 |
+
# self.request_body["parameters"]["stop_sequences"] = [
|
80 |
+
# self.STOP_SEQUENCES[self.model]
|
81 |
+
# ]
|
82 |
+
|
83 |
logger.back(self.request_url)
|
84 |
enver.set_envs(proxies=True)
|
85 |
stream_response = requests.post(
|
|
|
112 |
]
|
113 |
logger.back(final_output)
|
114 |
|
115 |
+
final_content = ""
|
116 |
for line in stream_response.iter_lines():
|
117 |
if not line:
|
118 |
continue
|
119 |
content = self.parse_line(line)
|
120 |
|
121 |
+
if content.strip() == self.stop_sequences:
|
122 |
logger.success("\n[Finished]")
|
123 |
break
|
124 |
else:
|
125 |
logger.back(content, end="")
|
126 |
+
final_content += content
|
127 |
+
|
128 |
+
if self.model in self.STOP_SEQUENCES_MAP.keys():
|
129 |
+
final_content = final_content.replace(self.stop_sequences, "")
|
130 |
|
131 |
+
final_output["choices"][0]["message"]["content"] = final_content
|
132 |
return final_output
|
133 |
|
134 |
def chat_return_generator(self, stream_response):
|
|
|
139 |
|
140 |
content = self.parse_line(line)
|
141 |
|
142 |
+
if content.strip() == self.stop_sequences:
|
143 |
content_type = "Finished"
|
144 |
logger.success("\n[Finished]")
|
145 |
is_finished = True
|