|
|
import streamlit as st |
|
|
from transformers import AutoTokenizer, AutoModelForQuestionAnswering, pipeline |
|
|
|
|
|
|
|
|
st.set_page_config( |
|
|
page_title="Question Answering App", |
|
|
page_icon="β", |
|
|
layout="centered", |
|
|
initial_sidebar_state="auto", |
|
|
) |
|
|
|
|
|
|
|
|
st.markdown( |
|
|
""" |
|
|
<h1 style="text-align: center; color: #4CAF50; font-family: 'Helvetica';"> |
|
|
π Question Answering App |
|
|
</h1> |
|
|
<p style="text-align: center; color: #777; font-size: 18px;"> |
|
|
Enter a context and question to get precise answers powered by AI. |
|
|
</p> |
|
|
""", |
|
|
unsafe_allow_html=True, |
|
|
) |
|
|
|
|
|
|
|
|
st.sidebar.header("Model Settings") |
|
|
model_checkpoint = st.sidebar.text_input( |
|
|
"Model Checkpoint", "Diezu/viedumrc", help="Specify the model checkpoint to use." |
|
|
) |
|
|
model_checkpoint1 = 'Diezu/viedumrc' |
|
|
question_answerer = pipeline("question-answering", model=model_checkpoint1) |
|
|
st.sidebar.markdown( |
|
|
""" |
|
|
<small>Using model: <code>Diezu/viedumrc</code>.</small> |
|
|
""", |
|
|
unsafe_allow_html=True, |
|
|
) |
|
|
|
|
|
context_sidebar = st.sidebar.text_area( |
|
|
"Context", |
|
|
"", |
|
|
help="Enter the context that contains information for answering questions.", |
|
|
height=200, |
|
|
placeholder="Provide context for your question...", |
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
st.markdown( |
|
|
""" |
|
|
<h2 style="color: #2196F3;">Provide Context and Question</h2> |
|
|
""", |
|
|
unsafe_allow_html=True, |
|
|
) |
|
|
|
|
|
|
|
|
question = st.text_input( |
|
|
"Question", |
|
|
"", |
|
|
help="Write the question you want to ask about the provided context.", |
|
|
placeholder="What is your question?", |
|
|
) |
|
|
|
|
|
|
|
|
if st.button("Get Answer"): |
|
|
if context_sidebar.strip() == "" or question.strip() == "": |
|
|
st.warning("Please provide both context and a question!", icon="β οΈ") |
|
|
else: |
|
|
try: |
|
|
|
|
|
result = question_answerer(question=question, context=context_sidebar) |
|
|
st.success("Answer Found!", icon="β
") |
|
|
st.markdown( |
|
|
f""" |
|
|
<div style="background-color: #f1f8ff; border-left: 4px solid #2196F3; padding: 10px; margin-top: 10px;"> |
|
|
<strong>Answer:</strong> {result['answer']} |
|
|
</div> |
|
|
""", |
|
|
unsafe_allow_html=True, |
|
|
) |
|
|
except Exception as e: |
|
|
st.error(f"Error while processing: {e}", icon="π¨") |
|
|
|
|
|
|
|
|
st.markdown( |
|
|
""" |
|
|
<hr> |
|
|
<footer style="text-align: center; font-size: small; color: #888;"> |
|
|
Built with β€οΈ using <strong>Streamlit</strong> and <strong>Transformers</strong>. |
|
|
<br> |
|
|
<small><a href="https://github.com/DINHD1" target="_blank">GitHub</a></small> |
|
|
</footer> |
|
|
""", |
|
|
unsafe_allow_html=True, |
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|