File size: 3,247 Bytes
3ac04fa 5799733 12a161c 5799733 b099d9e 5799733 b099d9e 5799733 b099d9e 5799733 b099d9e 5799733 b099d9e 5799733 d89d143 5799733 b099d9e 5799733 b099d9e 5799733 b099d9e 5799733 b099d9e 75b1ba6 e4e3ccf 55b26f1 b099d9e 55b26f1 b099d9e 5799733 d89d143 e4e3ccf 5799733 b099d9e 3ac04fa b099d9e 5799733 b099d9e 5799733 f0929ee 459fbe3 5799733 f0929ee 5799733 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
import json
import gradio as gr
from utils.logging_util import logger
from models.cpp_qwen2 import bot
# from models.hf_qwen2 import bot
#
# def postprocess(self, y):
# if y is None:
# return []
# for i, (message, response) in enumerate(y):
# y[i] = (
# None if message is None else mdtex2html.convert((message)),
# None if response is None else mdtex2html.convert(response),
# )
# return y
#
# gr.Chatbot.postprocess = postprocess
def generate_query(chatbot, history, history_tokens):
if history and history[-1]["role"] == "user":
gr.Warning('You should generate assistant-response.')
yield None, chatbot, history
else:
chatbot.append(None)
streamer = bot.generate_query(history[-1], history_tokens, stream=True)
for query, all_tokens in streamer:
chatbot[-1] = (query, None)
yield query, chatbot, history
history.append({"role": "user", "content": query})
yield query, chatbot, history, all_tokens
def generate_response(chatbot, history, history_tokens):
"""
auto-mode:query is None
manual-mode:query 是用户输入
"""
logger.info(f"generating {json.dumps(history, ensure_ascii=False)}")
query = history[-1]["content"]
if history[-1]["role"] != "user":
gr.Warning('You should generate or type user-input first.')
yield None, chatbot, history
else:
streamer = bot.generate_response(history[-1], history_tokens, stream=True)
for response, all_tokens in streamer:
chatbot[-1] = (query, response)
yield response, chatbot, history, all_tokens
history.append({"role": "assistant", "content": response})
print(f"chatbot is {chatbot}")
print(f"history is {history}")
yield response, chatbot, history, all_tokens
def generate(chatbot, history, history_tokens):
logger.info(f"chatbot: {chatbot}; history: {history}")
streamer = None
if history[-1]["role"] in ["assistant", "system"]:
streamer = generate_query(chatbot, history, history_tokens)
elif history[-1]["role"] == "user":
streamer = generate_response(chatbot, history, history_tokens)
else:
gr.Warning("bug")
for out in streamer:
yield out
def undo_generate(chatbot, history, history_tokens):
if history[-1]["role"] == "user":
history = history[:-1]
chatbot = chatbot[:-1]
elif history[-1]["role"] == "assistant":
history = history[:-1]
chatbot[-1] = (chatbot[-1][0], None)
else:
pass
logger.info(f"after undo, {json.dumps(chatbot, ensure_ascii=False)}, {json.dumps(history, ensure_ascii=False)}")
return "", chatbot, history, history_tokens
def reset_user_input():
return gr.update(value='')
def reset_state(system):
return [], [{"role": "system", "content": system}], []
def set_max_tokens(max_tokens):
bot.generation_kwargs["max_tokens"] = max_tokens
def set_temperature(temperature):
bot.generation_kwargs["temperature"] = temperature
def set_top_p(top_p):
bot.generation_kwargs["top_p"] = top_p
def set_top_k(top_k):
bot.generation_kwargs["top_k"] = top_k
|