# main.py import gradio as gr from fastapi import FastAPI, HTTPException from pydantic import BaseModel # FastAPI setup app = FastAPI() class CalculationRequest(BaseModel): operation: str x: float y: float @app.post("/calculate") def calculate(request: CalculationRequest): try: if request.operation == "add": answer = request.x + request.y elif request.operation == "subtract": answer = request.x - request.y elif request.operation == "multiply": answer = request.x * request.y elif request.operation == "divide": if request.y == 0: raise HTTPException(status_code=400, detail="Division by zero is not allowed") answer = request.x / request.y else: raise HTTPException(status_code=400, detail="Invalid operation") return {"result": answer} except ValueError: raise HTTPException(status_code=400, detail="Invalid input types") # Gradio interface def perform_calculation(operation, x, y): try: x = float(x) y = float(y) except ValueError: return "Error: Invalid input. Please enter numbers only." request = CalculationRequest(operation=operation, x=x, y=y) response = calculate(request) return f"Result: {response['result']}" demo = gr.Interface( fn=perform_calculation, inputs=[ gr.Dropdown(["add", "subtract", "multiply", "divide"], label="Operation"), gr.Textbox(label="First Number"), gr.Textbox(label="Second Number") ], outputs="text", title="Simple Calculator", description="Enter two numbers and select an operation to perform a calculation." ) # Run the application if __name__ == "__main__": demo.launch()