Spaces:
Runtime error
Runtime error
| import streamlit as st | |
| from transformers import pipeline | |
| import sympy as sp | |
| # Cache the model so it's loaded only once | |
| def load_model(): | |
| # Load an open-source Hugging Face model for natural language processing | |
| return pipeline('text-classification', model='mrm8488/t5-base-finetuned-summarize-news') | |
| # Initialize the model | |
| nlp_model = load_model() | |
| # Function to check if the question is mathematical | |
| def is_math_question(question): | |
| try: | |
| parsed_expr = sp.sympify(question) | |
| return True | |
| except (sp.SympifyError, SyntaxError): | |
| return False | |
| # Function to solve mathematical questions using SymPy | |
| def solve_math_question(question): | |
| try: | |
| # Parse and solve the mathematical expression | |
| solution = sp.solve(sp.sympify(question)) | |
| return f"The solution is: {solution}" | |
| except Exception as e: | |
| return f"Error solving the equation: {e}" | |
| # Streamlit UI | |
| st.title("Math Chatbot (Open Source)") | |
| st.write("Ask any mathematical question and get an answer. Non-mathematical questions will be restricted.") | |
| # User input | |
| question = st.text_input("Enter your mathematical question:") | |
| # Processing the input | |
| if st.button("Submit"): | |
| if is_math_question(question): | |
| # Solve the mathematical question | |
| answer = solve_math_question(question) | |
| st.write(f"Answer: {answer}") | |
| else: | |
| # Filter non-mathematical questions using NLP model | |
| nlp_result = nlp_model(question)[0] | |
| if nlp_result['label'] == 'Math': | |
| st.write("Answer: Processing your math question...") | |
| else: | |
| st.write("This chatbot only answers questions related to mathematics. Please ask a mathematical question.") | |