NsfwAiApi/Guía
¿El mejor LLM local para roleplay o una API alojada?
El mejor LLM local para roleplay es el modelo sin censura más grande que tu GPU pueda alojar con una calidad que aceptes, y esa respuesta cambia cada pocos meses. Si prefieres saltarte el hardware, un endpoint alojado te da el mismo flujo de chat con un cambio de URL.

Local o alojado: la decisión rápida
Elige local si ya tienes una GPU capaz, quieres todo sin conexión o te gusta ajustar modelos. Elige alojado si quieres memoria larga en una historia, usas una laptop o teléfono, o prefieres gastar minutos en lugar de fines de semana en la configuración. Muchas personas hacen ambas cosas: un modelo local para experimentos privados y uno alojado para campañas largas.
| Factor | Modelo local | API alojada |
|---|---|---|
| Modelo de costo | Hardware y potencia, sin tarifa por token | Pago por token desde crédito prepago |
| Tamaño del modelo | Limitado por la memoria de tu GPU | Lo que ejecute el proveedor |
| Longitud del contexto | Limitado por la memoria, ya que un contexto más largo necesita más de ella | 100.000 tokens aquí |
| Privacidad | Nada sale de tu máquina | Los prompts viajan al proveedor; aquí no se usan para entrenamiento |
| Configuración | Tiempo de ejecución, pesos, cuantización, actualizaciones | Una URL base y una clave |
| Funciona desde cualquier dispositivo | Solo si expones tu propia máquina | Sí |
Qué decide realmente el mejor modelo local
Los rankings del mejor LLM local para roleplay caducan rápido y ningún nombre es correcto para todos. En su lugar, juzga a los candidatos por las cosas que aparecen en una sesión real.
- Comportamiento de rechazo. Muchos modelos base e instructivos fueron ajustados para rechazar ciertos temas. Los modelos ajustados para ficción o marcados como sin censura suelen rechazar menos, pero la calidad varía, así que pruébalos con tus propias escenas.
- Mantenerse en personaje. Vigila si un modelo se desvía hacia narrar las acciones de tu personaje, repite las mismas frases en cada turno o olvida quién está en la habitación.
- Calidad de la prosa. Lee diez respuestas seguidas. Algunos modelos son adecuados para un turno, pero resultan cansinos a partir del décimo.
- Manejo del contexto. Un modelo puede anunciar una ventana larga y aun así perder detalles del centro de la misma. Ejecuta una prueba donde un dato de inicio del chat sea relevante más adelante.
- Tamaño y cuantización. Un modelo más grande comprimido en cuantización pesada puede perder más que uno más pequeño ejecutado a mayor precisión. Compara, no asumas.
Los hilos de la comunidad y las tarjetas de modelos para el tiempo de ejecución que usas son el lugar correcto para recomendaciones actuales. Descarga dos o tres candidatos, ejecuta la misma escena en cada uno y quédate con el que te haga querer continuar la historia.
Dónde se queda corto lo local
La pared que la mayoría de los roleplayers encuentran es la memoria, y aparece en dos lugares. La primera es el modelo mismo: un modelo más grande escribe mejor pero necesita más memoria de GPU. La segunda es el contexto. Cada mensaje en una historia larga se envía de nuevo con cada nuevo turno, y la caché que lo contiene también crece con la longitud, por lo que una campaña larga puede apretar una GPU que maneja chats cortos sin problema.
Las soluciones alternativas habituales son resumir turnos antiguos, usar libros de lore que inyecten solo datos relevantes y reducir el tamaño de la ventana de contexto. Funcionan, pero también implican trabajo. Un endpoint alojado con una ventana de 100.000 tokens te permite mantener mucho más de la historia a la vista, lo que se adapta a campañas largas, mundos compartidos con muchos personajes e historias que duran semanas.
La compensación es el coste, así que ayuda medirlo. Supongamos que un chat tiene 30.000 tokens de historial y el modelo escribe 300 tokens por respuesta. Un turno cuesta 30.000 tokens de entrada a $0,15 por 1M, lo que son $0,0045, más 300 tokens de salida a $0,50 por 1M, lo que son $0,00015. Eso son $0,00465 por turno, o $0,465 para 100 turnos. Una larga velada de juego cuesta muy por debajo de un dólar. La página de precios lista las tarifas y los niveles de bonificación para recargas mayores.
Una configuración alojada funcional en Python
El endpoint es compatible con OpenAI, por lo que el paquete oficial openai funciona sin cambios salvo por la URL base y la clave. El ID del modelo es uncensored. Primero obtén una clave desde la página de claves de API; las cuentas nuevas pueden obtener un crédito de prueba de $0,50 con un solo clic, sin necesidad de datos de pago.
Este script mantiene un historial en bucle, transmite la respuesta y recorta turnos antiguos para mantener el prompt pequeño. El prompt de sistema es la parte que vale tu tiempo: establece el entorno, las reglas y el estilo.
import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.nsfwaiapi.com/v1",
api_key=os.environ["NSFWAIAPI_KEY"],
)
SYSTEM = '''You are the narrator and all non-player characters in an adult fiction roleplay.
Setting: a rain-soaked port city, late autumn, gaslight and smuggler politics.
Rules:
- Write in third person, past tense, 2 to 4 short paragraphs per reply.
- Never write the player's actions, words or thoughts. Stop where the player decides.
- Keep each character's voice and goals consistent. Track who is present in the scene.
- All characters are adults. Do not write sexual content involving minors under any circumstances.
- Stay in the story. No disclaimers or out-of-character commentary unless the player asks with (OOC).'''
history = [{"role": "system", "content": SYSTEM}]
MAX_TURNS = 40 # keep the last 40 messages besides the system prompt
def say(user_text):
history.append({"role": "user", "content": user_text})
trimmed = [history[0]] + history[1:][-MAX_TURNS:]
stream = client.chat.completions.create(
model="uncensored",
messages=trimmed,
temperature=0.9,
top_p=0.95,
frequency_penalty=0.3,
max_tokens=600,
stream=True,
)
reply = ""
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
piece = chunk.choices[0].delta.content
reply += piece
print(piece, end="", flush=True)
print()
history.append({"role": "assistant", "content": reply})
say("I push open the door of the Gull and Anchor and look for the harbor master.")
Como la ventana es de 100 000 tokens, puedes aumentar mucho MAX_TURNS antes de que importe el recorte. El recorte sigue siendo una buena práctica: los prompts más cortos cuestan menos y mantienen al modelo enfocado en los eventos recientes.
Configuración de clientes para SillyTavern y apps similares
La mayoría de las interfaces de roleplay tienen una pantalla de conexión para una fuente de completación de chat compatible con OpenAI o personalizada. SillyTavern, por ejemplo, te permite agregar un endpoint compatible con OpenAI. Los campos son los mismos en todas partes:
- URL base o endpoint:
https://api.nsfwaiapi.com/v1. Algunas apps quieren la ruta completa terminando en/chat/completions; si la app pide una base, detente en/v1. - Clave de API: tu clave, enviada como token bearer.
- Modelo:
uncensored. Si la app puede obtener una lista de modelos, puede llamar aGET /v1/models. - Transmisión: activado. Las respuestas aparecen a medida que se escriben, y la app puede detenerse temprano si no te gusta la dirección.
Para el muestreo, una temperatura de 0,8 a 1,0 se adapta bien al texto narrativo, con top_p cerca de 0,95. Una penalización pequeña de frecuencia o presencia reduce las frases repetidas que tienden a acumularse en chats largos. Aumenta la penalización solo si ves repeticiones, ya que valores altos hacen que la prosa sea extrañamente evasiva. Las secuencias de parada se pasan directamente, por lo que añadir el nombre del jugador seguido de dos puntos como cadena de parada ayuda si un modelo intenta hablar por ti. Configura el tamaño del contexto de la app a lo que quieras pagar; no necesitas rellenar los 100.000 tokens.
Ten en cuenta la concurrencia si ejecutas varias pestañas de chat o un bot para amigos. Una clave completa permite 8 peticiones simultáneas y 300 por minuto, y una clave de prueba permite 2 y 60. Una respuesta en streaming mantiene su espacio hasta que termina el streaming, por lo que una pestaña atascada puede consumir un espacio. La documentación lista los límites y los encabezados de respuesta, incluyendo X-Balance-USD, que muestra tu crédito restante.
Una pequeña rutina para mantener sanas las historias largas
Las sesiones largas de roleplay fallan de formas predecibles, y algunos hábitos previenen la mayoría de los problemas. Escribe un resumen corto de la historia cada 20 o 30 turnos y mantenlo cerca de la parte superior del prompt, después del mensaje de sistema. Actualízalo manualmente o pide al modelo que lo produzca, luego verifica que los nombres, lugares y promesas hayan sobrevivido. Fija los hechos que nunca deben olvidarse, como relaciones e hilos abiertos, en el propio prompt de sistema.
Si una respuesta va en una dirección que no te gusta, regénerala en lugar de discutir con ella en el chat. Las discusiones ensucian el historial y enseñan al modelo que la escena trata sobre la discusión. Cuando quieras dirigir, añade una línea clara entre corchetes, como una nota sobre el estado de ánimo de la siguiente escena, y deja que la siguiente respuesta la lleve. Mantén los nombres de los personajes consistentes y dale a cada personaje no jugador una nota de voz de una línea, porque los modelos difuminan los personajes que suenan igual.
Límites honestos de este modelo
Es un modelo de pesos abiertos, ejecutado por un proveedor independiente y ajustado para responder sin rechazos de contenido para uso adulto legal. No es la API oficial de ningún proveedor de modelos ni un enrutador entre varios. No puedes elegir entre modelos, y no deberías esperar que iguale a los mejores modelos cerrados en cada tarea.
Solo genera texto. No hay imágenes para tus personajes, ni voz ni incrustaciones para búsqueda en un libro de lore, así que si quieres retratos o voz necesitas agregar un servicio separado para cada uno. Tampoco hay ajuste fino. La calidad también dependerá de tu prompt: un prompt de sistema vago da ficción vaga, y un buen perfil de personaje con diálogo de ejemplo hace más que cualquier ajuste de muestreo.
Una regla es fija. No se permite contenido sexual que involucre a menores, y una configuración que intente producirlo no será compatible. Mantén a los personajes como adultos y asegúrate de que tu uso sea legal. Para ficción, aplicaciones de compañía y chat de personajes dirigido a adultos, la combinación de menos rechazos y una ventana larga es lo útil.
Más guías
Preguntas y respuestas
¿Es mejor un LLM local que una API alojada para el roleplay?
Ninguno gana en todos los aspectos. Lo local te da privacidad sin conexión y no tiene costo por token, mientras que lo alojado te da una ventana de contexto más larga y sin límites de hardware. Muchas personas usan ambas.
¿Puedo usar SillyTavern con esta API?
Sí. SillyTavern y aplicaciones similares aceptan un endpoint compatible con OpenAI. Ingresa https://api.nsfwaiapi.com/v1 como URL, tu clave y el ID del modelo uncensored.
¿Cuánto contexto puede usar una sesión de roleplay?
La ventana de contexto es de 100.000 tokens, contando el prompt y la respuesta juntos. Los chats largos cuestan más porque el historial se envía en cada turno.
¿Genera imágenes o voz para mis personajes?
No. El servicio es solo de texto, sin generación de imágenes, audio o video ni embeddings.
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 APINsfwAiApiAPI de LLM sin censura para generación de texto NSFW