Volver a la wiki

Worker oracle-keepwarm · Cloudflare Cron (Oráculo)

Descripción

oracle-keepwarm es un Worker de Cloudflare que ejecuta periódicamente (cada 15 minutos, UTC) un ping mínimo al modelo Gemma 4 (gemma-4-26b-a4b-it) de Google AI Studio.

Problema que resuelve: el modelo de Gemma 4 en AI Studio se enfría tras inactividad; la primera consulta del día al Oráculo pegaba un cold start > 80 segundos, causando timeout (2 intentos × 40s) y error “AI Studio timeout” hacia el usuario. El diagnóstico s92 confirmó que la cadena modelo + key + prompt estaban sanas — era exclusivamente un problema de provisión tardia del modelo.

Solución: mantener el modelo “caliente” mediante pings triviales cada 15 minutos, de modo que la primera consulta real responda en ~7-10 segundos como las demás.

Lógica y Configuración

Handler

Ping al Modelo

Cada disparo realiza un POST a https://generativelanguage.googleapis.com/v1beta/models/gemma-4-26b-a4b-it:generateContent:

{
  contents: [{ role: 'user', parts: [{ text: 'ping' }] }],
  generationConfig: {
    temperature: 0,
    maxOutputTokens: 8  // Mínimo: solo provisión, sin latencia útil
  }
}

Credencial

Costes

Logs y Monitoreo

Seguimiento de Eficacia (s92)

Condición de éxito: desde el 29-05-2026, la primera consulta del día al Oráculo responde en ~7-10 segundos, sin error “AI Studio timeout”.

Ruta de ajuste (si la cadencia 15min no basta):

  1. El modelo podría enfriarse antes de 15 minutos → bajar a */10 o */5
  2. Editar workers/oracle-keepwarm/wrangler.toml → campo crons
  3. Redeploy: wrangler deploy -c ./workers/oracle-keepwarm/wrangler.toml

Métricas: ver anotación en NEXT.md, sección “Seguimientos con fecha/condición”.

Estructura de Archivos

workers/oracle-keepwarm/
├── src/
│   └── index.ts              # Handler scheduled + lógica del ping
├── wrangler.toml             # Config Wrangler (cron, env, secretos)
└── package.json              # Deps (fetch, JSON parsing)

src/index.ts (~60 LOC)

wrangler.toml (~30 LOC)

name = "oracle-keepwarm"
main = "src/index.ts"
compatibility_date = "2026-04-01"
compatibility_flags = ["nodejs_compat"]

[triggers]
crons = ["*/15 * * * *"]  # Cada 15 min, UTC

[observability]
enabled = true

Relación con el Oráculo

Historial

Próximos Pasos

  1. Monitorear 1ª consulta diaria (desde 29-05): ¿responde en ~7-10s sin timeout?
  2. Si sigue lento/fallando: bajar cadencia a */10 o */5 (ver “Ruta de ajuste”)
  3. Revisar factura Gemini (junio) para validar coste $0 o mínimo

Véase también

Subir