Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| import requests | |
| import os | |
| # API key for IBM Cloud authentication | |
| API_KEY = os.getenv('IBM_API_KEY') | |
| if API_KEY is None: | |
| print("Error: There is some issue with IBM_API_KEY.") | |
| # Endpoint URL from IBM Cloud deployment (replace with your actual endpoint) | |
| endpoint_url = "https://us-south.ml.cloud.ibm.com/ml/v4/deployments/05450e74-3180-42b5-8a3c-667a7435a3c4/predictions?version=2021-05-01" | |
| # Function to authenticate and make prediction request to IBM Cloud endpoint | |
| def predict_kidney_stone(gravity, ph, osmolality, conductivity, urea, calcium): | |
| try: | |
| # Authenticate and get token | |
| token_response = requests.post('https://iam.cloud.ibm.com/identity/token', | |
| data={"apikey": API_KEY, "grant_type": 'urn:ibm:params:oauth:grant-type:apikey'}) | |
| mltoken = token_response.json()["access_token"] | |
| # Prepare data payload | |
| data = { | |
| "input_data": [ | |
| { | |
| "fields": ["gravity", "ph", "osmolality", "conductivity", "urea", "calcium"], | |
| "values": [[gravity, ph, osmolality, conductivity, urea, calcium]] | |
| } | |
| ] | |
| } | |
| # Make POST request to the endpoint with authentication headers | |
| response = requests.post(endpoint_url, json=data, headers={'Authorization': 'Bearer ' + mltoken}) | |
| # Handle response | |
| if response.status_code == 200: | |
| prediction = response.json()['predictions'][0]['values'][0][0] # Assuming response structure | |
| return "High Chances" if int(prediction) == 1 else "Low chances" | |
| else: | |
| return "Error: Unable to get prediction from endpoint" | |
| except Exception as e: | |
| return f"Error: {str(e)}" | |
| # Define Gradio interface | |
| iface = gr.Interface( | |
| fn=predict_kidney_stone, | |
| inputs = [ | |
| gr.Slider(minimum=0.8, maximum=1.5, label="Gravity"), | |
| gr.Slider(minimum=3, maximum=8, label="pH"), | |
| gr.Slider(minimum=200, maximum=1200, label="Osmolality"), | |
| gr.Slider(minimum=5, maximum=30, label="Conductivity"), | |
| gr.Slider(minimum=50, maximum=700, label="Urea"), | |
| gr.Slider(minimum=0, maximum=20, label="Calcium") | |
| ], | |
| outputs=gr.Textbox(label="Prediction"), # Output: Textbox to display prediction message | |
| title="Kidney Stone Detector", | |
| description="Predicts the likelihood of kidney stone based on input parameters.", | |
| examples=[ | |
| [1.021, 4.91, 725, 14, 443, 2.45], # Example input values | |
| [1.054, 5.57, 869, 29.53, 363, 5.54, 1] # Another example input | |
| ] | |
| ) | |
| # Launch the Gradio interface | |
| iface.launch() |