Pular para o conteúdo

Python

Requer Python 3. Não depende de um SDK. Configure NEXVRA_BASE_URL terminada em /v1, NEXVRA_API_KEY e NEXVRA_MODEL conforme os primeiros passos.

chat.py
"""Python 3: HTTP direto, sem SDK ou dependências externas."""
import json
import os
import sys
from urllib.error import HTTPError
from urllib.request import HTTPRedirectHandler, Request, build_opener
class NoRedirect(HTTPRedirectHandler):
def redirect_request(self, req, fp, code, msg, headers, newurl):
return None
base_url = os.environ["NEXVRA_BASE_URL"].rstrip("/")
api_key = os.environ["NEXVRA_API_KEY"]
model = os.environ["NEXVRA_MODEL"]
body = json.dumps({
"model": model,
"messages": [{"role": "user", "content": "Olá! Responda em uma frase."}],
"max_tokens": 128,
}).encode()
request = Request(base_url + "/chat/completions", data=body, headers={
"Authorization": "Bearer " + api_key,
"Content-Type": "application/json",
})
try:
with build_opener(NoRedirect).open(request, timeout=60) as response:
result = json.load(response)
print(result["choices"][0]["message"]["content"])
except HTTPError as error:
print(f"HTTP {error.code}; request-id={error.headers.get('x-nexvra-request-id', '')}", file=sys.stderr)
print(error.read().decode("utf-8", errors="replace"), file=sys.stderr)
sys.exit(1)

Execute com python3 chat.py. O exemplo usa timeout de 60 segundos e mostra o status e request-id em erros HTTP, sem repetir automaticamente a geração. O timeout do cliente não altera o prazo imposto pelo servidor.