Spaces:
Runtime error
Runtime error
# main application file initializing the gradio based ui and calling other modules | |
# external package imports | |
import gradio as gr | |
import markdown | |
from fastapi import FastAPI | |
# internal imports | |
from model import mistral | |
# function to load md files in python 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) | |
# creation of FastAPI application | |
app = FastAPI() | |
# 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 notebooks 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("notebooks 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 fastAPI Application | |
app = gr.mount_gradio_app(app, ui, path="/") | |
# launch function for Gradio Interface on hgf spaces | |
if __name__ == "__main__": | |
ui.launch(share=False) |