Spaces:
Running
Running
File size: 1,589 Bytes
f9a286f 6c842bf f9a286f f634d68 713a112 ccc7a73 85decc9 6c842bf 96b5219 cb4ac65 f6f76f5 cb4ac65 d11a769 713a112 4d7e1f3 6c842bf 4d7e1f3 713a112 6c842bf cb4ac65 d11a769 6c842bf 483f904 6c842bf d11a769 cb4ac65 85decc9 f9a286f 15ba887 | 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()
|