hhh / providers /huggingface_client.py
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)