import gradio as gr import requests # Define the predict function that communicates with the FastAPI backend def predict(num1, num2, operation): # API request to FastAPI backend response = requests.post("http://127.0.0.1:8000/calculate", json={"operation": operation, "num1": num1, "num2": num2}) if response.status_code == 200: response_data = response.json() return response_data['result'] elif (response.json())['detail'] == "Division by zero is not allowed": return "Error: Division by zero is not allowed" else: return "Error: Unable to connect to the FastAPI backend." # Gradio Interface demo = gr.Interface( fn=predict, inputs=[gr.Number(label="Number 1"), gr.Number(label="Number 2"), gr.Dropdown(choices=["+", "-", "*", "/"], label="Operation")], outputs=gr.Textbox(label="Result"), title="Simple Calculator", allow_flagging="never" ) def launch_gradio(): demo.launch(server_name="0.0.0.0", server_port=7860, share=True)