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"]