File size: 4,358 Bytes
9b808ac
 
 
727303f
7c4f7d6
 
9b808ac
 
 
 
 
 
 
 
7c4f7d6
 
 
 
 
9b808ac
7c4f7d6
727303f
9b808ac
727303f
9b808ac
727303f
 
 
 
 
 
9b808ac
 
727303f
 
 
 
c4b5a8c
727303f
9b808ac
7c4f7d6
 
9b808ac
7c4f7d6
 
 
 
 
9b808ac
727303f
7c4f7d6
9b808ac
c4b5a8c
7c4f7d6
9b808ac
7c4f7d6
 
 
 
9b808ac
d8a09de
 
7c4f7d6
9b808ac
7c4f7d6
 
 
 
 
 
 
 
9b808ac
727303f
 
 
 
 
 
 
 
9b808ac
727303f
 
 
 
 
 
 
 
9b808ac
 
 
 
 
 
727303f
9b808ac
7c4f7d6
 
9b808ac
727303f
9b808ac
727303f
 
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
101
102
103
104
105
# main application file initializing the gradio based ui and calling other modules

# external package imports
import gradio as gr
import markdown


# internal imports
from model import mistral
from explanation import interpret as shap


# function to load md files in pthon as a string
def load_md(path):

    # credit: official python-markdown documentation (https://python-markdown.github.io/reference/)
    with open(path, "r") as file:
        text = file.read()

    # return markdown as a string
    return markdown.markdown(text)

# ui interface based on Gradio Blocks (see documentation: https://www.gradio.app/docs/interface)
with gr.Blocks() as ui:
    # header row with markdown based text
    with gr.Row():
        gr.Markdown(
            """
            # Thesis Demo - AI Chat Application with XAI
            ### Select between tabs below for the different views.
            """)
    # ChatBot tab used to chat with the AI chatbot
    with gr.Tab("AI ChatBot"):
        with gr.Row():
            gr.Markdown(
                """
                ### ChatBot Demo
                Mitral AI 7B Model fine-tuned for instruction and fully open source (see at [HGF](https://huggingface.co/mistralai/Mistral-7B-v0.1))
                """)
        # row with chatbot ui displaying "conversation" with the model (see documentation: https://www.gradio.app/docs/chatbot)
        with gr.Row():
            chatbot = gr.Chatbot(layout="panel", show_copy_button=True,avatar_images=("./public/human.jpg","./public/bot.jpg"))
        # disclaimer information row - data is recorded for shap dashboard and model explanability
        with gr.Row():
            gr.Markdown(
                """
                ##### ⚠️ All Conversations are recorded for qa assurance and explanation functionality!
                """)
        # row with input textbox
        with gr.Row():
                prompt = gr.Textbox(label="Input Message")
        # row with columns for buttons to submit and clear content
        with gr.Row():
            with gr.Column(scale=1):
                # default clear button which clearn the given components (see documentation: https://www.gradio.app/docs/clearbutton)
                clear_btn = gr.ClearButton([prompt, chatbot])
            with gr.Column(scale=1):
                submit_btn = gr.Button("Submit")

        # two functions performing the same action (triggered the model response), when the button is used or the textbox submit function is used (clicking enter).
        submit_btn.click(mistral.chat, [prompt, chatbot], [prompt, chatbot])
        prompt.submit(mistral.chat, [prompt, chatbot], [prompt, chatbot])

    # explanations tab used to provide explanations for a specific conversation
    with gr.Tab("Explanations"):
        with gr.Row():
            gr.Markdown(
                """
                ### Get Explanations for  
                SHAP Visualization Dashboard adopted from [shapash](https://github.com/MAIF/shapash)
                """)

    # shap dashboard tab for shapash inspired dashboard
    with gr.Tab("SHAP Dashboard"):
        with gr.Row():
            gr.Markdown(
                """
                ### SHAP Dashboard
                SHAP Visualization Dashboard adopted from [shapash](https://github.com/MAIF/shapash)
                """)

    # visualize dashboard to display global visualization provided by the BERTViz adoption
    with gr.Tab("Visualize Dashboard"):
        with gr.Row():
            gr.Markdown(
                """
                ### Visualization Dashboard
                Visualization Dashboard adopted from [BERTViz](https://github.com/jessevig/bertviz)
                """)

    # model overview tab for transparency
    with gr.Tab("Model Overview"):
        with gr.Tab("Mistral 7B Instruct"):
            gr.Markdown(value=load_md("./model/mistral.md"))
        with gr.Tab("LlaMa 2 7B Chat"):
            gr.Markdown(value=load_md("./model/llama2.md"))

    # final row to show legal information - credits, data protection and link to the LICENSE on GitHub
    with gr.Row():
        with gr.Accordion("Credits, Data Protection and License", open=False):
            gr.Markdown(value=load_md("./public/credits_dataprotection_license.md"))

# launch function for Gradio Interface
if __name__ == "__main__":
    ui.launch(debug=True)