Otro tutorial mientras termino algunos bots (Actualizado con script)

Traducido del inglés

Another Tutorial While I Finish Some Bots (Updated With Script)

66

74

PROXY DE IA DE JANITORAI GRATUITO · GUÍA DE CLOUDFLARE PASO A PASO

☁ EL LABORATORIO DE PROXIES GRATUITOS DE MELGUÍA / OCTUBRE DE 2026 · EDICIÓN COMUNITARIA
NIVEL GRATUITO · WORKER AUTOALOJADO · MULTIMODELO TU PROPIO PROXY DE IA Cloudflare Workers AI × JanitorAI
Un Worker. Cinco modelos. No se necesita una suscripción mensual para el uso dentro de los límites gratuitos elegibles.
APTO PARA PRINCIPIANTESSIN GPU LOCAL10.000 NEURONAS / DÍACAMBIO DE MODELO¡Hai hai, a todos! 🌸 Hice esto para que puedas construir y entender tu propio proxy en lugar de depender del de otra persona.
ANTES DE EMPEZAR — QUÉ HACE ESTE TUTORIAL
Vamos a crear un Worker de Cloudflare gratuito, guardar tu token privado de Cloudflare en Secrets, añadir un proxy protegido compatible con OpenAI, elegir un modelo y conectarlo a JanitorAI. Las imágenes ilustran los pasos, y el script real del Worker se incluye abajo para que lo copies.

Es gratis dentro de la asignación diaria de la cuenta, no es ilimitado ni se garantiza que soporte todos los modelos en todas las cuentas. Nunca publiques tokens de API ni tu contraseña del proxy.
SECCIÓN 01 // MANUAL DE LA NUBE Lo que necesitas Tu lista de verificación de configuración
Una cuenta de Cloudflare gratuita
Crea una en dash.cloudflare.com. Tu Worker se ejecuta en línea; tu PC no tiene que estar encendido.
Una cuenta de JanitorAI
Usa un chat/personaje donde se admitan proxies personalizados.
Una contraseña privada segura
La creas tú mismo. Se convierte en la PROXY_KEY, que es independiente del token de API de Cloudflare.
Asignación gratuita: Actualmente, Cloudflare Workers AI documenta 10.000 neuronas gratuitas/día, con reinicio a las 00:00 UTC. Las longitudes de entrada/salida y la elección del modelo cambian el consumo. Al alcanzar el límite recibirás un error hasta que se reinicie la asignación o cambies de plan.
SECCIÓN 02 // MANUAL DE LA NUBE Despliega tu Worker de Cloudflare Crea el pequeño servidor que reenviará las solicitudes
CAPTURA 01 · PANEL DE CLOUDFLAREREFERENCIA VISUAL
Usa esta captura como orientación visual para el panel. Las etiquetas pueden cambiar con el tiempo.
Ve al panel de Cloudflare → Workers & Pages → Create. Crea un Worker con la plantilla inicial, nómbralo algo como janitor-free-proxy y pulsa Deploy.
CAPTURA 02 · CONFIGURACIÓN DEL WORKERREFERENCIA VISUAL
Sigue las indicaciones actuales de creación de Worker hasta que Cloudflare te dé una dirección *.workers.dev.
https://janitor-free-proxy.YOUR-SUBDOMAIN.workers.dev
SECCIÓN 03 // MANUAL DE LA NUBE Obtén tu token de Workers AI Este token es privado; nunca debe ir en JanitorAI
CAPTURA 03 · WORKERS AI / TOKENREFERENCIA VISUAL
Encuentra Workers AI y el área de REST API / creación de tokens en tu panel.
Abre AI → Workers AI y busca Use REST API o una acción de creación de token de API. Crea un token con acceso a Workers AI y copia tu Cloudflare Account ID.
REGLA DE SEGURIDAD
El token de API de Cloudflare es un secreto del servidor. NO lo pegues en JanitorAI, Discord ni en código público. JanitorAI solo recibirá una contraseña privada diferente (PROXY_KEY).
SECCIÓN 04 // MANUAL DE LA NUBE Añade 3 ajustes al Worker Un Cloudflare Account ID más dos Secrets
CAPTURA 04 · VARIABLES & SECRETSREFERENCIA VISUAL
Dentro de tu Worker, abre Settings → Variables and Secrets.
CLOUDFLARE_ACCOUNT_ID — Texto: tu ID de cuenta
CLOUDFLARE_API_TOKEN — Secreto: el token de Cloudflare
PROXY_KEY — Secreto: una contraseña fuerte y única que elijas tú
Guarda las variables y vuelve a desplegar si Cloudflare lo pide. No uses la contraseña de inicio de sesión de tu cuenta como PROXY_KEY.
Tus tres ajustes del Worker — nombres exactos CLOUDFLARE_ACCOUNT_ID · Texto · Tu Account ID, obtenido de tu propio panel de Cloudflare. No es el nombre ni la URL del Worker.
CLOUDFLARE_API_TOKEN · Secreto · El token de API de Workers AI que generaste en Cloudflare. Nunca lo pongas en el código público del Worker ni en el campo API Key de Janitor.
PROXY_KEY · Secreto · Una contraseña larga y única que creas tú mismo. Pegarás la MISMA contraseña en el campo API Key de Janitor.
SOLO ESTRUCTURA DE EJEMPLO (no son claves reales)
CLOUDFLARE_ACCOUNT_ID = [tu propio ID de cuenta]
CLOUDFLARE_API_TOKEN = [tu propio token de IA secreto]
PROXY_KEY = [tu propia contraseña aleatoria privada]
SECCIÓN 05 // MANUAL DE LA NUBE Pega el código completo del proxy Este es el código fuente real y funcional del Worker, no un marcador de posición
CAPTURA 05 · EDITOR DE CÓDIGO DEL WORKERREFERENCIA VISUAL
Haz clic en Edit code en tu Worker y reemplaza el código inicial.
Abre Edit code, elimina el código fuente inicial existente, pega el JavaScript completo de abajo y luego pulsa Deploy. El script admite /v1/chat/completions y /chat/completions, streaming, el modelo que elijas y una contraseña personal.
☁ Este script es el puente real — ¿qué hace? 1 · CORS + OPTIONS: permite que los clientes basados en navegador hagan la solicitud preflight de forma segura. 2 · Endpoints POST: acepta solicitudes en /v1/chat/completions o /chat/completions. 3 · Contraseña personal: compara la API Key que envía Janitor con tu secreto PROXY_KEY. Sin esto, cualquiera que descubra la URL podría consumir tu cuota gratuita. 4 · Conversación RP completa: conserva el array messages de Janitor en lugar de reducir tu historia al último mensaje. 5 · Selección de modelo: empieza con Gemma 4 pero también acepta los cinco IDs de modelo admitidos que se enumeran en este tutorial. El código original siempre forzaba Gemma; esta versión te permite cambiar desde el campo Model Name de Janitor. 6 · Streaming + ajustes: habilita el streaming y usa temperatura 0.9, top_p 0.95 y max_tokens 2048 solo si Janitor no ha proporcionado valores válidos. 7 · API de Cloudflare: usa tu Cloudflare Account ID y su token de API independiente para llamar a Workers AI. Tu token de Cloudflare nunca tiene que pegarse en Janitor. 8 · Paso directo: reenvía el flujo de respuesta de vuelta a Janitor sin reconstruir tokens o fragmentos individuales.
Copia el bloque COMPLETO de abajo en el editor de código del Worker de Cloudflare. No lo pegues en el campo URL del proxy de Janitor. No reemplaces nada dentro del script con tus secretos: añádelos en Settings → Variables and Secrets. Mantén sus nombres exactos, incluidos los guiones bajos. Después de pegar, pulsa Deploy.
</> SCRIPT COMPLETO DEL WORKER DE CLOUDFLARE — JAVASCRIPT · ABRIR / COPIAR ↓
// PROXY DE JANITORAI + CLOUDFLARE WORKERS AI // Adaptado del paso directo de streaming funcional de Mel. // PASO 1: Settings > Variables and Secrets // CLOUDFLARE_ACCOUNT_ID = tu propio Cloudflare Account ID (Texto) // CLOUDFLARE_API_TOKEN = tu propio token de API de Workers AI (Secreto) // PROXY_KEY = una contraseña fuerte que TÚ creas (Secreto) // PASO 2: pega este script COMPLETO en Edit code y haz Deploy. // PASO 3: en JanitorAI configura Proxy URL como: // https://YOUR-WORKER.YOUR-SUBDOMAIN.workers.dev/v1/chat/completions // y API Key con el MISMO valor que tu PROXY_KEY. const MODELS = new Set([ "@cf/google/gemma-4-26b-a4b-it", "@cf/zai-org/glm-4.7-flash", "@cf/qwen/qwen3-30b-a3b-fp8", "@cf/mistralai/mistral-small-3.1-24b-instruct", "@cf/meta/llama-3.3-70b-instruct-fp8-fast", ]); const DEFAULT_MODEL = "@cf/google/gemma-4-26b-a4b-it"; export default { async fetch(request, env) { const origin = request.headers.get("Origin") || "*"; const corsHeaders = { "Access-Control-Allow-Origin": origin, "Access-Control-Allow-Methods": "GET, POST, OPTIONS", "Access-Control-Allow-Headers": request.headers.get("Access-Control-Request-Headers") || "Content-Type, Authorization, X-API-Key", "Access-Control-Max-Age": "86400", "Vary": "Origin", }; const json = (data, status = 200) => Response.json(data, { status, headers: corsHeaders }); if (request.method === "OPTIONS") { return new Response(null, { status: 204, headers: corsHeaders }); } const path = new URL(request.url).pathname; if (request.method === "GET" && path === "/") { return json({ status: "ok", service: "Private Workers AI proxy" }); } if (request.method !== "POST" || (path !== "/v1/chat/completions" && path !== "/chat/completions")) { return json({ error: { message: "Not found" } }, 404); } // ADICIÓN IMPORTANTE: evita que extraños usen tu cuota. if (!env.PROXY_KEY || !env.CLOUDFLARE_ACCOUNT_ID || !env.CLOUDFLARE_API_TOKEN) { return json({ error: { message: "Missing Worker secrets" } }, 500); } const auth = request.headers.get("Authorization") || ""; const suppliedKey = auth.replace(/^Bearer\s+/i, "").trim() || request.headers.get("X-API-Key") || ""; if (suppliedKey !== env.PROXY_KEY) { return json({ error: { message: "Invalid PROXY_KEY" } }, 401); } try { const raw = await request.text(); if (raw.length > 500000) { return json({ error: { message: "Request too large" } }, 413); } const body = JSON.parse(raw); if (!Array.isArray(body.messages) || !body.messages.length) { return json({ error: { message: "Missing messages array" } }, 400); } // Conserva la conversación de Janitor. El original fijaba Gemma aquí: // body.model = "@cf/google/gemma-4-26b-a4b-it"; // Esta versión actualizada también admite cambiar modelos en Janitor. body.model = body.model || DEFAULT_MODEL; if (!MODELS.has(body.model)) { return json({ error: { message: "Model not in tutorial allowlist" } }, 400); } body.stream = true; // Conserva los ajustes de Janitor, con valores predeterminados razonables. if (typeof body.temperature !== "number") body.temperature = 0.9; if (typeof body.top_p !== "number" || body.top_p <= 0) body.top_p = 0.95; if (!body.max_tokens || body.max_tokens <= 0) body.max_tokens = 2048; const upstream = await fetch( `https://api.cloudflare.com/client/v4/accounts/${encodeURIComponent(env.CLOUDFLARE_ACCOUNT_ID)}/ai/v1/chat/completions`, { method: "POST", headers: { "Authorization": `Bearer ${env.CLOUDFLARE_API_TOKEN}`, "Content-Type": "application/json", "Accept": "text/event-stream", }, body: JSON.stringify(body), } ); // PASO DIRECTO: sin reconstruir el texto transmitido del modelo. if (!upstream.ok) { const errorText = await upstream.text(); return new Response(errorText, { status: upstream.status, headers: { ...corsHeaders, "Content-Type": upstream.headers.get("Content-Type") || "application/json", }, }); } return new Response(upstream.body, { status: upstream.status, headers: { ...corsHeaders, "Content-Type": upstream.headers.get("Content-Type") || "text/event-stream; charset=utf-8", "Cache-Control": "no-cache, no-transform", }, }); } catch (error) { return json({ error: { message: error?.message || String(error) } }, 500); } }, };
¿Por qué usar 3 ajustes?
El Cloudflare Account ID identifica tu cuenta; el Cloudflare API Token concede acceso a los modelos; PROXY_KEY impide que otras personas envíen solicitudes a través de la URL pública de tu Worker.
No esperes un jailbreak automático
Esto es un proxy de transporte, no un ajuste fino del modelo. Todas las políticas de los modelos y las restricciones de Cloudflare siguen aplicándose.
SECCIÓN 06 // MANUAL DE LA NUBE Elige uno de cinco modelos de IA IDs de modelo que puedes copiar en JanitorAI
CAPTURA 06 · MODELOS DE WORKERS AIREFERENCIA VISUAL
Usa las páginas de modelos de Cloudflare para comparar capacidades, elegibilidad actual y precios de uso.
MODELO 01 GEMMA 4 · EMPIEZA AQUÍ
@cf/google/gemma-4-26b-a4b-it
Narración general y una ventana de contexto amplia de 256K tokens. Un buen primer modelo para experimentar.
MODELO 02 GLM-4.7 FLASH · DIÁLOGO
@cf/zai-org/glm-4.7-flash
Opción multilingüe orientada al diálogo con una ventana de contexto de 131K.
MODELO 03 QWEN3 30B A3B · DETALLE
@cf/qwen/qwen3-30b-a3b-fp8
Seguimiento de instrucciones y escenas complejas. Contexto de 32K; el comportamiento de razonamiento puede afectar el uso de tokens.
MODELO 04 MISTRAL SMALL 3.1 · PROSA
@cf/mistralai/mistral-small-3.1-24b-instruct
Un estilo de escritura diferente para comparar en prosa creativa. Hasta 128K de contexto.
MODELO 05 LLAMA 3.3 70B · ALTERNATIVA
@cf/meta/llama-3.3-70b-instruct-fp8-fast
Un modelo más grande con una ventana de contexto de 24K, que puede usar la asignación gratuita relativamente rápido.
Estas son sugerencias para probar, no clasificaciones de roleplay verificadas. La disponibilidad y las restricciones de solo pago pueden variar. Si un modelo devuelve 403, revisa el acceso de Cloudflare y la elegibilidad del modelo en lugar de asumir que el proxy está roto.
SECCIÓN 07 // MANUAL DE LA NUBE Conecta el Worker a JanitorAI Usa la URL del Worker y PROXY_KEY — no tu token de API de Cloudflare
CAPTURA 07 · AJUSTES DEL PROXY DE JANITORAIREFERENCIA VISUAL
Abre los ajustes del chat de JanitorAI → Proxy → Añadir o configurar un proxy.
Nombre de la configuración
Cloudflare Free AI
Nombre del modelo
@cf/google/gemma-4-26b-a4b-it
URL del proxy
https://YOUR-WORKER.YOUR-SUBDOMAIN.workers.dev/v1/chat/completions
API Key
Tu secreto privado PROXY_KEY — NO el token de API de Cloudflare.
Guarda los ajustes, selecciona la configuración y envía un mensaje de prueba corto. Cuando funcione, las respuestas del modelo deberían volver desde Cloudflare a través de tu Worker. Si el proxy no conecta, revisa tanto los registros del Worker como los ajustes del chat de Janitor.
🔗 ¿Cómo debería verse realmente tu URL del proxy? LA URL REAL DE MEL — SOLO FORMATO DE EJEMPLO https://janitor-ai-proxy.melancholux.workers.dev/v1/chat/completions TU PROPIA URL — REEMPLAZA ESTA PARTE https://YOUR-WORKER.YOUR-SUBDOMAIN.workers.dev/v1/chat/completions Ejemplo: Cloudflare dice que la dirección de tu Worker es https://my-rp-proxy.abc123.workers.dev. Tu Proxy URL de Janitor es esa dirección exacta más /v1/chat/completions: https://my-rp-proxy.abc123.workers.dev/v1/chat/completions No uses la URL de Mel como la tuya. El dominio del Worker de tu cuenta será diferente. No escribas las palabras YOUR-WORKER literalmente, y no pegues tu token de API de Cloudflare en Janitor: usa PROXY_KEY en su campo API Key.
SECCIÓN 08 // MANUAL DE LA NUBE Cambia de modelo sin volver a desplegar Cinco modelos, un Worker, una asignación gratuita
CAPTURA 08 · COMPROBACIÓN FINAL / PRUEBAREFERENCIA VISUAL
Usa la captura final como referencia mientras verificas tu chat y el modelo elegido.
En JanitorAI, cambia solo Model Name a cualquiera de los IDs enumerados arriba. La URL del Worker y PROXY_KEY permanecen sin cambios. Puedes guardar configuraciones separadas por modelo, pero todas gastan la misma asignación de la cuenta.
De: @cf/google/gemma-4-26b-a4b-it A: @cf/zai-org/glm-4.7-flash
SECCIÓN 09 // MANUAL DE LA NUBE Ajustes de RP sugeridos Puntos de partida opcionales, no ajustes universalmente óptimos
Temperatura
0.8–1.0 para experimentar con más variedad; bájala si los personajes se desvían.
Top P
0.90–0.95 si el modelo seleccionado lo admite.
Tokens máximos de salida
1024–2048; las respuestas más cortas cuestan menos neuronas.
Streaming
Activado, si tanto tu interfaz actual de Janitor como el modelo elegido lo admiten.
Los historiales de conversación largos pueden consumir muchos tokens. Que un modelo admita un contexto enorme no significa que todo el contexto quepa en tu presupuesto gratuito diario.
SECCIÓN 10 // MANUAL DE LA NUBE FAQ & solución de problemas Lo que suele salir mal
¿Mi PC tiene que estar encendido? ↓
No. Tu Worker de Cloudflare se ejecuta en la infraestructura de Cloudflare.
¿Es ilimitado? ↓
No. La asignación gratuita actualmente cubre 10.000 neuronas al día en toda la cuenta.
¿Está garantizado el NSFW? ↓
No. El comportamiento de seguridad y moderación depende del modelo y de las políticas del servicio.
¿Pueden mis amigos usar mi proxy? ↓
No compartas tu PROXY_KEY a la ligera. Cualquiera con la URL y la clave podría consumir tu asignación.
401 Unauthorized ↓
La API Key de JanitorAI debe coincidir exactamente con PROXY_KEY.
403 Forbidden ↓
Revisa los permisos del token de Cloudflare, la elegibilidad del modelo y si se requiere un plan de pago.
404 Not Found ↓
Verifica de nuevo la URL de workers.dev y la ruta /v1/chat/completions.
400 Invalid model ↓
Comprueba que copiaste exactamente un ID de modelo admitido.
429 Too many requests ↓
Es posible que hayas agotado las neuronas gratuitas o alcanzado límites de capacidad temporales.
Las respuestas no aparecen ↓
Revisa el despliegue del Worker, los registros, tus secretos y los ajustes del chat/proxy; prueba con un prompt más corto.
¿Cambiar de modelo borra los chats? ↓
Cambiar el modelo seleccionado no elimina por sí mismo las conversaciones guardadas de Janitor. Cada modelo puede manejar el contexto disponible de forma diferente.
SECCIÓN 11 // MANUAL DE LA NUBE Palabras finales & recursos oficiales Hazlo tuyo — y mantén tus claves privadas
¡Y ahí lo tienes, queridos! 🌸
Un proxy personal, cinco modelos para comparar y un poco más de libertad para experimentar. Este tutorial no es un servicio premium gratuito ilimitado, solo una forma de aprender y explorar dentro de la asignación disponible.

Comparto esto porque crear cosas debería ser divertido, y sé que no todos pueden pagar modelos premium.
Mantente esponjoso. 🤍
Tutorial hecho por la comunidad por Melancholux. Sin afiliación con JanitorAI, Cloudflare ni ningún proveedor de modelos listado.
Las claves privadas nunca deben aparecer en una publicación pública.

Creado 25 oct

Actualizado 25 oct

Publicado 25 oct

Chats publicados