ES ▾
Obtener clave de API

Generador de historias sin filtros de IA vía API

Un generador de historias que se detiene a mitad de escena porque la trama se puso oscura es una mala herramienta de escritura. Este artículo muestra cómo construir uno sobre un endpoint compatible con OpenAI, con código que puedes ejecutar hoy.

Actualizado

Libro abierto con páginas que se convierten en cintas brillantes que fluyen hacia una terminal, representando la generación de historias vía API

Puntos clave

  • Apunta cualquier SDK de OpenAI a la URL base, usa el ID de modelo uncensored y tendrás un motor de historias en unas veinte líneas.
  • Un system prompt que establece género, tono y reglas importa más que cualquier ajuste de muestreo.
  • La ventana de 100.000 tokens te permite mantener toda una biblia de historia y varios capítulos en una sola petición.
  • Un capítulo de 1.200 tokens cuesta aproximadamente una décima de centavo, por lo que el costo rara vez es el límite.

Qué es realmente un generador de historias sin filtros

Un generador de historias con IA sin filtros es un modelo de texto que escribe ficción sin detenerse para darte lecciones, cambiar tu villano por uno amigable o negar una escena porque el tema es sombrío. Thrillers criminales, ficción de guerra, horror, protagonistas moralmente ambiguos y romance maduro entre adultos necesitan todos un modelo que trate el material oscuro como material, no como una alerta.

El servicio detrás de este sitio te ofrece un modelo de pesos abiertos, ajustado para responder sin rechazos de contenido para uso adulto legal. Se ejecuta en un proveedor independiente y se accede a través de una API estándar estilo OpenAI. Envías una lista de mensajes, recibes prosa. No hay editor web que aprender ni plantilla que rellenar, que es el punto: tú decides cómo funciona la herramienta de historia y el modelo proporciona el texto.

Hay una regla fija. El contenido sexual que involucre a menores de edad nunca está permitido, y ningún prompt cambia eso. Todo lo demás en la ficción adulta legal es tuyo para escribir. Si quieres una visión general de cómo esto se compara con una plataforma de personajes alojada, la página en NoFilter AI frente a Character AI lo cubre.

Tu primera historia en veinte líneas de Python

Debido a que la API sigue el formato de OpenAI, el paquete oficial openai funciona sin cambios. Solo reemplazas la URL base y la clave. Instálalo con pip install openai, luego ejecuta esto.

from openai import OpenAI

client = OpenAI(
    base_url="https://api.nofilterai.cc/v1",
    api_key="YOUR_KEY",
)

resp = client.chat.completions.create(
    model="uncensored",
    temperature=0.9,
    messages=[
        {"role": "system", "content": (
            "You are a fiction author. Write in third person, past tense. "
            "Use concrete detail and subtext. Never summarise the scene, "
            "never moralise, never address the reader."
        )},
        {"role": "user", "content": (
            "Genre: noir crime. Setting: a flooded harbour town. "
            "Write the opening 600 words. A smuggler finds a body in his net."
        )},
    ],
)
print(resp.choices[0].message.content)

El ID del modelo es uncensored. La clave proviene de la página de clave de API. Si aún no te has registrado, los nuevos usuarios pueden reclamar $0.50 de crédito de prueba con un solo clic, válido durante 7 días, de modo que este primer script no te cuesta nada.

La misma llamada funciona desde curl, lo cual es útil para probar un prompt antes de envolverlo en código.

curl https://api.nofilterai.cc/v1/chat/completions \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "uncensored",
    "messages": [
      {"role": "user", "content": "Write a 200 word horror scene set in a lighthouse."}
    ]
  }'

Estructura del prompt para producir ficción utilizable

La mayoría de las salidas decepcionantes de un modelo de historia provienen de instrucciones vagas, no del modelo. Tres partes del prompt hacen el trabajo pesado.

El mensaje de sistema establece el autor, no el tema

Pon aquí las reglas de voz: punto de vista, tiempo verbal, ritmo de la oración, qué evitar. Una línea como "no termines las escenas con una reflexión sobre lo que todo significa" elimina un hábito que comparten muchos modelos de lenguaje. Mantén este mensaje estable durante todo un proyecto para que los capítulos suenen similares.

El mensaje de usuario establece el ritmo

Da una escena a la vez. Nombra los personajes, el lugar, qué cambia al final de la escena y una longitud objetivo. "Escribe 700 palabras. Mara confronta a su hermano por el libro mayor perdido. Ella no obtiene una respuesta" es mucho mejor que "continúa la historia".

Una biblia de historia viaja junto

Mantén un bloque corto con datos de personajes, la línea de tiempo hasta ahora e hilos abiertos, y envíalo con cada petición. Una biblia de 800 tokens cuesta casi nada y evita que el modelo cambie el color de los ojos o resucite a un personaje.

  • Usa temperature alrededor de 0.8 a 1.0 para el borrador y 0.5 a 0.7 para las pasadas de edición.
  • Usa secuencias stop si generas en un formato fijo, por ejemplo deteniéndote en una línea que dice "END SCENE".
  • Usa presence_penalty y frequency_penalty ligeramente si el modelo repite frases mascotas. Ambos se pasan al modelo.
  • Usa seed cuando quieras comparar dos versiones del prompt en igualdad de condiciones.

Mantener la coherencia de una historia larga

La ventana de contexto es de 100.000 tokens, contando el prompt y la respuesta juntos. Eso es espacio para una biblia de historia completa, los capítulos anteriores y un nuevo capítulo de salida en una sola petición. Para la mayoría de los proyectos de ficción, puedes dejar de preocuparte por los trucos de memoria durante mucho tiempo.

Un bucle simple maneja una historia serializada. Mantén una lista en curso de mensajes, añade cada capítulo que escribe el modelo y añade tu siguiente instrucción. Cuando la lista se acerque al límite, reemplaza los capítulos más antiguos con un resumen corto que también le pidas al modelo que escriba.

from openai import OpenAI

client = OpenAI(base_url="https://api.nofilterai.cc/v1", api_key="YOUR_KEY")

bible = "Mara Voss, 34, ferry pilot. Brother Teo owes money. Setting: Harbor Nine, rain every night."
history = [{"role": "system", "content": "Fiction author. Third person, past tense. No moralising.\nBible: " + bible}]

def write(beat):
    history.append({"role": "user", "content": beat})
    r = client.chat.completions.create(model="uncensored", messages=history, temperature=0.85)
    text = r.choices[0].message.content
    history.append({"role": "assistant", "content": text})
    return text

print(write("Chapter 1, 700 words: Mara finds Teo's boat adrift."))
print(write("Chapter 2, 700 words: she searches the cabin and finds a second ledger."))

Cuando alcances el límite, no truncar silenciosamente. Un modelo que pierde el inicio de la historia a menudo conserva la trama pero olvida los detalles pequeños. Un resumen escrito de 500 a 800 tokens, insertado después del mensaje del sistema, mantiene esos datos vigentes con un pequeño costo.

Las peticiones fallidas o rechazadas no se cobran, así que un reintento después de un error nunca duplica tu factura. La lista completa de parámetros está en la documentación de API.

Streaming y ficción interactiva

Para una aventura de texto o un asistente de escritura en vivo, quieres palabras en pantalla a medida que llegan. Configura stream: true y lee los eventos enviados por el servidor. Los números de uso llegan al final del stream.

import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api.nofilterai.cc/v1",
  apiKey: process.env.NOFILTER_KEY,
});

const stream = await client.chat.completions.create({
  model: "uncensored",
  stream: true,
  messages: [
    { role: "system", content: "You are the narrator of a survival horror text adventure. Second person, present tense." },
    { role: "user", content: "I open the cellar door." },
  ],
});

for await (const chunk of stream) {
  process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
}

Aplican dos límites prácticos. Una clave completa permite 8 peticiones simultáneas y 300 peticiones por minuto; una clave de prueba permite 2 y 60. Una petición en streaming mantiene su ranura de concurrencia hasta que termina el stream, así que un lector lento en una página web puede bloquear una ranura más tiempo del que esperas. Si excedes un límite recibes HTTP 429 con el código de error rate_limited o concurrency. En una sobrecarga breve también obtienes un 429 con Retry-After: 5, y esperar cinco segundos antes de reintentar es la respuesta correcta.

Por qué las historias generadas se vuelven planas y las soluciones

Incluso sin rechazos, un modelo puede escribir ficción aburrida. Las causas habituales son fáciles de reparar una vez que las conoces.

La primera es el reflejo del resumen. Dejado solo, un modelo comprime los eventos en un resumen ordenado. Pide una escena, nombra su longitud y prohíbe resúmenes en el mensaje de sistema. La segunda es la uniformidad: todos los personajes hablan en el mismo registro educado. Dale a cada personaje que habla una nota de voz de dos líneas, como "cortante, nunca termina las oraciones" o "formal, usa títulos incluso para amigos". La tercera es la falta de stakes. Un ritmo como "hablan sobre el plan" produce relleno, mientras que "ella necesita que él esté de acuerdo antes del amanecer, y él lo sabe" produce tensión.

Finalmente, lee la salida como un editor. Si la misma forma de oración abre cuatro párrafos seguidos, dáselo a conocer al modelo en la siguiente petición y pide una reescritura. Estás dirigiendo, no aceptando lo que llegue. Los escritores que tratan la primera salida como un borrador obtienen capítulos mucho mejores que aquellos que esperan uno terminado.

Qué cuesta una historia

La tarifa es $0.15 por 1M de tokens de entrada y $0.50 por 1M de tokens de salida, desde crédito prepago sin suscripción. El crédito no caduca. Los números a continuación se calculan a partir de esos dos precios.

TrabajoTokens de entradaTokens de salidaCosto
Un capítulo con biblia y texto anterior3,0001,200$0.00045 + $0.0006 = $0.00105
100 de esos capítulos300,000120,000$0.045 + $0.06 = $0.105
Sesión interactiva: 50 turnos, contexto de 20.000 tokens cada uno, respuestas de 1.000 tokens1,000,00050,000$0.15 + $0.025 = $0.175
Una petición que llena la ventana con entrada100,0000$0.015

Incluso cien capítulos cuestan unos diez centavos. Las recargas comienzan en $20 y suben hasta $500 en cualquier cantidad entera, con un bono del 5% desde $50, 10% desde $100 y 15% desde $200. El pago es solo cripto, usando USDT en TRC20 o USDC en Base. Los detalles actuales están en la página de precios.

El hábito costoso es reenviar un historial muy largo en cada turno de una historia interactiva. Resume los turnos anteriores y tus tokens de prompt disminuyen drásticamente.

Consejos prácticos y límites

Algunos puntos ahorran tiempo una vez que empieces a construir.

  • Solo texto. El servicio no genera imágenes, audio ni video, y no ofrece embeddings ni fine-tuning. Para arte de portada o voz, usa otra herramienta.
  • El modo JSON ayuda con la estructura. Pide response_format: {"type":"json_object"} cuando quieras que el modelo devuelva una ficha de personaje o una lista de escenas que tu código analice.
  • Tus prompts no se usan para entrenamiento. Eso importa si tu manuscrito está sin publicar.
  • Edita en pasadas. Redacta con una temperatura alta, luego envía el borrador de nuevo con una instrucción para ajustar el diálogo o eliminar adverbios a una temperatura más baja.
  • Verifica la salida. Un modelo sin filtros seguirá tu dirección, así que el tono que obtienes es el tono que pides.

El modelo es un modelo de pesos abiertos general, no la API oficial de un proveedor, así que pruébalo en tu propio género antes de construir un producto alrededor de él. Comienza con el crédito de prueba y unos pocos capítulos reales.

Preguntas y respuestas

¿Hay una forma gratuita de probar un generador de historias sin filtros a través de la API?

Los nuevos usuarios pueden reclamar $0.50 de crédito de prueba con un solo clic en la página de clave de API después de iniciar sesión. No requiere pago, es válido por 7 días y está limitado a uno por persona.

¿Cuánto puede ser una solicitud de historia única?

La ventana de contexto es de 100.000 tokens, compartida por el prompt y la respuesta. La respuesta puede usar todo lo que el prompt deje libre, y max_tokens es opcional.

¿Puedo usarlo con herramientas que ya son compatibles con OpenAI?

Sí. Cualquier cliente que te permita configurar una URL base y una clave personalizadas funciona, usando el ID de modelo uncensored. Los métodos admitidos son POST /v1/chat/completions y GET /v1/models.

¿Hay algún contenido que el modelo no escriba?

El contenido sexual que involucre a menores de edad nunca está permitido. Más allá de eso, el modelo está ajustado para responder sin rechazos de contenido para uso adulto lícito.

¿Almacenas o entrenas con mis historias?

Los prompts no se utilizan para entrenamiento.

Tu clave está a un formulario de distancia

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