Spaces:
Running
Running
File size: 1,589 Bytes
e3c695c dcd93f8 e3c695c 02f2014 eab22be 0da90a5 ab104ea dcd93f8 f60e3bf 1a651fb 92dcf46 1a651fb 2cd7e8d eab22be 9eef9c6 dcd93f8 9eef9c6 eab22be dcd93f8 1a651fb 2cd7e8d dcd93f8 6b7a6f6 dcd93f8 2cd7e8d 1a651fb ab104ea e3c695c b334bb7 |
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 |
import gradio as gr
import time
# Chatbot demo with multimodal input (text, markdown, LaTeX, code blocks, image, audio, & video). Plus shows support for streaming text.
def print_like_dislike(x: gr.LikeData):
print(x.index, x.value, x.liked)
def add_message(history, message):
user_msg = {"role": "user", "content": []}
for x in message["files"]: # type: ignore
user_msg["content"].append({"path": x}) # type: ignore
if message["text"] is not None: # type: ignore
user_msg["content"].append(message["text"]) # type: ignore
history.append(user_msg)
return history, gr.MultimodalTextbox(value=None, interactive=False)
def bot(history: list):
response = "**That's cool!**"
history.append({"role": "assistant", "content": ""})
for character in response:
history[-1]["content"] += character
time.sleep(0.05)
yield history
with gr.Blocks() as demo:
chatbot = gr.Chatbot(elem_id="chatbot", like_user_message=True)
chat_input = gr.MultimodalTextbox(
interactive=True,
file_count="multiple",
placeholder="Enter message or upload file...",
show_label=False,
sources=["microphone", "upload"],
)
chat_msg = chat_input.submit(
add_message, [chatbot, chat_input], [chatbot, chat_input]
)
bot_msg = chat_msg.then(bot, chatbot, chatbot, api_name="bot_response")
bot_msg.then(lambda: gr.MultimodalTextbox(interactive=True), None, [chat_input])
chatbot.like(print_like_dislike, None, None)
if __name__ == "__main__":
demo.launch()
|