Download handler.py from torinittechnologies/learningstudio-callout-wrapper: direct link, hf CLI and curl.
- Browser
- Download file 2.18 kB
-
https://huggingface.co/torinittechnologies/learningstudio-callout-wrapper/resolve/main/handler.py
- Command line
-
hf download hf://torinittechnologies/learningstudio-callout-wrapper/handler.py
-
curl -L -o handler.py https://huggingface.co/torinittechnologies/learningstudio-callout-wrapper/resolve/main/handler.py
2.18 kB
| """ | |
| HuggingFace Inference Endpoint Handler for LearningStudio Callout Detection. | |
| This wrapper provides an EMCO-compatible API format for LearningStudio integration, | |
| calling the AWS Lambda-based callout detection pipeline via API Gateway. | |
| """ | |
| from typing import Dict, Any | |
| from inference import inference | |
| class EndpointHandler: | |
| """ | |
| HuggingFace Inference Endpoint Handler. | |
| This class provides the interface expected by HuggingFace Inference Endpoints. | |
| It wraps the callout detection pipeline and transforms outputs to EMCO format. | |
| """ | |
| def __init__(self, path: str = ""): | |
| """ | |
| Initialize the endpoint handler. | |
| Args: | |
| path: Model path (unused for this wrapper, but required by HF interface) | |
| """ | |
| # No model to load - this is a wrapper for an external API | |
| pass | |
| def __call__(self, data: Dict[str, Any]) -> Dict[str, Any]: | |
| """ | |
| Process an inference request. | |
| Args: | |
| data: Request data with format: | |
| { | |
| "inputs": "image_url_or_base64", | |
| "parameters": {...} # Optional parameters | |
| } | |
| Returns: | |
| EMCO-compatible response: | |
| { | |
| "predictions": [ | |
| { | |
| "id": 1, | |
| "label": "callout", | |
| "class_id": 0, | |
| "confidence": 0.95, | |
| "bbox": {"x1": 100, "y1": 200, "x2": 300, "y2": 400} | |
| }, | |
| ... | |
| ], | |
| "total_detections": N, | |
| "image": "base64_encoded_image" | |
| } | |
| """ | |
| # Extract input | |
| inputs = data.get("inputs") | |
| if inputs is None: | |
| return { | |
| "error": "Missing 'inputs' field", | |
| "predictions": [], | |
| "total_detections": 0, | |
| "image": "" | |
| } | |
| # Extract optional parameters | |
| parameters = data.get("parameters", {}) | |
| # Call the inference function | |
| result = inference(inputs, parameters) | |
| return result | |