ES ▾
Obtener clave de API

Codificador de IA sin filtros: úsalo en Cursor y Python

Algunas solicitudes de código reciben un rechazo o etiqueta de advertencia de asistentes principales: herramientas de seguridad, scrapers, ingeniería inversa, informes de exploits para tu propio laboratorio. Aquí te mostramos cómo conectar un modelo sin censura en tu editor y scripts, y qué esperar de él.

Actualizado

Terminal isométrica con bloques de código fluyendo hacia cubos conectados, ilustrando una API de programación sin censura

Puntos clave

  • El endpoint usa el formato de chat de OpenAI, por lo que editores y frameworks que acepten una URL base personalizada pueden usarlo.
  • Se admiten llamadas a funciones, modo JSON y streaming, lo que cubre la mayoría de los patrones de agentes de codificación.
  • La ventana de 100,000 tokens permite incluir una gran parte de un repositorio en una sola petición.
  • Es un modelo general, no especializado en código, así que pruébalo en tus tareas primero.

Qué es un codificador sin filtros y qué no es

Un codificador de IA sin filtros es un modelo de lenguaje que responde solicitudes de programación sin cuestionar tus razones. Si estás escribiendo un escáner de puertos para una red que posees, descompilando un binario heredado del que perdiste el código fuente, o construyendo un scraper que imita un navegador, obtienes código en lugar de un párrafo sobre uso responsable.

Es útil ser preciso sobre qué es este servicio. Es un modelo de pesos abiertos, ajustado para responder sin rechazos de contenido para uso adulto legal, gestionado por un proveedor independiente. No es la API oficial de ningún gran proveedor ni es un enrutador que elija entre modelos. El ID del modelo es uncensored. No hay afirmación aquí sobre puntuaciones de benchmarks, porque ninguna se publica para él en este sitio. Un modelo con menos rechazos no es automáticamente un mejor programador, así que trata la primera semana como una evaluación.

El uso legal es tu responsabilidad. La herramienta elimina la fricción para trabajo de seguridad legítimo, investigación e ingeniería inusual. No es una licencia para atacar sistemas que no posees.

Llámalo desde Python o curl

La prueba más simple es una sola petición. Este script de Python solicita una pequeña herramienta e imprime la respuesta.

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.2,
    messages=[
        {"role": "system", "content": "You are a senior engineer. Reply with code first, then at most five lines of notes."},
        {"role": "user", "content": "Write a Python script that scans TCP ports 1-1024 on a host I own, using asyncio, with a 0.5 s timeout."},
    ],
)
print(resp.choices[0].message.content)

Una temperatura baja se adapta al código. Los valores entre 0,1 y 0,3 dan una salida más estable, y seed te permite repetir una ejecución cuando comparas prompts. La misma petición desde la shell se ve así.

curl https://api.nofilterai.cc/v1/chat/completions \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "uncensored",
    "temperature": 0.2,
    "messages": [
      {"role": "user", "content": "Explain this regex and rewrite it without lookbehind: (?<=id=)\\d+"}
    ]
  }'

Puedes listar lo que expone el endpoint con GET /v1/models. Obtén una clave desde la página de claves; el crédito de prueba de un clic de $0,50 es suficiente para muchas cientos de peticiones de codificación pequeñas.

Configúralo en Cursor

Cursor te permite anular la URL base de OpenAI en su configuración de modelos, que es cómo apuntarlo a cualquier proveedor compatible. Los nombres exactos del menú cambian entre versiones, así que sigue la idea en lugar de las etiquetas.

  1. Abre la configuración de Cursor y busca la sección de modelos.
  2. Pega tu clave en el campo de clave de API de OpenAI.
  3. Habilita la opción para anular la URL base de OpenAI e ingresa https://api.nofilterai.cc/v1.
  4. Añade un modelo personalizado llamado uncensored y selecciónalo en el panel de chat.
  5. Envía un mensaje de prueba pequeño antes de intentar una edición en varios archivos.

Cursor y editores similares pueden usar sus propios servidores para algunas funciones, y algunas funciones pueden no aceptar modelos personalizados en absoluto. Si una función falla, verifica si está vinculada a los modelos del proveedor en lugar de asumir que el endpoint está roto. El chat con un modelo personalizado es la parte confiable.

Otras herramientas que aceptan un endpoint compatible con OpenAI, como Continue o Aider, usan los mismos tres valores: URL base, clave, nombre del modelo.

Úsalo desde LangChain

La clase ChatOpenAI de LangChain toma un argumento base_url, por lo que el endpoint se integra sin un wrapper personalizado.

from langchain_openai import ChatOpenAI

llm = ChatOpenAI(
    model="uncensored",
    base_url="https://api.nofilterai.cc/v1",
    api_key="YOUR_KEY",
    temperature=0.2,
)

print(llm.invoke("Write a bash one-liner that lists the 10 largest files under /var/log.").content)

Las cadenas, plantillas de prompt y analizadores de salida funcionan de la misma manera que con cualquier modelo de chat que siga el esquema de OpenAI. Si construyes un agente, recuerda el límite de concurrencia: una clave completa permite 8 peticiones al mismo tiempo y 300 por minuto, una clave de prueba 2 y 60. Un agente paralelo que distribuya diez llamadas a herramientas obtendrá HTTP 429 con el código concurrency para los extras. Limita la distribución o reintenta con un breve retraso.

Llamadas a funciones y modo JSON para agentes

Los agentes de codificación dependen de salidas estructuradas. La API soporta tools, tool_choice, tool_calls en streaming, y resultados de herramientas enviados como mensajes role: "tool". Aquí hay una ida y vuelta mínima con una función que lee un archivo.

import json
from openai import OpenAI

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

tools = [{
    "type": "function",
    "function": {
        "name": "read_file",
        "description": "Read a UTF-8 text file from the project",
        "parameters": {
            "type": "object",
            "properties": {"path": {"type": "string"}},
            "required": ["path"],
        },
    },
}]

messages = [{"role": "user", "content": "Open main.py and tell me what it does."}]
first = client.chat.completions.create(model="uncensored", messages=messages, tools=tools)
call = first.choices[0].message.tool_calls[0]

messages.append(first.choices[0].message)
messages.append({
    "role": "tool",
    "tool_call_id": call.id,
    "content": open(json.loads(call.function.arguments)["path"]).read(),
})
final = client.chat.completions.create(model="uncensored", messages=messages, tools=tools)
print(final.choices[0].message.content)

Valida siempre los argumentos antes de ejecutar cualquier cosa que el modelo solicite. Una ruta, una cadena de shell o una URL que provenga de un modelo es entrada no confiable, sin importar qué modelo la haya producido.

Para que tu código pueda analizar la salida, establece response_format en {"type":"json_object"} y indica en el prompt qué claves esperas. El modo JSON hace que la respuesta sea JSON válido, pero las comprobaciones de tu esquema aún deben estar en tu código.

Tamaño del contexto y el costo de una llamada de codificación

La ventana es de 100,000 tokens para prompt más respuesta. Como guía aproximada, eso contiene muchos archivos de fuente a la vez, así que puedes pegar un módulo, sus pruebas y la traza de error del test fallido en una sola vez en lugar de resumir. Los prompts más grandes cuestan más, así que envía solo lo que la pregunta necesite.

El precio es $0,15 por 1M de tokens de entrada y $0,50 por 1M de tokens de salida. Ejemplos:

PeticiónEntradaSalidaCosto
Explicar una función1,500500$0.000225 + $0.00025 = $0.000475
Revisar un módulo con pruebas30,0002,000$0.0045 + $0.001 = $0.0055
200 revisiones como esa en un día6,000,000400,000$0.90 + $0.20 = $1.10
Ventana completa como entrada, una llamada100,0000$0.015

Las solicitudes fallidas o rechazadas no se cobran. El crédito es prepago, no caduca y las recargas van de $20 a $500 en cualquier cantidad entera, con un bono del 5% desde $50, 10% desde $100 y 15% desde $200. El pago es solo con cripto: USDT en TRC20 o USDC en Base. Consulta la página de precios para ver los términos actuales.

Un prompt de revisión que funciona con diffs reales

Uno de los mejores usos de una ventana grande es la revisión. En lugar de preguntar "¿es bueno este código?", pega los cambios y los archivos que toca, luego pide hallazgos en una estructura fija. Solicita una lista numerada en la que cada elemento nombre el archivo, la línea, el problema y una solución de una línea, y di que una lista vacía es una respuesta válida. Esa última instrucción es importante: un modelo al que se le pide encontrar problemas a veces los inventa para complacerte.

Mantén la temperatura cerca de 0,2 para la revisión, porque quieres obtener el mismo resultado en una segunda ejecución. Si ejecutas revisiones en un trabajo de integración continua, establece seed y registra el encabezado X-Request-Id para poder rastrear un resultado sorprendente más tarde. Combina esto con el modo JSON cuando un script deba publicar los resultados en algún lugar, y solicita claves como file, line, severity y fix.

Cuando la respuesta es incorrecta o está vacía

Tres problemas cubren la mayoría de las ejecuciones fallidas. Si obtienes un 401, falta la clave o el encabezado no es Authorization: Bearer seguido de tu clave. Si un editor dice que el modelo no existe, verifica que el nombre sea exactamente uncensored y que la URL base termine en /v1 sin rutas adicionales. Si el código compila pero se comporta mal, proporciona al modelo la salida fallida y pídele que explique el error antes de que reescriba algo; las correcciones realizadas después de un diagnóstico tienden a ser más pequeñas y seguras que las correcciones realizadas a ciegas.

Dónde encaja y dónde no

Usa un endpoint sin censura para las solicitudes que otros asistentes rechazan o matizan, y mantén tu herramienta habitual para el resto si funciona mejor para ti. Muchos desarrolladores ejecutan dos modelos lado a lado y envían cada tarea a aquel que la responda limpiamente.

  • Buen ajuste: trabajo en laboratorio de seguridad en sistemas que posees, scripts de extracción y automatización, informes de análisis de malware para defensores, notas de ingeniería inversa, trabajos inusuales de manipulación de datos.
  • Ten cuidado: el código generado puede contener errores o funciones de librería inventadas. Ejecútalo, pruébalo, léelo.
  • No disponible: generación de imágenes o audio, embeddings y ajuste fino. Este es un endpoint de chat de texto únicamente.
  • Privacidad: los prompts no se usan para entrenamiento, lo cual es importante si pegas código propietario.

El límite del cuerpo es de 8 MB por petición, mucho más de lo que puede usar la ventana de contexto. Los encabezados de respuesta incluyen X-Request-Id, X-Balance-USD y los valores del límite de peticiones, útiles en los registros. La documentación enumera todos los parámetros que se pasan.

Preguntas y respuestas

¿Es un programador de IA sin filtros mejor en programación que otros modelos?

No por defecto. Menos rechazos cambian lo que responderá, no qué tan bien programa. Pruébalo en tus propias tareas antes de confiar en él.

¿Qué editores y frameworks funcionan con él?

Cualquiera que permita una URL base compatible con OpenAI personalizada, una clave y un nombre de modelo. Cursor, LangChain y los SDKs oficiales de OpenAI son ejemplos comunes.

¿Admite llamadas a funciones?

Sí. Acepta herramientas y tool_choice, devuelve tool_calls (también en streaming) y toma resultados como mensajes de role tool. El modo JSON también está disponible.

¿Qué sucede cuando alcanzo el límite de peticiones?

Obtienes HTTP 429 con el código de error rate_limited o concurrency. Para sobrecarga temporal, el 429 lleva un encabezado Retry-After de 5 segundos.

Tu clave está a un formulario de distancia

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