Study-with-ChampAI / services /featherless_provider.py
SolusOps's picture
feat: services package
63645ac verified
Raw
History Blame Contribute Delete
1.08 kB
from __future__ import annotations
import json
import urllib.request
FEATHERLESS_API_BASE = "https://api.featherless.ai/v1"
def generate(model_id: str, prompt: str, system: str = "",
api_key: str = "", max_tokens: int = 1024, temperature: float = 0.3) -> str:
"""Featherless.ai (OpenAI-compatible) — Nemotron reasoning tasks."""
url = f"{FEATHERLESS_API_BASE}/chat/completions"
messages = []
if system:
messages.append({"role": "system", "content": system})
messages.append({"role": "user", "content": prompt})
payload = {"model": model_id, "messages": messages,
"max_tokens": max_tokens, "temperature": temperature}
data = json.dumps(payload).encode("utf-8")
headers = {"Content-Type": "application/json",
"Authorization": f"Bearer {api_key}"}
req = urllib.request.Request(url, data=data, headers=headers, method="POST")
with urllib.request.urlopen(req, timeout=120) as resp:
result = json.loads(resp.read().decode("utf-8"))
return result["choices"][0]["message"]["content"]