MathSolverAI / app.py
NihalGazi's picture
Update app.py
a0862f6 verified
raw
history blame
2.97 kB
import gradio as gr
import requests
import sympy as sp
# Function for algebraic simplification
def algebra_simplification(expression):
try:
expr = sp.sympify(expression)
simplified_expr = sp.simplify(expr)
return str(simplified_expr)
except Exception as e:
return f"Error: {str(e)}"
# Function for solving algebraic equations
def algebra_solve(equation):
try:
eq = sp.sympify(equation)
variables = list(eq.free_symbols)
solutions = sp.solve(eq, *variables)
return str(solutions)
except Exception as e:
return f"Error: {str(e)}"
# Gemini API function calling
def gemini_api_call(math_problem):
url = "https://api.gemini.ai/v1/function_call"
headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
}
# Define function descriptors for Gemini's function calling system
functions = [
{
"name": "algebra_simplification",
"description": "Simplifies an algebraic expression",
"parameters": {
"type": "object",
"properties": {
"expression": {
"type": "string",
"description": "The algebraic expression to simplify"
}
},
"required": ["expression"]
}
},
{
"name": "algebra_solve",
"description": "Solves an algebraic equation",
"parameters": {
"type": "object",
"properties": {
"equation": {
"type": "string",
"description": "The algebraic equation to solve"
}
},
"required": ["equation"]
}
}
]
# Payload for the Gemini API request
data = {
"model": "gemini-1.5-flash",
"prompt": math_problem,
"functions": functions,
"function_call": "auto" # Automatically choose the function to call
}
response = requests.post(url, headers=headers, json=data)
if response.status_code == 200:
result = response.json()
return result['output'] # Adjust according to API response structure
else:
return f"Error: {response.status_code} - {response.text}"
# Gradio interface
def process_math_problem(math_problem):
# Call Gemini API and return the result
return gemini_api_call(math_problem)
with gr.Blocks() as demo:
gr.Markdown("# Gemini Algebra Solver")
input_problem = gr.Textbox(label="Enter a Math Problem", placeholder="e.g., Simplify (x^2 - 4)/(x - 2) or Solve x^2 - 4 = 0")
output_solution = gr.Textbox(label="Solution")
solve_button = gr.Button("Solve")
solve_button.click(fn=process_math_problem, inputs=input_problem, outputs=output_solution)
demo.launch()