import gradio as gr import requests import os # ✅ Secure HF API Token (Stored in Hugging Face Space Secrets) HF_API_TOKEN = os.getenv("HF_API_TOKEN") # ✅ Private Inference Endpoint URL INFERENCE_API_URL = "https://z1lobj44dbdikcgy.eu-west-1.aws.endpoints.huggingface.cloud" # ✅ Define a non-secret API key expected from the model VALID_MODEL_API_KEY = os.getenv("VALID_MODEL_API_KEY") def detect_objects(image, api_key): """Validates API key before processing request.""" # ✅ Reject unauthorized requests if api_key != VALID_MODEL_API_KEY: return {"error": "Unauthorized request"} # ✅ Forward request to the private inference endpoint with secret HF token headers = {"Authorization": f"Bearer {HF_API_TOKEN}"} files = {"image": image} response = requests.post(INFERENCE_API_URL, headers=headers, files=files) return response.json() # ✅ Public Space, but API key is required for access iface = gr.Interface(fn=detect_objects, inputs=["image", "text"], outputs="json") iface.launch()