API de chatbot sin filtros: primera petición en cinco minutos
Una API de chatbot sin filtros se puede probar en cinco minutos si ya tienes Python. Necesitas una clave, dos ajustes cambiados en el SDK de OpenAI y una petición. Después, un prompt de sistema y streaming lo convierten en un chatbot.

Puntos clave
- Nuestro LLM uncensored rechaza menos temas, lo que lo hace ideal para role-play y escritura creativa sin bloqueos de contenido inesperados.
- Los precios son estrictamente de pago por uso a $0,15 por 1M de tokens de entrada y $0,50 por 1M de tokens de salida, sin tarifas base mensuales.
- La integración es sin problemas porque la API utiliza endpoints estándar de OpenAI, lo que requiere solo un cambio en la URL base.
- Las recargas de cripto mediante USDT o USDC incluyen crédito de bonificación, y los prompts nunca se usan para entrenar tus datos.
Minuto 1 a 2: obtener una clave
Ve a la página de clave de API y regístrate con Google, o con correo electrónico y contraseña. Después del registro, la página de claves muestra un botón para reclamar el crédito de prueba: $0,50, uno por persona, válido por 7 días, sin necesidad de tarjeta.
Copia la clave y ponla en una variable de entorno. Una clave en un archivo que confirmas por error es la forma más común de perder crédito.
# model ID for later requests: uncensored
export UF_API_KEY="paste-your-key-here"
pip install openaiUna clave de prueba permite 2 peticiones simultáneas y 60 peticiones por minuto. Esos límites son suficientes para este tutorial.
Minuto 3: la primera petición
El servicio es compatible con OpenAI, por lo que el SDK oficial funciona en cuanto cambies base_url y la clave. El ID de modelo es uncensored.
import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.chatbotunfiltered.com/v1",
api_key=os.environ["UF_API_KEY"],
)
resp = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Give me three names for a cyberpunk bar."}],
)
print(resp.choices[0].message.content)
print("tokens in/out:", resp.usage.prompt_tokens, resp.usage.completion_tokens)Ejecútalo con python first.py. Una lista de nombres y un número de tokens significa que todo funciona. Si ves un error de autenticación, verifica la variable. Si la conexión falla, verifica que la URL base termine en /v1.
La respuesta sigue el formato de chat de OpenAI: una lista choices con el mensaje, un bloque usage con recuentos de tokens y, en ese formato, una razón de finalización que te dice por qué se detuvo la generación. Una respuesta cortada suele significar un max_tokens bajo. En cuanto al costo, una petición con 500 tokens de entrada y 300 tokens de salida cuesta $0.000075 + $0.00015 = $0.000225. Las cinco peticiones en este tutorial cuestan aproximadamente una décima de centavo en total, por lo que el crédito de prueba apenas se toca.
Minuto 4: añadir un prompt de sistema y ajustes
Una petición básica te da un tono de asistente predeterminado. Para un chatbot, añade un mensaje de sistema que defina un personaje y pasa parámetros de muestreo que le convengan.
import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.chatbotunfiltered.com/v1",
api_key=os.environ["UF_API_KEY"],
)
raw = client.chat.completions.with_raw_response.create(
model="uncensored",
messages=[
{"role": "system", "content": "You are Rook, a smuggler with a dry sense of humor. Stay in character. Keep replies under 80 words."},
{"role": "user", "content": "Can you get me across the border tonight?"},
],
temperature=0.9,
top_p=0.95,
max_tokens=200,
seed=7,
)
resp = raw.parse()
print(resp.choices[0].message.content)
print("balance:", raw.headers.get("x-balance-usd"))
print("request id:", raw.headers.get("x-request-id"))temperatureytop_pcontrolan la variedad. Valores más altos dan texto más animado y menos predecible.seedfacilita repetir las pruebas. Se reenvía, así que úsalo para comparar ediciones de prompt.max_tokenses opcional. Sin él, la finalización puede usar el resto de la ventana de 100.000 tokens.- El encabezado de saldo te dice tu crédito restante después de cada llamada.
El prompt es lo principal aquí. Mantenlo corto y específico. Di quién es el personaje, cómo habla, cuál es la historia y cuál debería ser la longitud. Todo eso va en el mensaje de sistema una vez, y lo envías de nuevo con cada petición, ya que la API no recuerda nada entre llamadas.
Minuto 5: streaming
El streaming imprime texto a medida que se genera. Es un cambio de una palabra en la petición, más un bucle para leer fragmentos.
import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.chatbotunfiltered.com/v1",
api_key=os.environ["UF_API_KEY"],
)
stream = client.chat.completions.create(
model="uncensored",
stream=True,
messages=[
{"role": "system", "content": "You are Rook, a smuggler with a dry sense of humor."},
{"role": "user", "content": "Tell me about the worst job you ever took."},
],
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
print()Una petición en streaming ocupa una de tus ranuras de concurrencia hasta que finalice el streaming. Con una clave de prueba, dos flujos abiertos ya utilizan todas ellas, y una tercera petición devuelve HTTP 429 con el código concurrency. Espera e inténtalo de nuevo.
Si quieres confirmar el uso después de un streaming, el último fragmento incluye un bloque de uso.
Elige valores de muestreo con un plan
Los ajustes de muestreo cambian el estilo del bot más de lo que la mayoría espera. Comienza con los valores a continuación y muévete de uno en uno.
| Objetivo | Ajuste | Por qué |
|---|---|---|
| Narración animada | temperature 0.9 a 1.0, top_p 0.95 | Más variedad entre ejecuciones |
| Personaje consistente | temperature 0.6 a 0.7 | Menos sorpresas |
| Pruebas repetibles | seed fijo, temperature 0 | El mismo prompt da el mismo tipo de respuesta |
| Menos repetición | Penalización de frecuencia o presencia alrededor de 0.3 | Desalienta bucles |
| Corta una respuesta en un marcador | stop con una cadena | Detiene la salida cuando aparece |
Los controles de temperatura y top_p ajustan la variedad, y las penalizaciones se pasan al modelo. Cambia un valor, ejecuta el mismo prompt cinco veces y lee las cinco respuestas antes de cambiar el siguiente.
Conviértelo en una conversación
La API no guarda historial. Para que Rook recuerde, mantén una lista y añade ambos lados después de cada turno.
import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.chatbotunfiltered.com/v1",
api_key=os.environ["UF_API_KEY"],
)
messages = [{"role": "system", "content": "You are Rook, a smuggler with a dry sense of humor."}]
def talk(text):
messages.append({"role": "user", "content": text})
r = client.chat.completions.create(model="uncensored", messages=messages)
answer = r.choices[0].message.content
messages.append({"role": "assistant", "content": answer})
return answer
print(talk("Where are we headed?"))
print(talk("And what did I just ask you?"))La segunda pregunta funciona solo porque el primer intercambio está en la lista. Esto también es por lo que el coste del chat crece con la longitud: cada turno reenvía todo. El análisis de coste y compensación analiza ese efecto en profundidad, y la página de precios muestra las tarifas de $0,15 y $0,50 por 1M de tokens.
Dos precauciones a medida que la lista crece. La primera es el coste, ya que los historiales largos elevan el precio de cada turno. La segunda es la ventana: 100.000 tokens para el prompt más la respuesta es generoso, pero un roleplay que dure semanas lo alcanzará. Elimina los turnos más antiguos, manteniendo el mensaje del sistema, una vez que la lista sea larga, o reemplázalos con un resumen corto.
Problemas comunes y próximos pasos
| Problema | Causa probable | Solución |
|---|---|---|
| Error de autenticación | Clave incorrecta o vacía | Imprime la longitud de la variable, elimina espacios |
| No encontrado | URL base que falta /v1 | Usa la URL base exacta de esta página |
429 rate_limited | Más de 60 peticiones por minuto (prueba) | Ralentiza o usa una clave completa (300 por minuto) |
429 con Retry-After: 5 | Sobrecarga temporal | Espera 5 segundos y reintenta |
| Respuestas extrañas o planas | Prompt del sistema débil | Añade voz, configuración, límite de longitud |
Las peticiones fallidas o rechazadas no se cobran. Para los siguientes pasos, lee la documentación de la API para herramientas y modo JSON. El modelo es solo de texto, por lo que no hay imágenes, audio ni embeddings. Las recargas son desde $20 hasta $500 en cripto (USDT en TRC20 o USDC en Base), y el crédito no caduca. Eres responsable del acceso exclusivo para adultos y la moderación en todo lo que construyas sobre la API.
Si un problema no está en la tabla, reduce la petición al caso funcional más pequeño: un mensaje de usuario, sin prompt del sistema, sin parámetros extra. Luego añade piezas de nuevo hasta que falle. Casi todos los problemas en una primera integración provienen de un error tipográfico en la URL, una clave copiada con un espacio al final o una lista de mensajes con la forma incorrecta.
Maneja errores en el código
Un script que funciona una vez no es un bot. Añade un reintento para los casos en los que la API te indique que esperes.
import os, time
from openai import OpenAI, RateLimitError
client = OpenAI(
base_url="https://api.chatbotunfiltered.com/v1",
api_key=os.environ["UF_API_KEY"],
max_retries=0,
)
def ask(messages, tries=4):
for i in range(tries):
try:
r = client.chat.completions.create(model="uncensored", messages=messages)
return r.choices[0].message.content
except RateLimitError:
time.sleep(5 * (i + 1))
raise RuntimeError("still rate limited after retries")El SDK lanza RateLimitError en HTTP 429. Para sobrecargas temporales, la API envía Retry-After: 5, por lo que esperar cinco segundos es el primer paso correcto. Para errores de concurrency repetidos, cola las peticiones de tu parte en lugar de reintentar más rápido.
Más guías
Preguntas frecuentes
¿Es una API de chatbot sin filtros lo mismo que la API de OpenAI?
El protocolo es el mismo, por lo que el SDK de OpenAI funciona. El modelo es diferente: un modelo de pesos abiertos de un proveedor independiente, ajustado para responder sin rechazos de contenido para uso adulto legal.
¿Qué base URL y modelo debo usar?
Base URL https://api.chatbotunfiltered.com/v1 y el ID de modelo uncensored.
¿Necesito pagar para probarlo?
No. El crédito de prueba de $0,50 no requiere detalles de pago. Las recargas pagadas son solo por cripto.
¿Puedo hacer streaming de las respuestas?
Sí. Establece stream a true. Una petición en streaming ocupa una ranura de concurrencia hasta que finalice el stream.
¿Cómo veo mi saldo?
Lee el encabezado X-Balance-USD en cualquier respuesta, o llama a GET /v1/balance.
Obtén tu clave de API al instante
Regístrate, copia tu clave, actualiza tu base URL. La configuración está completa.