github-actions[bot]
Deploy from GitHub Actions (commit: 8b247ffacd77c0672965b8378f1d52a7dcd187ae)
9366995
| 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) | |