ffreemt
ncc
93c9911
raw
history blame
3.08 kB
"""
Try out gradio.Chatinterface.
colab gradio-chatinterface.
%%writefile reuirements.txt
gradio
transformers
sentencepiece
torch
"""
# pylint: disable=line-too-long, missing-module-docstring, missing-function-docstring
# import torch
import gradio as gr
from examples_list import examples_list
from transformers import AutoModel, AutoTokenizer # AutoModelForCausalLM,
# device = "cuda" if torch.cuda.is_available() else "cpu"
# tokenizer = AutoTokenizer.from_pretrained("stabilityai/StableBeluga2", use_fast=False)
# model = AutoModelForCausalLM.from_pretrained("stabilityai/StableBeluga2", torch_dtype=torch.float16, low_cpu_mem_usage=True, device_map="auto")
# system_prompt = "### System:\nYou are Stable Beluga, an AI that follows instructions extremely well. Help as much as you can. Remember, be safe, and don't do anything illegal.\n\n"
# pipeline = pipeline(task="text-generation", model="meta-llama/Llama-2-7b")
_ = """
tokenizer = AutoTokenizer.from_pretrained(
"THUDM/chatglm2-6b-int4", trust_remote_code=True
)
chat_model = AutoModel.from_pretrained(
"THUDM/chatglm2-6b-int4", trust_remote_code=True # 3.92G
).float()
"""
def stream_chat():
"""samples:
Sure [('test me', 'Sure')]
Sure, [('test me', 'Sure,')]
Sure, I [('test me', 'Sure, I')]
Sure, I' [('test me', "Sure, I'")]
Sure, I'd [('test me', "Sure, I'd")]
"""
resp = ""
for elm in range(10):
resp += str(elm)
from time import sleep
sleep(0.1)
yield elm
def chat(message="", history=[]):
# prompt = f"{system_prompt}### User: {message}\n\n### Assistant:\n"
# inputs = tokenizer(prompt, return_tensors="pt").to(device=device)
# output = model.generate(**inputs, do_sample=True, top_p=0.95, top_k=0, max_new_tokens=256)
# return tokenizer.decode(output[0], skip_special_tokens=True)
_ = """
for response, _ in chat_model.stream_chat(
tokenizer, message, history, max_length=2048, top_p=0.7, temperature=0.95
):
yield response
"""
g = update_chatbot()
g.send(None)
for response in stream_chat():
# yield response
g.send(response)
return history
def update_chatbot():
while 1:
message = yield
print(f"{message=}")
def chat1(message, history):
# prompt = f"{system_prompt}### User: {message}\n\n### Assistant:\n"
# inputs = tokenizer(prompt, return_tensors="pt").to(device=device)
# output = model.generate(**inputs, do_sample=True, top_p=0.95, top_k=0, max_new_tokens=256)
# return tokenizer.decode(output[0], skip_special_tokens=True)
for response, _ in chat_model.stream_chat(
tokenizer, message, history, max_length=2048, top_p=0.7, temperature=0.95
):
yield response, _
with gr.Blocks(theme=gr.themes.Glass(text_size="sm", spacing_size="sm"),) as block:
chatbot = gr.Chatbot()
msg = gr.Textbox()
# gr.ChatInterface(
block(
chat,
[msg, chatbot],
[chatbot],
# title="gradio-chatinterface-tryout",
# examples=examples_list,
).queue(max_size=2).launch()