Spaces:
Sleeping
Sleeping
import streamlit as st | |
import requests | |
st.set_page_config( | |
page_title="Seneca Engine | Mathematical Computation", | |
page_icon="🧮", | |
layout="wide", | |
initial_sidebar_state="collapsed" | |
) | |
st.markdown(""" | |
<style> | |
[data-testid="stHeader"] { | |
background-color: rgba(255, 255, 255, 0); | |
} | |
.main-container { | |
max-width: 1200px; | |
margin: 0 auto; | |
padding: 2rem; | |
} | |
.title-container { | |
text-align: center; | |
margin-bottom: 3rem; | |
} | |
.stButton > button { | |
background-color: #0066cc; | |
color: white; | |
border: none; | |
border-radius: 6px; | |
padding: 0.5rem 1rem; | |
font-weight: 500; | |
} | |
footer { | |
text-align: center; | |
padding: 2rem; | |
color: #666; | |
font-size: 0.9rem; | |
} | |
</style> | |
""", unsafe_allow_html=True) | |
st.title("Seneca Computational Engine") | |
st.markdown(""" | |
<p style='font-size: 1.2rem; margin-bottom: 2rem;'> | |
Advanced Mathematical Computation & Problem Solving | |
</p> | |
""", unsafe_allow_html=True) | |
st.markdown("</div>", unsafe_allow_html=True) | |
main_container = st.container() | |
with main_container: | |
left_col, right_col = st.columns([6, 4]) | |
with left_col: | |
st.markdown("### Mathematical Query") | |
mode = st.radio( | |
"Select Computation Mode", | |
options=["Mode 1", "Mode 2"], | |
index=0 | |
) | |
query = st.text_area( | |
"Math Question", | |
height=150, | |
placeholder="Enter your mathematical expression here...\nExample: Solve x^2 + 2x + 1 = 0", | |
key="query_input" | |
) | |
if st.button("Solve Expression", type="primary", use_container_width=True): | |
if not query: | |
st.error("Please enter a mathematical expression.") | |
else: | |
try: | |
with st.spinner("Computing solution..."): | |
mode_num = int(mode.split("Mode ")[1]) | |
url = "https://seneca.ruben-roy.com/v1/process" | |
headers = {'Content-Type': 'application/json'} | |
data = {"query": query, "mode": mode_num} | |
response = requests.post( | |
url, | |
json=data, | |
headers=headers, | |
verify=False, | |
timeout=60 | |
) | |
if response.status_code == 200: | |
result = response.json() | |
st.markdown("#### Solution") | |
st.latex(result['solution']) | |
except requests.exceptions.Timeout: | |
st.error("⚠️ Request timed out. Please try again.") | |
except requests.exceptions.RequestException as e: | |
st.error(f"⚠️ Connection error: {str(e)}") | |
except Exception as e: | |
st.error(f"⚠️ An unexpected error occurred: {str(e)}") | |
with right_col: | |
with st.expander("About Seneca Engine", expanded=True): | |
st.markdown(""" | |
Seneca is a mathematical computation engine designed | |
to solve complex mathematical problems. | |
Developed by Ruben Roy, 2025. | |
""") | |
with st.expander("Computation Modes", expanded=True): | |
st.markdown(""" | |
Seneca has 2 computational modes, they perform differently depending on what you want to do with it. If you get an unexpected or disappointing output from a specific mode, try switching to the other mode. | |
""") | |
with st.expander("How to Use", expanded=True): | |
st.markdown(""" | |
1. First, select the mode you'd like to use. | |
2. Then, enter your query and type your mathematical expression | |
3. Finally click 'Solve Expression' to get your solution | |
Try using clear, standard mathematical notation for the best results. | |
""") | |
st.markdown("---") | |
st.markdown(""" | |
<footer> | |
<p>© Ruben Roy 2025. All rights reserved.</p> | |
</footer> | |
""", unsafe_allow_html=True) |