Capacidades de IA
Proveedores y qué funciones usan IA.
En esta página
La IA de BloomX es opcional y es un servicio por instancia: cada instancia la configura y la controla solo desde https://<tu-instancia>/admin/ai. Las extensiones la usan a través de un puente firmado de la propia instancia; el backend compartido ya no tiene clave de IA global. Sin IA el resto del correo funciona igual.
No hay compositor nativo con IA
BloomX no incluye un compositor con IA integrado. La única ayuda para redactar es la extensión core-composer-helper ("Asistente de redacción"), que usa este servicio como cualquier otra extensión y se bloquea igual si la IA está desactivada.
Configuración paso a paso#
- Entra como administrador (nivel ≥ 3 para editar; ver niveles) en
/admin/ai. - Elige el proveedor y el modelo; para Azure OpenAI y compatibles indica la URL base.
- Pega la clave del proveedor. Se guarda cifrada en reposo y es write-only: después solo verás "configurada ••••1234". Cambiar clave, proveedor o el kill switch exige nivel ≥ 4 con step-up.
- Activa las funciones que quieras:
composer,smart-reply,summarize,translate,organizeryother. - Ajusta límites (tokens de salida, caracteres de entrada, tope de temperatura, timeout), cuotas, guardarraíles y, si quieres estimar costes, los precios por modelo.
- Pulsa Probar (o
ai test) y, si todo va bien, activa la IA con el interruptor general.
Proveedores#
| Proveedor | Notas |
|---|---|
openai | API de OpenAI |
anthropic | API de Anthropic (Claude) |
google | Gemini |
azure-openai | Requiere URL base (tu recurso de Azure) |
openrouter | Pasarela a varios modelos |
compatible | Cualquier API compatible con OpenAI; requiere URL base propia |
cohere | API de Cohere |
Las URL base propias se validan contra SSRF: solo https, sin IP privadas, locales ni de metadatos de la nube. Puedes restringir los modelos permitidos y fijar, por extensión, un tope de tokens, un modelo o desactivarla.
Guardarraíles#
Cada guardarraíl tiene modo off, log (solo registra), warn (avisa) o enforce (bloquea o aplica).
| Guardarraíl | Qué hace |
|---|---|
Prefijo de system | Texto obligatorio que se antepone a toda instrucción de sistema |
| Redacción de datos sensibles | Antes de enviar al proveedor oculta tarjetas, IBAN, DNI/SSN y claves/JWT; emails y teléfonos son opcionales |
| Temas y regex bloqueados | Rechaza peticiones que coinciden (las expresiones regulares se comprueban como seguras) |
| Filtro de salida | Limita longitud y patrones de la respuesta |
| Política de cuerpo | full (todo), subject-only (nunca el cuerpo) o snippet (solo los primeros N caracteres) |
Cuotas, límites y costes#
- Cuotas por usuario y globales, en peticiones y tokens por día y por mes (
0= sin límite). Al agotarlas:quota_exceededconRetry-After. - Límites de petición: tokens de salida, caracteres de entrada, temperatura máxima y timeout. La temperatura pedida se recorta al tope.
- Con precios por modelo (entrada/salida por 1000 tokens)
/admin/aiyai usagemuestran una estimación de coste. - Retención de uso configurable (90 días por defecto): pasado el plazo se eliminan los registros.
Privacidad#
- Solo se guardan metadatos de uso: usuario, función, extensión, proveedor, modelo, tokens, ok/error y marcas de guardarraíl. Nunca se guardan prompts ni respuestas.
- La clave es cifrada y de solo escritura; los mensajes de error no incluyen contenido del usuario ni detalles del proveedor.
- El contenido que una función envía (tras la redacción y la política de cuerpo) sí llega al proveedor que elijas: elige uno acorde con tu política de datos.
Kill switch
Desactivar la IA en /admin/ai (o con ai disable) la corta para toda la instancia. El estado se cachea como máximo 30 s, así que el efecto es casi inmediato.
Bloqueo de extensiones#
Una extensión requiere IA si declara el permiso AI / AI_GENERATE, la categoría ai o un bloque ai en su manifest. Con la IA desactivada:
- En
/extensionsaparece como "Requiere IA · deshabilitada" y no se puede instalar ni activar. - Las ya activas quedan "pausadas: IA desactivada" y el backend rechaza sus llamadas con
ai_disabled. - Al reactivar la IA vuelven a funcionar sin reinstalar.
- Si el manifest declara
ai.required: false, la extensión degrada (funciona sin IA) en lugar de bloquearse; también se aplica por función (feature_disabled) y por extensión.
Migración desde variables de entorno#
AI_KEY, AI_PROVIDER y AI_MODEL quedan como respaldo heredado: solo se usan si no hay configuración guardada en `/admin/ai`, se muestra un aviso de migración y nunca se mezclan con la configuración de la interfaz.
# HEREDADO (solo respaldo): en el entorno de la instancia
AI_PROVIDER="openai"
AI_KEY="<clave-del-proveedor>"
AI_MODEL="gpt-4o-mini"- Abre
/admin/aien la instancia (el aviso "configuración heredada" confirma que sigues en el respaldo). - Introduce proveedor, modelo y clave y guarda: desde ese momento manda la configuración de la interfaz y el respaldo se ignora.
- Pulsa Probar (o
ai test) y revisa funciones, cuotas y guardarraíles (los valores por defecto son prudentes). - Elimina
AI_KEY,AI_PROVIDERyAI_MODEL(yOPENAI_API_KEYdel backend) del entorno y redespliega.
Durante la transición todo sigue funcionando con el respaldo. El backend compartido ya no usa una clave global: llamar a su services.ai directamente está DEPRECADO (aviso en logs) y solo se conserva por compatibilidad con instancias antiguas que aún no tienen el endpoint del puente; actualiza esas instancias y migra como arriba.
Errores tipados#
| Código | HTTP | Cuándo |
|---|---|---|
ai_disabled | 403 | La IA está desactivada en la instancia |
feature_disabled | 403 | La función (o la extensión) está desactivada por el administrador |
quota_exceeded | 429 | Se agotó una cuota de usuario o global |
guardrail_blocked | 422 | Un guardarraíl en modo enforce bloqueó la petición o la respuesta |
not_configured | 503 | Falta proveedor o clave |
provider_error | 502 | El proveedor falló o agotó el timeout |
schema_validation_failed | 422 | La respuesta no cumple el formato pedido |
invalid_args | 400 | Petición inválida |
Cada código trae un mensaje amable en es/en (AI_ERROR_MESSAGES) que nunca incluye contenido del usuario.
Niveles de permiso#
| Nivel | Puede |
|---|---|
| ≥ 1 | Ver configuración (sin la clave) y uso |
| ≥ 3 | Editar funciones, límites, cuotas, guardarraíles y precios |
| ≥ 4 + step-up | Clave, proveedor y kill switch |
CLI#
bloomx ai status # estado: activa, proveedor, modelo, origen de la configuración
bloomx ai enable | disable # kill switch (nivel 4 + step-up)
bloomx ai set # proveedor, modelo, funciones, límites, cuotas, guardarraíles
bloomx ai key set # clave del proveedor (write-only)
bloomx ai usage # uso agregado y coste estimado
bloomx ai test # petición de prueba al proveedorReferencia completa de opciones en CLI de administración.
Qué funciones usan IA#
| Función | Extensión | Notas |
|---|---|---|
| Organizer (clasificar y etiquetar) | organizer | IA opcional con degradación a heurística (Organizer) |
| Respuesta inteligente | smart-reply | Depende del contenido del correo abierto |
| Resumen | summarizer | Idem |
| Traducción | translator | Idem |
| Ayuda para redactar | core-composer-helper | La única ayuda de redacción; no hay compositor nativo con IA |
Las reglas, la búsqueda, Liquid/Elixir, Sealer y las citas no usan IA.