chatdemo / UI /MainBlocks.py
tilents
user complete1
869c384
import time
import gradio as gr
import os
from UI.JS.ShowAndDisable import GetHideObject
from UI.LoginPanel import LoginPanel
class MainBlocks:
def __init__(self, name):
self.loginPanel = None
self.name = name
self.main = self.GetDemo()
self.main.queue()
self.main.launch()
# Chatbot demo with multimodal input (text, markdown, LaTeX, code blocks, image, audio, & video). Plus shows support for streaming text.
def add_text(self, history, text):
history = history + [(text, None)]
return history, gr.update(value="", interactive=False)
def add_file(self, history, file):
history = history + [((file.name,), None)]
return history
def bot(self, history):
if self.loginPanel.sub == 0:
response = "請登錄再聊"
# response = "Hello! Click the link below:<br><a href='https://www.baidu.com' target='_blank'>Visit Example.com</a>"
else:
response = "hey its cool"
history[-1][1] = ""
for character in response:
history[-1][1] += character
time.sleep(0.05)
yield history
def GetDemo(self):
with gr.Blocks() as demo:
# 登錄頁面
self.loginPanel = LoginPanel()
buttonAddText = gr.Button(value="Submit", elem_id="my-button")
# 使用 btn.click() 定义按钮被点击时的行为
buttonAddText.click(None, _js=GetHideObject("my-button"))
chatbot = gr.Chatbot(
[],
elem_id="chatbot",
bubble_full_width=False,
show_label=False,
#左邊是我的頭像,右邊是機器人頭像
avatar_images=("https://huggingface.co/front/assets/huggingface_logo-noborder.svg", (os.path.join(os.path.dirname(__file__), "../gradiodemo/Demo/IMG/didi.jpeg"))),
)
with gr.Row():
txt = gr.Textbox(
scale=4,
show_label=False,
placeholder="Enter text and press enter",
container=False,
)
# btn = gr.UploadButton("📁", file_types=["image", "video", "audio"])
# btn = gr.Button("確定")
txt_msg = txt.submit(self.add_text, [chatbot, txt], [chatbot, txt], queue=False)
txt_msg.then(
self.bot, chatbot, chatbot
)
txt_msg.then(lambda: gr.update(interactive=True), None, [txt], queue=False, _js=GetHideObject("my-button"))
# txt_msgbtn = btn.click(self.add_text, [chatbot, txt], [chatbot, txt], queue=False).then(
# self.bot, chatbot, chatbot
# )
# file_msg = btn.upload(self.add_file, [chatbot, btn], [chatbot], queue=False).then(
# self.bot, chatbot, chatbot
# )
return demo
if __name__ == "__main__":
mainBlocks1 = MainBlocks("test")