File size: 3,860 Bytes
e011405
 
 
 
 
 
 
 
 
 
8469398
e011405
 
7f4745d
e011405
 
 
0620f47
 
7f4745d
78ad083
5ea4a74
e011405
 
8469398
ac628ef
8469398
ac628ef
 
 
8469398
ac628ef
 
 
 
 
 
8469398
 
e011405
 
 
 
0620f47
e011405
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8469398
e011405
 
 
 
ac628ef
e011405
 
 
8469398
 
ac628ef
8469398
ac628ef
8469398
ac628ef
 
 
8469398
 
 
 
 
 
 
 
 
e011405
 
 
8469398
e011405
 
 
 
8469398
e011405
 
7f4745d
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
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)
RLHF = []

with gr.Blocks() as demo:
    gr.Markdown( """<h1><center>Vietnamese QA assistant</center></h1>""")
    with gr.Tab("Chatbot"):
        with gr.Row():
            with gr.Column():
                chatbot_area = gr.Chatbot(
                    [[None, "Xin chào!"],
                     [None, "Tôi là một công cụ đọc hiểu cho tiếng Việt. Bạn có thể đặt bất kì câu hỏi cho tôi hoặc bạn có thể upload văn bản của bạn và hỏi tôi về nó ở tab 'Your context'"],
                     ["Công dụng của paracetamol", "hạ sốt, giảm đau"]]
                ).style(height=600)
                msg = gr.Textbox(label='Your prompt')

            with gr.Column(scale=0.3, min_width=500):
                for i in range(args.show_c):
                    with gr.Accordion(f"Answer {i+1}", open=False) as answer_area:
                        with gr.Row():
                            gr.Button('👍 Answer').style(size='sm', full_width=False)
                            gr.Button('👎🏻 Answer').style(size='sm', full_width=False)
                        context_area = gr.Markdown(f"Context {i+1}")
                        # gr.CheckboxGroup(choices=['Good Answer', 'Bad Answer', 'Good Context', 'Bad Context'])

                        with gr.Row():
                            gr.Button('👍 Context').style(size='sm', full_width=False)
                            gr.Button('👎🏻 Context').style(size='sm', full_width=False)

                        RLHF.append(answer_area)
                        RLHF.append(context_area)
                clear_chat = gr.Button("Clear history")

    with gr.Tab("Your context"):
        context_box = gr.Textbox(
            label="Bạn có thể upload hoặc viết văn bản của bạn vào đây và quay lại tab 'Chatbot' để hỏi tôi!",
            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]
        answers = chatbot.asking(question)


        print(answers)
        history[-1][1] = ""
        for character in answers:
            history[-1][1] += character
            time.sleep(0.01)
            yield history
    
    def fill_feedback(prompt):
        results = chatbot.temp
        outptus = []
        for i in range(args.show_c):
            if i < chatbot.choices:
                answer = f"{results[i]['score']}% | {results[i]['answer']}"
                outptus.append(RLHF[2*i].update(label=answer, visible=True, open=False))
                outptus.append(results[i]['context'])
            else:
                outptus.append(RLHF[2*i].update(visible=False))
                outptus.append("No context")

        return outptus

    def clear_history(history):
        history = []
        return history

    msg.submit(user, [msg, chatbot_area], [msg, chatbot_area], queue=False).then(
        bot, chatbot_area, chatbot_area
    ).then(fill_feedback, msg, RLHF)

    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)
    clear_chat.click(clear_history, chatbot_area, chatbot_area)

demo.queue()
demo.launch(server_name='0.0.0.0')