ES ▾

API de Qwen Abliterated: llama a un modelo alojado, sin GPU

Ilustración de un portátil enviando cubos de datos por un cable a un servidor de modelo alojado

Actualizado

Puedes llamar a un modelo de chat sin censura por HTTP con el SDK de OpenAI que ya usas y saltarte la descarga de pesos o el alquiler de una GPU. Esta guía muestra la configuración, con código funcional y costos exactos.

Puntos clave

  • Apunta cualquier SDK de OpenAI a la base URL y establece el modelo a uncensored.
  • Streaming, llamadas a funciones y modo JSON funcionan a través de los parámetros estándar.
  • Límites: 8 peticiones concurrentes y 300 por minuto con una clave completa.
  • Pago por token: $0,15 por cada 1M de entrada, $0,50 por cada 1M de salida.

Respuesta corta: cambia la base URL

Si buscas una qwen abliterated api, la ruta práctica es un endpoint alojado que hable el protocolo de OpenAI. Mantienes tu código cliente, cambias dos valores y envías peticiones a un servidor que ejecuta el modelo por ti. Sin descarga de GGUF, sin elección de cuantización, sin presupuesto de VRAM.

Una nota necesaria sobre la nomenclatura: este es un servicio independiente, no la API oficial de Qwen, y el modelo alojado se direcciona como uncensored en lugar de por un nombre de checkpoint de Qwen. Es un modelo de pesos abiertos, gestionado por un proveedor independiente y ajustado para responder sin rechazos de contenido para uso adulto lícito. Si necesitas un archivo abliterated específico, ejecuta ese archivo localmente. Si necesitas un endpoint de chat fiable para una aplicación, sigue leyendo.

ConfiguraciónValor
URL basehttps://api.qwenabliterated.top/v1
Modelouncensored
Cabecera de autenticaciónAuthorization: Bearer YOUR_API_KEY
EndpointsPOST /v1/chat/completions, GET /v1/models
Ventana de contexto100.000 tokens, prompt más completación

Obtén una clave

Regístrate con Google, o con un correo electrónico y contraseña, luego abre la página de clave de API. Los nuevos usuarios pueden reclamar $0,50 de crédito de prueba con un clic, uno por persona, válido por 7 días y sin tarjeta. Eso es suficiente para ejecutar cada ejemplo de abajo varias veces.

Las claves de prueba tienen límites más bajos que las claves completas: 2 peticiones concurrentes y 60 peticiones por minuto, frente a 8 y 300 en una clave completa. Tenlo en cuenta si pruebas con trabajadores en paralelo.

Almacena la clave en una variable de entorno en lugar de en el control de código fuente:

export QWENABL_KEY="paste-your-key-here"

Primera petición en Python

Instala el SDK oficial con pip install openai, luego:

import os
from openai import OpenAI

client = OpenAI(
    base_url="https://api.qwenabliterated.top/v1",
    api_key=os.environ["QWENABL_KEY"],
)

resp = client.chat.completions.create(
    model="uncensored",
    messages=[
        {"role": "system", "content": "You are a blunt technical assistant."},
        {"role": "user", "content": "Explain what a KV cache is in three sentences."},
    ],
    temperature=0.7,
)

print(resp.choices[0].message.content)
print(resp.usage)

La respuesta incluye un bloque usage normal, por lo que puedes registrar tokens de prompt y completion y calcular el gasto tú mismo. Los encabezados incluyen X-Request-Id para preguntas de soporte y X-Balance-USD para que puedas vigilar el crédito restante sin abrir un panel.

Por qué usar una API en lugar de archivos GGUF

La ruta habitual a un modelo sin censura es encontrar un archivo cuantizado, cargarlo en un entorno local y hablar con un servidor local. Eso funciona, y para experimentos es una buena forma de aprender. La fricción aparece cuando pasas de experimentos a algo que otras personas usan.

Primero, hardware. Un archivo que cabe en la tarjeta de tu escritorio en un contexto corto puede no caber en uno largo, porque la caché de atención crece con cada token. Segundo, concurrencia. Un único proceso local maneja una o dos conversaciones cómodamente, pero diez usuarios a la vez significan colas. Tercero, disponibilidad. Una máquina en casa se duerme, pierde energía y recibe una actualización de controladores en el momento equivocado. Una API alojada convierte esto en el trabajo de otra persona, y pagas solo por tokens usados.

Lo que renuncias es la libertad de elegir un checkpoint específico y la garantía de que los bytes nunca salen de tu red. Decide cuál de esos aspectos importa más para tu proyecto antes de elegir.

Node.js y curl

El SDK de Node toma las mismas dos opciones:

import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api.qwenabliterated.top/v1",
  apiKey: process.env.QWENABL_KEY,
});

const resp = await client.chat.completions.create({
  model: "uncensored",
  messages: [{ role: "user", content: "Give me five names for a fantasy tavern." }],
});

console.log(resp.choices[0].message.content);

Y con curl, que es útil para verificar una clave antes de conectar cualquier cosa:

curl -s https://api.qwenabliterated.top/v1/models \
  -H "Authorization: Bearer $QWENABL_KEY"

Una llamada exitosa devuelve una lista JSON que incluye uncensored. Un 401 significa que la clave es incorrecta o falta. La documentación cubre el formato de error en detalle.

Streaming, modo JSON y herramientas

Transmisión

Establece stream: true y lee eventos enviados por el servidor. El uso se reporta al final del stream.

stream = client.chat.completions.create(
    model="uncensored",
    messages=[{"role": "user", "content": "Write a short scene on a night train."}],
    stream=True,
)
for chunk in stream:
    if chunk.choices and chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="", flush=True)

Una petición en streaming mantiene su slot de concurrencia hasta que el stream termine, por lo que un cliente que abre un stream y se va bloqueará la capacidad. Siempre consume o cierra el stream.

Modo JSON

Pasa response_format={"type": "json_object"} y menciona JSON en tu prompt. Analiza de forma defensiva de todos modos; ningún modelo sigue un esquema perfectamente cada vez.

Llamadas a funciones

Envía tools y opcionalmente tool_choice. Cuando el modelo pida una herramienta, ejecútala y devuelve la salida como un mensaje con role: "tool". Las llamadas a herramientas también hacen streaming. Los parámetros de muestreo temperature, top_p, stop, seed y las penalizaciones de frecuencia y presencia se pasan a través.

Integrarlo en una aplicación real

Un script único es fácil. Una aplicación necesita unos hábitos más, y son los mismos que usarías con cualquier API estilo OpenAI.

Mantén la clave en el servidor

Nunca envíes la clave en el código del navegador o en una aplicación móvil. Llama a la API desde tu backend y expone tu propia ruta al frontend, donde puedes añadir autenticación y límites por usuario. Cualquiera que encuentre una clave en un paquete puede gastar tu crédito.

Establece timeouts y limita la salida

La completación puede usar lo que quede de la ventana de 100.000 tokens, y max_tokens es opcional. Para una función de chat, establece un límite que coincida con tu interfaz para que una respuesta inusualmente larga no dispare la factura. Combina eso con un timeout del cliente y tendrás un techo tanto en tiempo como en dinero para cada llamada.

Registra el ID de la petición

Cada respuesta incluye X-Request-Id. Guárdalo junto a tu propio registro de la llamada. Cuando un resultado parece incorrecto o una petición falla, ese identificador es lo que permite al soporte encontrar la petición exacta. El encabezado X-Balance-USD es útil para una alerta simple: si el número cae por debajo de un umbral, envíate un mensaje antes de que se agote un trabajo.

Verifica la lista de modelos al inicio

Una verificación de salud que llama a GET /v1/models no consume tokens y confirma la clave, la URL y la ruta de red en un solo paso. Ejecútala al iniciar tu servicio y falla de forma evidente si devuelve un error.

Límites y manejo de errores

Las peticiones por encima de un límite obtienen HTTP 429. El código de error te dice qué límite alcanzaste: rate_limited significa demasiadas peticiones por minuto, y concurrency significa demasiadas a la vez. Durante una sobrecarga temporal, la API también devuelve 429 con un encabezado Retry-After: 5. El cuerpo máximo es de 8 MB.

Respeta el encabezado y retrocede:

import time
from openai import OpenAI, RateLimitError

def ask(client, messages, tries=5):
    for attempt in range(tries):
        try:
            return client.chat.completions.create(model="uncensored", messages=messages)
        except RateLimitError as e:
            wait = int(e.response.headers.get("Retry-After", 5))
            time.sleep(wait * (attempt + 1))
    raise RuntimeError("still rate limited")

Si ejecutas un grupo de trabajadores, limítalo a 8 hilos para una clave completa. Ir más arriba solo convierte trabajo en 429. Las peticiones fallidas o rechazadas no se cobran, por lo que los reintentos no te cuestan nada extra cuando fallan.

Cuánto cuesta una petición

Los tokens de entrada son $0,15 por cada 1M y los tokens de salida $0,50 por cada 1M. Algunos ejemplos, calculados exactamente:

  • Un turno de chat con 2.000 tokens de prompt y 500 tokens de completado: 2.000 x $0,15 / 1M = $0,0003, más 500 x $0,50 / 1M = $0,00025, es decir $0,00055. Mil turnos cuestan $0,55.
  • Un trabajo por lotes que envía 10M de tokens de entrada y recibe 2M de tokens de salida: $1,50 más $1,00, es decir $2,50.
  • Una llamada de contexto largo con 90.000 tokens de prompt y 1.000 tokens de salida: $0,0135 más $0,0005, es decir $0,014.

El crédito es prepago, no caduca y no hay suscripción. Recarga cualquier cantidad entera desde $20 hasta $500; $50 añade un 5%, así que una recarga de $50 otorga $52,50 de crédito. Paga con cripto (USDT en TRC20, USDC en Base). Consulta la página de precios para la tabla completa de bonificaciones.

Archivos alojados o locales: cuál es adecuado

Un GGUF local te da privacidad por aislamiento y control completo sobre los pesos exactos. Una API alojada te da cero trabajo de hardware, ventana de contexto larga y una URL que otros servicios pueden llamar. La mayoría de los equipos que construyen un bot, una herramienta de escritura o un backend de juego encuentran que el hosting es más simple, ya que una caja de GPU de repuesto es otra cosa que mantener en funcionamiento.

Para una visión más amplia de pagar por token en comparación con otras formas de llegar a un modelo estilo Qwen, consulta la guía de comparación. Los prompts enviados a la API no se usan para entrenamiento. El modelo es solo de texto y el contenido sexual que involucra a menores no está permitido bajo ninguna circunstancia.

Preguntas y respuestas

¿Necesito una GPU para usarlo?

No. El modelo se ejecuta en los servidores del proveedor. Tu código solo envía peticiones HTTP, por lo que basta con un portátil o una VPS pequeña.

¿Qué nombre de modelo debo enviar?

Envía uncensored como valor del modelo. Puedes confirmarlo con una petición GET a /v1/models.

¿Admite los SDKs de Python y Node de OpenAI?

Sí. Configura la URL base con la dirección /v1 del sitio y usa tu clave. Las finalizaciones de chat, el streaming, las llamadas a funciones y el modo JSON funcionan con los parámetros habituales.

¿Qué pasa si envío demasiadas peticiones?

Recibirás HTTP 429 con el código rate_limited o concurrency. Espera y reintenta, y respeta el encabezado Retry-After cuando esté presente.

¿Hay una forma gratuita de probarlo?

Los nuevos usuarios pueden reclamar $0,50 de crédito de prueba con un clic en la página de la clave de API. Dura 7 días y no requiere tarjeta.

Tu clave está a un formulario de distancia

Crea una cuenta, copia la clave, cambia la URL base. Esa es toda la configuración.

Obtener clave de API