Discourse AI - Artefactos Web

¿Qué son los Artefactos de IA?

Los Artefactos de IA son herramientas potentes que permiten a los usuarios crear, incrustar e interactuar con componentes web dinámicos directamente dentro de una publicación de Discourse. Estos componentes pueden contener HTML, CSS y JavaScript personalizados, lo que habilita una variedad de casos de uso como:

  • Incrustar cuestionarios o formularios interactivos.
  • Visualizar datos con gráficos y animaciones enriquecidas.
  • Integrar aplicaciones o herramientas web ligeras.
  • Una herramienta para aprender sobre frameworks web, bibliotecas de JavaScript y más.

Los Artefactos de IA mejoran sin problemas las publicaciones de Discourse al agregar interactividad y al tiempo que garantizan una experiencia de navegación segura.


Ajustes del Sitio

Los administradores pueden configurar varios ajustes:

1. Habilitación de la Función

  • Ajuste: discourse_ai_enabled
    • Asegúrese de que este ajuste global esté habilitado para que los Artefactos de IA funcionen.

2. Modos de Seguridad

  • Ajuste: ai_artifact_security
    • Opciones:
      • disabled: Deshabilita el sistema de artefactos
      • lax: Los artefactos aparecen automáticamente en las publicaciones sin requerir interacción del usuario.
      • hybrid: Los artefactos requieren un clic para ejecutarse por defecto, pero los autores de las publicaciones pueden agregar data-ai-artifact-autorun a la marca de inserción para hacer que artefactos específicos se ejecuten de inmediato.
      • strict: Los usuarios deben activar explícitamente los artefactos en su navegador haciendo clic en un botón de “Ver” o “Ejecutar”. Este ajuste se recomienda para entornos con conciencia de seguridad. (predeterminado)

3. Acceso al Creador de Artefactos

  • Por defecto, la persona del Creador de Artefactos está restringida solo a usuarios del staff. Esta restricción asegura que solo personas de confianza puedan crear artefactos, minimizando el riesgo de uso inadecuado o malicioso.
  • Si se requiere un acceso más amplio, un administrador del sitio debe configurar manualmente los permisos.

Uso de Artefactos de IA en Publicaciones

Los Artefactos son creados automáticamente por la persona del Creador de Artefactos cuando se solicitan.

<div class="ai-artifact" data-ai-artifact-version="3" data-ai-artifact-id="71"></div>

El artefacto anterior fue generado usando GPT-4o y la biblioteca anime.js

Una vez creados, son privados para usted y la persona del Creador de Artefactos. Los usuarios que pueden compartir conversaciones de IA (aquellos que pertenecen a los grupos ai bot public sharing allowed) también pueden hacer público un artefacto compartiendo la conversación.

Una vez compartido, puede usar la siguiente marca de inserción HTML para renderizarlo en una publicación:

'<div class="ai-artifact" data-ai-artifact-version="3" data-ai-artifact-id="71"></div>'

(donde la versión y el ID del artefacto son su artefacto versionado)

Consideraciones de Seguridad

Dado que los Artefactos de IA pueden ejecutar HTML, CSS y JavaScript escritos a medida, Discourse ha implementado salvaguardas robustas:

1. Sandboxing en iFrames

  • Los artefactos se renderizan dentro de contenedores iframe aislados con atributos sandbox para restringir operaciones potencialmente inseguras como:
    • Cross-site scripting (scripting entre sitios).
    • Acceso a sitios o API externas.

2. Política de Seguridad de Contenido (CSP)

3. Modo de Seguridad

  • Modo Estricto: Se recomienda para entornos donde los artefactos no son completamente confiables. Los usuarios deberán activar manualmente los artefactos en su navegador antes de que se rendericen.

4. Acceso y Permisos

  • Los artefactos solo son visibles para:
    • Su creador.
    • Usuarios con los permisos correctos para ver la publicación asociada (por ejemplo, mensajes privados).
  • Los artefactos públicos deben marcarse explícitamente como tales compartiendo la conversación de IA.

5. Límites de Longitud

  • El tamaño de HTML, CSS y JavaScript en un artefacto está limitado a 64 KB cada uno. Esto asegura que los componentes sigan siendo ligeros y no agobien a los usuarios o sistemas.

Almacenamiento de Artefactos

Los artefactos web pueden opcionalmente almacenar datos por usuario. Para hacerlo, indique al creador del artefacto que use “usar almacenamiento de usuario” o algo similar.

Este sistema permite almacenar pares clave-valor:

  • Privados (solo visibles para administradores y usuarios específicos)
  • Públicos (visibles para todos los usuarios, incluidos los anónimos)

Los pares clave-valor están asegurados contra la publicación de la que se originó el artefacto, sin embargo, si comparte un artefacto públicamente, a todos se les permitirá agregar claves.

Para controlar el almacenamiento puede usar los ajustes ocultos:

  • ai_artifact_kv_value_max_length (los elementos predeterminados pueden tener solo 5000 caracteres o menos)
  • ai_artifact_max_keys_per_user_per_artifact (predeterminado 100)

Preguntas Frecuentes

¿Quién puede crear Artefactos de IA?

Por defecto, solo los usuarios del staff (por ejemplo, administradores o moderadores) pueden crear artefactos a través de la Persona del Creador de Artefactos. Esta persona simplifica el proceso de diseño de widgets web interactivos usando HTML, CSS y JavaScript.

¿Qué sucede si hago clic en un Artefacto?

  • En modo lax, los artefactos aparecen automáticamente.
  • En modo hybrid, los artefactos requieren un clic por defecto, pero pueden ejecutarse automáticamente si la inserción incluye data-ai-artifact-autorun.
  • En modo strict, hacer clic en el botón “Ejecutar” activa el artefacto y permite que se cargue en su navegador.

¿Son seguros los Artefactos de IA?

Sí. Los Artefactos de IA se ejecutan en entornos estrictamente controlados:

  • Están en sandbox y no pueden interactuar directamente con la aplicación Discourse o el contexto del usuario, solo a través de mensajes iframe.
  • El modo estricto le da control sobre la activación.
  • Los artefactos son privados por defecto; necesita compartirlos activamente para dar acceso global.

¿Puedo ver el código fuente de los Artefactos?

Sí. Cuando Discourse AI genera artefactos, incluirá la marca, css y JavaScript completos.

¿Qué LLMs son compatibles?

Los Artefactos pueden ser generados usando cualquier LLM que haya configurado, sin embargo, varios LLMs se especializan y están más ajustados para la creación de artefactos.

Hemos visto buenos resultados con o3, Anthropic Claude Sonnet 3.7 - 4.0, GPT-4.1, Gemini Pro 2.5 y más. Generalmente, los modelos más avanzados lo harán mejor.

Hay un gran componente de prueba y error con la creación de artefactos, la experimentación es clave.

23 Me gusta

Sería genial tener un control un poco más granular sobre la privacidad de los artefactos para que puedan compartirse solo con ciertos grupos. Muy similar a cómo funcionan actualmente los permisos de categoría :smiley:

Creo que si añades el grupo al mensaje privado del bot, ¿podría funcionar?

1 me gusta

Voy a probarlo y reportaré aquí. Tengo un caso de uso específico que requiere que los artefactos sean accesibles solo para un grupo en una categoría privada.

1 me gusta

Así que etiqueté al bot Web Artifact Creator en un nuevo tema en una categoría privada a la que el grupo tiene acceso para que pueda crear un artefacto visible solo para mí y para ese grupo en particular. Sin embargo, la ventana del iframe del artefacto solo muestra el “¡Uy! Esa página no existe o es privada.” predeterminado que aparece cuando un usuario no tiene acceso a una página en particular.

Así que hice una consulta al explorador de datos para verificar quién podía ver ese tema y los usuarios de ese grupo que deberían poder ver el artefacto se muestran de hecho como capaces de verlo según la base de datos.

¿Así que quizás esto sea un error?

Mi consulta SQL
-- [params]
-- int :artifact_id = 22

WITH artifact_info AS (
  SELECT 
    a.id,
    a.user_id as creator_id,
    a.post_id,
    p.topic_id,
    t.category_id,
    t.archetype,
    c.read_restricted,
    t.title as topic_title
  FROM ai_artifacts a
  LEFT JOIN posts p ON a.post_id = p.id
  LEFT JOIN topics t ON p.topic_id = t.id
  LEFT JOIN categories c ON t.category_id = c.id
  WHERE a.id = :artifact_id
),
users_with_access AS (
  -- El creador siempre tiene acceso
  SELECT 
    ai.creator_id as user_id,
    'Acceso del Creador' as access_reason
  FROM artifact_info ai
  
  UNION
  
  -- Usuarios con acceso a mensajes privados
  SELECT 
    tau.user_id,
    'Acceso a Mensaje Privado' as access_reason
  FROM artifact_info ai
  JOIN topic_allowed_users tau ON ai.topic_id = tau.topic_id
  WHERE ai.archetype = 'private_message'
  
  UNION
  
  -- Miembros del grupo con acceso a mensajes privados
  SELECT 
    gu.user_id,
    'Acceso a Mensaje Privado de Grupo' as access_reason
  FROM artifact_info ai
  JOIN topic_allowed_groups tag ON ai.topic_id = tag.topic_id
  JOIN group_users gu ON tag.group_id = gu.group_id
  WHERE ai.archetype = 'private_message'
  
  UNION
  
  -- Usuarios con acceso a categorías restringidas
  SELECT 
    gu.user_id,
    'Acceso a Categoría de Grupo' as access_reason
  FROM artifact_info ai
  JOIN category_groups cg ON ai.category_id = cg.category_id
  JOIN group_users gu ON cg.group_id = gu.group_id
  WHERE ai.read_restricted = true
    AND ai.archetype != 'private_message'
    AND cg.permission_type IN (1, 2) -- acceso completo o crear/responder/ver
  
  UNION
  
  -- Todos los usuarios si el tema es público (no restringido y no mensaje privado)
  SELECT 
    u.id as user_id,
    'Acceso Público' as access_reason
  FROM artifact_info ai
  CROSS JOIN users u
  WHERE (ai.read_restricted = false OR ai.read_restricted IS NULL)
    AND (ai.archetype != 'private_message' OR ai.archetype IS NULL)
    AND u.active = true
)

SELECT 
  u.id as user_id,
  u.username,
  u.name,
  u.trust_level,
  uwa.access_reason,
  ai.topic_title
FROM users_with_access uwa
JOIN users u ON uwa.user_id = u.id
CROSS JOIN artifact_info ai
WHERE u.active = true
ORDER BY u.username