CreaRack-SL

Descripción

GoogleGenaiProvider es el proveedor de IA que conecta CreaRack Pro directamente con Google AI Studio Paid Tier usando el SDK oficial google-genai, sin intermediarios (sin OpenRouter). Hereda de AIProvider (base) e implementa el contrato analyze_incident para CNS Edge Intelligence.

Replica el «patrón ganador» establecido en Auto-Plan sesión 49 (blueprints/services/google_genai_driver.py), asegurando coherencia arquitectónica en toda la capa de IA del producto.

Fichero: monitoring/services/ai_providers/google_genai.py
App: monitoring
Registrado en factory: monitoring/services/ai_providers/__init__.py
Introducido en: PR#21 (2026-05-04)


Modelo

ParámetroValor
Modelo por defectogemma-4-26b-a4b-it
Configurable víaEDGE_AI_GOOGLE_GENAI_MODEL (env / settings.py)
API key reutilizadaGEMINI_API_KEY (ya configurada en Dokploy)
BillingGoogle AI Studio Paid Tier (cuenta Edu)

Regla 8 mantenida: modelo único Gemma 4 26B A4B. El modelo E4B fue descartado por no estar disponible en Google AI Studio actualmente (solo 26B-A4B y 31B Dense).


Sampling oficial Gemma 4

temperature = 1.0
top_p       = 0.95
top_k       = 64

Estos valores fueron validados empíricamente en la sesión 49 de Auto-Plan. Desviarse de ellos sin causa probada degrada la calidad de salida.

response_mime_type="application/json" es CRÍTICO — sin este parámetro la calidad de respuesta JSON cae notablemente (confirmado s49). No eliminarlo.


Clase GoogleGenaiProvider

Método principal: analyze_incident

async def analyze_incident(
    device_context: dict,
    snmp_data: dict,
    ssh_logs: str,
    anomaly_description: str,
) -> AIInsightResult

Usado por CNS Edge Intelligence para generar diagnósticos automáticos ante anomalías. Construye el prompt con USER_PROMPT_TEMPLATE + SYSTEM_PROMPT y devuelve AIInsightResult(diagnosis, recommendation).

Método interno: _call_genai

async def _call_genai(contents, system, response_json=False, max_tokens=2048) -> str

Implementa exponential backoff ante errores 429 / RESOURCE_EXHAUSTED:

ParámetroValor
MAX_RETRIES3
INITIAL_DELAY2.0 s
MAX_DELAY30.0 s
BACKOFF_MULTIPLIER2.0

Método interno: _parse_json

JSON repair para respuestas truncadas: cierra comillas abiertas, cierra llaves/corchetes pendientes. Paridad con gemini.py.


Helpers de módulo

acall_google_genai (async) — usado por Network Tutor

async def acall_google_genai(
    messages: list[dict] | None = None,
    *,
    prompt: str | None = None,
    system_instruction: str = "",
    temperature: float = 1.0,
    top_p: float = 0.95,
    top_k: int = 64,
    max_tokens: int = 2048,
    response_json: bool = False,
) -> str

Acepta mensajes chat OpenAI-style (messages) o un prompt suelto (prompt). Construye types.Content con roles user/model correctamente mapeados.

call_google_genai (sync) — usado por MIB Assistant

def call_google_genai(
    prompt: str,
    *,
    system_instruction: str = "",
    temperature: float = 1.0,
    top_p: float = 0.95,
    top_k: int = 64,
    max_tokens: int = 8192,
    response_json: bool = False,
) -> str

Versión síncrona para contextos no-async (MIB Assistant corre en worker Django). max_tokens por defecto sube a 8192 para acomodar clasificaciones MIB extensas.


Activación y configuración

# Activar google_genai provider (web + worker Dokploy)
EDGE_AI_PROVIDER=google_genai
EDGE_AI_GOOGLE_GENAI_MODEL=gemma-4-26b-a4b-it  # opcional, es el default

# Reversión rápida (~30s)
EDGE_AI_PROVIDER=openrouter

El default sigue siendo openrouter — el proveedor solo se activa explícitamente.

Reutiliza GEMINI_API_KEY — no requiere nueva variable de API key.


Diferencias vs GeminiProvider

AspectoGeminiProviderGoogleGenaiProvider
ModeloGemini Flash-LiteGemma 4 26B A4B
safety_settingsSíNo (Gemma open-weights no las soporta — devuelve 400)
response_mime_typeOpcionalObligatorio para JSON
SamplingPor defecto SDKExplícito (1.0/0.95/64)
Origen del patrónImplementación propiaValidado en Auto-Plan s49

Registro en factory

# monitoring/services/ai_providers/__init__.py
providers = {
    "openrouter": OpenRouterProvider,
    "google_genai": GoogleGenaiProvider,   # ← añadido PR#21
    "gemini": GeminiProvider,
    "claude": ClaudeProvider,
    "ollama": OllamaProvider,
    "static": StaticRulesProvider,
}

Véase también

  • [[feature—monitoring—edge-ai-google-genai-propagation]] — Feature que propaga este provider a CNS, Tutor y MIB Assistant (PR#21)
  • [[entity—monitoring—model—aiinsight]] — Modelo que almacena el resultado de analyze_incident
  • [[entity—monitoring—service—tutor-service]] — tutor_service.py que consume acall_google_genai
  • [[entity—network—service—mib-assistant]] — mib_assistant.py que consume call_google_genai
  • [[concept—monitoring—cns-edge-intelligence]] — CNS: el sistema de detección de anomalías que usa este provider