Driver google-genai para Auto-Plan (Gemma 4 directo, Google AI Studio)
Descripción
blueprints/services/google_genai_driver.py es el driver que conecta Auto-Plan con Gemma 4 directo via el SDK oficial google-genai y Google AI Studio Paid Tier. Introducido en PR#14 (s49) como alternativa al driver OpenRouter ya existente (openrouter_driver.py).
Implementa el mismo contrato que openrouter_driver.py: función pública analyze_blueprint(api_key, file_path, prompt) -> dict, devolviendo el JSON canónico de Auto-Plan con claves racks, connections, walls, texts, symbols.
Punto de entrada
# blueprints/services/google_genai_driver.py
def analyze_blueprint(api_key: str, file_path: str, prompt: str) -> dict[str, Any]:
...
Invocado desde AutoPlanService._analyze_with_gemma4() en blueprints/services/autoplan.py, que a su vez es llamado por el dispatcher central analyze_blueprint_image() cuando provider == "google_genai".
Configuración (env vars)
| Variable | Default | Descripción |
|---|---|---|
GEMMA4_GENAI_MODEL | gemma-4-26b-a4b-it | Modelo a usar. Alternativa: gemma-4-31b-it (Dense, plan B s49) |
GEMMA4_GENAI_SEED | (no set) | Seed para reproducibilidad disparo a disparo (igual que OPENROUTER_SEED) |
GEMMA4_GENAI_MAX_IMAGE_DIMENSION | 2048 | Máxima dimensión de imagen antes de resize |
GEMMA4_GENAI_JPEG_QUALITY | 95 | Calidad JPEG al recodificar la imagen |
GEMINI_API_KEY | — | Obligatoria. Google AI Studio acepta la misma key para Gemini y Gemma 4 (billing Paid Tier vinculado) |
Todas las vars están registradas en config/settings/base.py.
Sampling (Gemma 4 oficial)
Los parámetros de sampling están fijados a los valores oficiales de Gemma 4 y no son sobreescribibles por env:
temperature = 1.0
top_p = 0.95
top_k = 64
max_output_tokens = 16384
response_mime_type = "application/json"
⚠️
safety_settingsNO se envían. Gemma open-weights rechaza la llamada si se incluyen.
Pipeline de imagen
- Abrir imagen con Pillow.
- Resize si
max(w, h) > GEMMA4_GENAI_MAX_IMAGE_DIMENSION(ratio preservado, LANCZOS). - Convertir a RGB (aplana transparencias con fondo blanco).
- Recodificar a JPEG con
GEMMA4_GENAI_JPEG_QUALITY. - Enviar como
types.Part.from_bytes(mime_type="image/jpeg").
Retry logic
Reintentos automáticos (máx 3) con backoff lineal (10s × intento) ante:
- HTTP 503 / 504
deadline/timeoutoverload/unavailable
json.JSONDecodeError no se reintenta — se relanza inmediatamente con contexto de posición para diagnóstico.
Activación
El driver no se activa por defecto. Requiere:
AUTOPLAN_PROVIDER=google_genai # en .env / Dokploy
GEMINI_API_KEY=<tu-key>
El default de AUTOPLAN_PROVIDER sigue siendo openrouter (Regla 8 de CLAUDE.md).
Historial de sesiones
- s49 — Primer test A/B: baseline s48 con OpenRouter (100% calidad, 68/68, 2:09 min, $0). Pendiente comparar resultados directos.
- Modelo plan B documentado:
gemma-4-31b-itDense sigemma-4-26b-a4b-itfalla.
Véase también
- [[feature—autoplan—provider-google-genai]] — Feature completa del proveedor google_genai en Auto-Plan (activación, test plan, decisión pendiente)
- [[entity—blueprints—model—blueprint]] — Modelo Blueprint al que pertenecen los planos procesados
- [[entity—blueprints—model—aiprompt]] — Modelo AIPrompt que gestiona los prompts enviados al driver
Referenciado desde
- ADR — Retirada de OpenRouter: stack IA 100% google-genai (v1.0.72 · s55)
- ADR — Retirada del provider 'gemini' legacy de Auto-Plan (Plan Hardening Hito F · GAP #5)
- Auto-Plan: proveedor google_genai (Gemma 4 directo via Google AI Studio)
- Feature: AutoPlan — Provider google_genai (Gemma 4 directo, Google AI Studio Paid)
- Help Widget · Informante del estado (s56)