anovo-api / services /hf_client.py
Rushabh Dharmesh Gandhi
feat: overhauled humanizer + doc upload endpoint
ede7942
Raw
History Blame Contribute Delete
1.4 kB
"""
Shared HuggingFace Inference API client.
Mirrors groq_client.py — same function signature, different provider.
Uses the OpenAI-compatible router endpoint at router.huggingface.co.
"""
from __future__ import annotations
import httpx
from config import settings
HF_URL = "https://router.huggingface.co/v1/chat/completions"
def hf_chat(
system_prompt: str,
user_prompt: str,
temperature: float = 0.7,
max_tokens: int = 1024,
) -> str:
"""Send a chat completion request to HF Inference API and return the content."""
headers = {
"Authorization": f"Bearer {settings.hf_api_token}",
"Content-Type": "application/json",
}
payload = {
"model": settings.hf_model,
"messages": [
{"role": "system", "content": system_prompt},
{"role": "user", "content": user_prompt},
],
"temperature": temperature,
"max_tokens": max_tokens,
}
try:
resp = httpx.post(HF_URL, json=payload, headers=headers, timeout=60.0)
resp.raise_for_status()
except httpx.ConnectError:
raise RuntimeError("Cannot connect to HuggingFace Inference API.")
except httpx.HTTPStatusError as e:
raise RuntimeError(
f"HF Inference API error {e.response.status_code}: {e.response.text}"
)
return resp.json()["choices"][0]["message"]["content"].strip()