Spaces:
Runtime error
Runtime error
ffreemt
commited on
Commit
•
23fc95a
1
Parent(s):
e178694
Update streaming...
Browse files- .gitignore +1 -0
- app.py +111 -40
.gitignore
CHANGED
@@ -8,3 +8,4 @@ pyproject.toml
|
|
8 |
models
|
9 |
.ruff_cache
|
10 |
run-nodemon.sh
|
|
|
|
8 |
models
|
9 |
.ruff_cache
|
10 |
run-nodemon.sh
|
11 |
+
app-.py
|
app.py
CHANGED
@@ -1,10 +1,6 @@
|
|
1 |
"""Run codes"""
|
2 |
# pylint: disable=line-too-long, broad-exception-caught, invalid-name, missing-function-docstring, too-many-instance-attributes, missing-class-docstring
|
3 |
-
#
|
4 |
-
# import gradio
|
5 |
-
|
6 |
-
# gradio.load("models/WizardLM/WizardCoder-15B-V1.0").launch()
|
7 |
-
|
8 |
import os
|
9 |
import time
|
10 |
from dataclasses import asdict, dataclass
|
@@ -37,11 +33,60 @@ user_prefix = "[user]: "
|
|
37 |
assistant_prefix = "[assistant]: "
|
38 |
|
39 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
40 |
def predict(prompt, bot):
|
41 |
# logger.debug(f"{prompt=}, {bot=}, {timeout=}")
|
42 |
logger.debug(f"{prompt=}, {bot=}")
|
43 |
|
44 |
ns.response = ""
|
|
|
45 |
with about_time() as atime: # type: ignore
|
46 |
try:
|
47 |
# user_prompt = prompt
|
@@ -59,7 +104,12 @@ def predict(prompt, bot):
|
|
59 |
response = ""
|
60 |
buff.update(value="diggin...")
|
61 |
|
|
|
62 |
for word in generator:
|
|
|
|
|
|
|
|
|
63 |
# print(word, end="", flush=True)
|
64 |
print(word, flush=True) # vertical stream
|
65 |
response += word
|
@@ -268,6 +318,36 @@ css = """
|
|
268 |
.disclaimer {font-variant-caps: all-small-caps; font-size: xx-small;}
|
269 |
.xsmall {font-size: x-small;}
|
270 |
"""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
271 |
|
272 |
with gr.Blocks(
|
273 |
# title="mpt-30b-chat-ggml",
|
@@ -281,9 +361,11 @@ with gr.Blocks(
|
|
281 |
# )
|
282 |
gr.Markdown(
|
283 |
f"""<h4><center>{MODEL_FILENAME}</center></h4>
|
|
|
|
|
284 |
|
285 |
-
Most examples are meant for another model. You probably should try
|
286 |
-
some
|
287 |
|
288 |
Try to refresh the browser and try again when occasionally errors occur.
|
289 |
|
@@ -296,13 +378,13 @@ with gr.Blocks(
|
|
296 |
chatbot = gr.Chatbot(height=700) # 500
|
297 |
buff = gr.Textbox(show_label=False, visible=False)
|
298 |
with gr.Row():
|
299 |
-
with gr.Column(scale=
|
300 |
msg = gr.Textbox(
|
301 |
label="Chat Message Box",
|
302 |
placeholder="Ask me anything (press Enter or click Submit to send)",
|
303 |
show_label=False,
|
304 |
).style(container=False)
|
305 |
-
with gr.Column(scale=1, min_width=
|
306 |
with gr.Row():
|
307 |
submit = gr.Button("Submit", elem_classes="xsmall")
|
308 |
stop = gr.Button("Stop", visible=False)
|
@@ -322,37 +404,8 @@ with gr.Blocks(
|
|
322 |
reset = gr.Button("Reset System Prompt")
|
323 |
|
324 |
with gr.Accordion("Example Inputs", open=True):
|
325 |
-
etext = """In America, where cars are an important part of the national psyche, a decade ago people had suddenly started to drive less, which had not happened since the oil shocks of the 1970s. """
|
326 |
examples = gr.Examples(
|
327 |
-
examples=
|
328 |
-
["判断一个数是不是质数的 javascript 码"],
|
329 |
-
["实现python 里 range(10)的 javascript 码"],
|
330 |
-
["实现python 里 [*(range(10)]的 javascript 码"],
|
331 |
-
["Explain the plot of Cinderella in a sentence."],
|
332 |
-
[
|
333 |
-
"How long does it take to become proficient in French, and what are the best methods for retaining information?"
|
334 |
-
],
|
335 |
-
["What are some common mistakes to avoid when writing code?"],
|
336 |
-
["Build a prompt to generate a beautiful portrait of a horse"],
|
337 |
-
["Suggest four metaphors to describe the benefits of AI"],
|
338 |
-
["Write a pop song about leaving home for the sandy beaches."],
|
339 |
-
["Write a summary demonstrating my ability to tame lions"],
|
340 |
-
["鲁迅和周树人什么关系 说中文"],
|
341 |
-
["鲁迅和周树人什么关系"],
|
342 |
-
["鲁迅和周树人什么关系 用英文回答"],
|
343 |
-
["从前有一头牛,这头牛后面有什么?"],
|
344 |
-
["正无穷大加一大于正无穷大吗?"],
|
345 |
-
["正无穷大加正无穷大大于正无穷大吗?"],
|
346 |
-
["-2的平方根等于什么"],
|
347 |
-
["树上有5只鸟,猎人开枪打死了一只。树上还有几只鸟?"],
|
348 |
-
["树上有11只鸟,猎人开枪打死了一只。树上还有几只鸟?提示:需考虑鸟可能受惊吓飞走。"],
|
349 |
-
["以红楼梦的行文风格写一张委婉的请假条。不少于320字。"],
|
350 |
-
[f"{etext} 翻成中文,列出3个版本"],
|
351 |
-
[f"{etext} \n 翻成中文,保留原意,但使用文学性的语言。不要写解释。列出3个版本"],
|
352 |
-
["假定 1 + 2 = 4, 试求 7 + 8"],
|
353 |
-
["Erkläre die Handlung von Cinderella in einem Satz."],
|
354 |
-
["Erkläre die Handlung von Cinderella in einem Satz. Auf Deutsch"],
|
355 |
-
],
|
356 |
inputs=[msg],
|
357 |
examples_per_page=40,
|
358 |
)
|
@@ -367,7 +420,7 @@ with gr.Blocks(
|
|
367 |
"biased, or otherwise offensive outputs.",
|
368 |
elem_classes=["disclaimer"],
|
369 |
)
|
370 |
-
|
371 |
msg.submit(
|
372 |
# fn=conversation.user_turn,
|
373 |
fn=predict,
|
@@ -384,6 +437,24 @@ with gr.Blocks(
|
|
384 |
queue=True,
|
385 |
show_progress="full",
|
386 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
387 |
clear.click(lambda: None, None, chatbot, queue=False)
|
388 |
|
389 |
# update buff Textbox, every: units in seconds)
|
|
|
1 |
"""Run codes"""
|
2 |
# pylint: disable=line-too-long, broad-exception-caught, invalid-name, missing-function-docstring, too-many-instance-attributes, missing-class-docstring
|
3 |
+
# ruff: noqa: E501
|
|
|
|
|
|
|
|
|
4 |
import os
|
5 |
import time
|
6 |
from dataclasses import asdict, dataclass
|
|
|
33 |
assistant_prefix = "[assistant]: "
|
34 |
|
35 |
|
36 |
+
def predict_str(prompt, bot): # bot is in fact bot_history
|
37 |
+
# logger.debug(f"{prompt=}, {bot=}, {timeout=}")
|
38 |
+
logger.debug(f"{prompt=}, {bot=}")
|
39 |
+
|
40 |
+
try:
|
41 |
+
# user_prompt = prompt
|
42 |
+
generator = generate(
|
43 |
+
LLM,
|
44 |
+
GENERATION_CONFIG,
|
45 |
+
system_prompt=default_system_prompt,
|
46 |
+
user_prompt=prompt.strip(),
|
47 |
+
)
|
48 |
+
|
49 |
+
ns.generator = generator # for .then
|
50 |
+
|
51 |
+
except Exception as exc:
|
52 |
+
logger.error(exc)
|
53 |
+
|
54 |
+
# bot.append([prompt, f"{response} {_}"])
|
55 |
+
# return prompt, bot
|
56 |
+
|
57 |
+
return prompt, bot + [[prompt, None]]
|
58 |
+
|
59 |
+
|
60 |
+
def bot_str(bot):
|
61 |
+
if bot:
|
62 |
+
bot[-1][1] = ""
|
63 |
+
else:
|
64 |
+
bot = [["Something is wrong", ""]]
|
65 |
+
|
66 |
+
print(assistant_prefix, end=" ", flush=True)
|
67 |
+
|
68 |
+
response = ""
|
69 |
+
|
70 |
+
flag = 1
|
71 |
+
then = time.time()
|
72 |
+
for word in ns.generator:
|
73 |
+
# record first response time
|
74 |
+
if flag:
|
75 |
+
logger.debug(f"\t {time.time() - then:.1f}s")
|
76 |
+
flag = 0
|
77 |
+
print(word, end="", flush=True)
|
78 |
+
# print(word, flush=True) # vertical stream
|
79 |
+
response += word
|
80 |
+
bot[-1][1] = response
|
81 |
+
yield bot
|
82 |
+
|
83 |
+
|
84 |
def predict(prompt, bot):
|
85 |
# logger.debug(f"{prompt=}, {bot=}, {timeout=}")
|
86 |
logger.debug(f"{prompt=}, {bot=}")
|
87 |
|
88 |
ns.response = ""
|
89 |
+
then = time.time()
|
90 |
with about_time() as atime: # type: ignore
|
91 |
try:
|
92 |
# user_prompt = prompt
|
|
|
104 |
response = ""
|
105 |
buff.update(value="diggin...")
|
106 |
|
107 |
+
flag = 1
|
108 |
for word in generator:
|
109 |
+
# record first response time
|
110 |
+
if flag:
|
111 |
+
logger.debug(f"\t {time.time() - then:.1f}s")
|
112 |
+
flag = 0
|
113 |
# print(word, end="", flush=True)
|
114 |
print(word, flush=True) # vertical stream
|
115 |
response += word
|
|
|
318 |
.disclaimer {font-variant-caps: all-small-caps; font-size: xx-small;}
|
319 |
.xsmall {font-size: x-small;}
|
320 |
"""
|
321 |
+
etext = """In America, where cars are an important part of the national psyche, a decade ago people had suddenly started to drive less, which had not happened since the oil shocks of the 1970s. """
|
322 |
+
examples = [
|
323 |
+
["Explain the plot of Cinderella in a sentence."],
|
324 |
+
[
|
325 |
+
"How long does it take to become proficient in French, and what are the best methods for retaining information?"
|
326 |
+
],
|
327 |
+
["What are some common mistakes to avoid when writing code?"],
|
328 |
+
["Build a prompt to generate a beautiful portrait of a horse"],
|
329 |
+
["Suggest four metaphors to describe the benefits of AI"],
|
330 |
+
["Write a pop song about leaving home for the sandy beaches."],
|
331 |
+
["Write a summary demonstrating my ability to tame lions"],
|
332 |
+
["鲁迅和周树人什么关系 说中文"],
|
333 |
+
["鲁迅和周树人什么关系"],
|
334 |
+
["鲁迅和周树人什么关系 用英文回答"],
|
335 |
+
["从前有一头牛,这头牛后面有什么?"],
|
336 |
+
["正无穷大加一大于正无穷大吗?"],
|
337 |
+
["正无穷大加正无穷大大于正无穷大吗?"],
|
338 |
+
["-2的平方根等于什么"],
|
339 |
+
["树上有5只鸟,猎人开枪打死了一只。树上还有几只鸟?"],
|
340 |
+
["树上有11只鸟,猎人开枪打死了一只。树上还有几只鸟?提示:需考虑鸟可能受惊吓飞走。"],
|
341 |
+
["以红楼梦的行文风格写一张委婉的请假条。不少于320字。"],
|
342 |
+
[f"{etext} 翻成中文,列出3个版本"],
|
343 |
+
[f"{etext} \n 翻成中文,保留原意,但使用文学性的语言。不要写解释。列出3个版本"],
|
344 |
+
["假定 1 + 2 = 4, 试求 7 + 8"],
|
345 |
+
["判断一个数是不是质数的 javascript 码"],
|
346 |
+
["实现python 里 range(10)的 javascript 码"],
|
347 |
+
["实现python 里 [*(range(10)]的 javascript 码"],
|
348 |
+
["Erkläre die Handlung von Cinderella in einem Satz."],
|
349 |
+
["Erkläre die Handlung von Cinderella in einem Satz. Auf Deutsch"],
|
350 |
+
]
|
351 |
|
352 |
with gr.Blocks(
|
353 |
# title="mpt-30b-chat-ggml",
|
|
|
361 |
# )
|
362 |
gr.Markdown(
|
363 |
f"""<h4><center>{MODEL_FILENAME}</center></h4>
|
364 |
+
It takes about 100 seconds for the initial reply
|
365 |
+
message to appear. Average streaming rate ~1 sec/chat. The bot only speaks English.
|
366 |
|
367 |
+
Most examples are meant for another model. You probably should try to test
|
368 |
+
some related prompts.
|
369 |
|
370 |
Try to refresh the browser and try again when occasionally errors occur.
|
371 |
|
|
|
378 |
chatbot = gr.Chatbot(height=700) # 500
|
379 |
buff = gr.Textbox(show_label=False, visible=False)
|
380 |
with gr.Row():
|
381 |
+
with gr.Column(scale=5):
|
382 |
msg = gr.Textbox(
|
383 |
label="Chat Message Box",
|
384 |
placeholder="Ask me anything (press Enter or click Submit to send)",
|
385 |
show_label=False,
|
386 |
).style(container=False)
|
387 |
+
with gr.Column(scale=1, min_width=80):
|
388 |
with gr.Row():
|
389 |
submit = gr.Button("Submit", elem_classes="xsmall")
|
390 |
stop = gr.Button("Stop", visible=False)
|
|
|
404 |
reset = gr.Button("Reset System Prompt")
|
405 |
|
406 |
with gr.Accordion("Example Inputs", open=True):
|
|
|
407 |
examples = gr.Examples(
|
408 |
+
examples=examples,
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
409 |
inputs=[msg],
|
410 |
examples_per_page=40,
|
411 |
)
|
|
|
420 |
"biased, or otherwise offensive outputs.",
|
421 |
elem_classes=["disclaimer"],
|
422 |
)
|
423 |
+
_ = """
|
424 |
msg.submit(
|
425 |
# fn=conversation.user_turn,
|
426 |
fn=predict,
|
|
|
437 |
queue=True,
|
438 |
show_progress="full",
|
439 |
)
|
440 |
+
# """
|
441 |
+
msg.submit(
|
442 |
+
# fn=conversation.user_turn,
|
443 |
+
fn=predict_str,
|
444 |
+
inputs=[msg, chatbot],
|
445 |
+
outputs=[msg, chatbot],
|
446 |
+
# queue=True,
|
447 |
+
show_progress="full",
|
448 |
+
api_name="predict",
|
449 |
+
).then(bot_str, chatbot, chatbot)
|
450 |
+
submit.click(
|
451 |
+
fn=lambda x, y: ("",) + predict_str(x, y)[1:], # clear msg
|
452 |
+
inputs=[msg, chatbot],
|
453 |
+
outputs=[msg, chatbot],
|
454 |
+
queue=True,
|
455 |
+
show_progress="full",
|
456 |
+
).then(bot_str, chatbot, chatbot)
|
457 |
+
|
458 |
clear.click(lambda: None, None, chatbot, queue=False)
|
459 |
|
460 |
# update buff Textbox, every: units in seconds)
|