QA_EDU / app.py
Diezu's picture
Update app.py
fd75dbe verified
import streamlit as st
from transformers import AutoTokenizer, AutoModelForQuestionAnswering, pipeline
# Set page configuration
st.set_page_config(
page_title="Question Answering App",
page_icon="❓",
layout="centered",
initial_sidebar_state="auto",
)
# Page title with custom style
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,
)
# Sidebar for model settings and context input
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...",
)
# # Load the tokenizer and model with error handling
# try:
# tokenizer = AutoTokenizer.from_pretrained(model_checkpoint)
# model = AutoModelForQuestionAnswering.from_pretrained(model_checkpoint)
# question_answerer = pipeline("question-answering", model=model, tokenizer=tokenizer)
# except Exception as e:
# st.error(f"Failed to load model or tokenizer: {e}", icon="🚨")
# st.stop()
# Main application
st.markdown(
"""
<h2 style="color: #2196F3;">Provide Context and Question</h2>
""",
unsafe_allow_html=True,
)
# Input: question
question = st.text_input(
"Question",
"",
help="Write the question you want to ask about the provided context.",
placeholder="What is your question?",
)
# Button to get answer
if st.button("Get Answer"):
if context_sidebar.strip() == "" or question.strip() == "":
st.warning("Please provide both context and a question!", icon="⚠️")
else:
try:
# Using context from the sidebar and question from the main section
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="🚨")
# Footer with custom style
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,
)
# import streamlit as st
# from transformers import pipeline
# st.title('Question Answering')
# model_checkpoint = 'Diezu/dieumrc'
# question_answerer = pipeline("question-answering", model=model_checkpoint)
# context = st.text_area('CONTEXT')
# question = st.text_input('QUESTION')
# if st.button('ANSWER'):
# i=question_answerer(question,context)
# #st.write(i['answer'])
# st.markdown(i['answer'])
# #st.write('<h1 style="font-size: 50px;">i['answer']</h1>')