bhaskartripathi's picture
Duplicate from mikeee/gradio-chatinterface
b061c53
"""
Try out gradio.Chatinterface.
colab gradio-chatinterface.
%%writefile reuirements.txt
gradio
transformers
sentencepiece
torch
cpm_kernels
import gradio as gr
def greet(name):
return "Hello " + name + "!"
with gr.Blocks() as demo:
name = gr.Textbox(label="Name")
output = gr.Textbox(label="Output Box")
greet_btn = gr.Button("Greet")
greet_btn.click(fn=greet, inputs=name, outputs=output, api_name="greet")
demo.launch()
"""
# pylint: disable=line-too-long, missing-module-docstring, missing-function-docstring
# import torch
import random
import time
import gradio as gr
def respond2(message, chat_history):
if chat_history is None:
chat_history = []
bot_message = random.choice(["How are you?", "I love you", "I'm very hungry"])
temp = ""
chat_history.append((message, temp))
for elm in range(len(bot_message)):
temp = bot_message[:elm+1]
time.sleep(0.2)
chat_history[-1] = message, temp
# yield message, chat_history
# chatbot.value = chat_history
chat_history[-1] = (message, "done " + bot_message)
time.sleep(2)
yield "", chat_history
def stream_chat():
"""
List 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 resp
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)
yield response
yield 'done ' + response
def update_chatbot():
while 1:
message = yield
print(f"{message=}")
def greet(name):
return "Hello " + name + "!"
with gr.Blocks() as block:
name = gr.Textbox(label="Name")
output = gr.Textbox(label="Output Box")
greet_btn = gr.Button("Greet")
# greet_btn.click(fn=greet, inputs=name, outputs=output, api_name="greet")
greet_btn.click(fn=chat, inputs=name, outputs=output, api_name="greet")
_ = """
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()
# """
# block.queue(max_size=2).launch()
with gr.Blocks() as demo:
chatbot = gr.Chatbot()
msg = gr.Textbox()
clear = gr.ClearButton([msg, chatbot])
def respond(message, chat_history):
bot_message = random.choice(["How are you?", "I love you", "I'm very hungry"])
chat_history.append((message, bot_message))
time.sleep(2)
return "", chat_history
def respond1(message, chat_history):
if chat_history is None:
chat_history = []
bot_message = random.choice(["How are you?", "I love you", "I'm very hungry"])
temp = ""
chat_history.append((message, temp))
for elm in range(len(bot_message)):
temp = bot_message[:elm+1]
time.sleep(0.2)
chat_history[-1] = message, temp
yield message, chat_history
chat_history[-1] = (message, "done " + bot_message)
time.sleep(2)
yield "", chat_history
msg.submit(respond2, [msg, chatbot], [msg, chatbot])
# demo.queue(max_size=2).launch()