| | """ |
| | 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) |
| | """ |
| | |
| | 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" |
| | } |
| | """ |
| | |
| | inputs = data.get("inputs") |
| | if inputs is None: |
| | return { |
| | "error": "Missing 'inputs' field", |
| | "predictions": [], |
| | "total_detections": 0, |
| | "image": "" |
| | } |
| |
|
| | |
| | parameters = data.get("parameters", {}) |
| |
|
| | |
| | result = inference(inputs, parameters) |
| |
|
| | return result |
| |
|