import requests from typing import Optional class HuggingFaceClient: """Universal HuggingFace API Client. Supports: - Chat Completions API (for LLMs) - Inference API (for classification, embeddings, etc.) """ CHAT_COMPLETIONS_URL = "https://router.huggingface.co/v1/chat/completions" INFERENCE_API_BASE = "https://api-inference.huggingface.co/models" def __init__(self, api_key: str): self.api_key = api_key self.headers = { "Authorization": f"Bearer {api_key}", "Content-Type": "application/json", } def chat_completions(self, payload: dict, url: Optional[str] = None) -> requests.Response: """Call the Chat Completions API. Args: payload: Request payload url: Optional custom URL (defaults to HF Router) Returns: requests.Response object """ target_url = url or self.CHAT_COMPLETIONS_URL return requests.post(target_url, headers=self.headers, json=payload) def inference_api(self, model_name: str, payload: dict, timeout: int = 60) -> requests.Response: """Call the Inference API for a specific model. Args: model_name: Full model name (e.g., "RyanDDD/empathy-mental-health-reddit-ER") payload: Request payload timeout: Request timeout in seconds Returns: requests.Response object """ url = f"{self.INFERENCE_API_BASE}/{model_name}" return requests.post(url, headers=self.headers, json=payload, timeout=timeout)