VDT / app.py
CreatorPhan's picture
Upload 14 files
e011405
raw
history blame
2.35 kB
import gradio as gr
import random
import time
from agent_t5 import Agent
from config import Config
from retrieval.retrieval import BM25
args = Config()
chatbot = Agent(args)
answer_areas = list(range(args.choices))
context_areas = list(range(args.choices))
with gr.Blocks() as demo:
# gr.Markdown("Flip text or image files using this demo.")
with gr.Tab("Chatbot"):
with gr.Row():
with gr.Column():
chatbot_area = gr.Chatbot().style(height=700)
msg = gr.Textbox(label='Your prompt')
with gr.Column(scale=0.15, min_width=300):
for i in range(args.choices):
with gr.Accordion(f"Answer: {i+1}", open=False) as answer_areas[i]:
context_areas[i] = gr.Markdown(f"Context {i+1}")
clear_chat = gr.Button("Clear history")
with gr.Tab("Your context"):
context_box = gr.Textbox(
label='Your context here! You can upload a context file or typing context here and click "Using context"',
lines=20,
placeholder="Enter your context here..."
)
with gr.Row() as taskbar:
upload_btt = gr.UploadButton('Upload Context File')
clear_context_btt = gr.Button("Clear context")
context_btt = gr.Button("Using context")
def user(user_message, history):
print("Context box value:", context_box.info)
return "", history + [[user_message, None]]
def bot(history):
question = history[-1][0]
print('User mess:', question)
answers, contexts = chatbot.asking(question)
for i in range(chatbot.choices):
context_areas[i].value = contexts[i]['context']
answer_areas[i].value = answers[i]
print(answers)
history[-1][1] = ""
for character in answers[0]:
history[-1][1] += character
time.sleep(0.01)
yield history
msg.submit(user, [msg, chatbot_area], [msg, chatbot_area], queue=False).then(
bot, chatbot_area, chatbot_area
)
context_btt.click(chatbot.get_context, [context_box, ])
upload_btt.upload(chatbot.load_context, [upload_btt, ], context_box)
clear_context_btt.click(chatbot.clear_context, outputs=context_box)
demo.queue()
demo.launch()