Spaces:
Running
Running
| 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"] | |