Product Craft Bible
AI Interface
Inicio Avanzado AI Interface
Avanzado

AI Interface

8 reglas chrome developers · mdnchrome developers . nngroupnngroup . apple hignngroup . chrome developers
113

AI Interface

8 reglas
1020

Streaming texto: renderizar markdown seguro

El texto generado por LLM llega en tokens, nunca esperar el texto completo para renderizar. Usar un parser de markdown incremental (marked.js, micromark) con DOMPurify para sanitizar antes de insertar en el DOM. El rendering parcial debe ser estable: no hacer re-layout en cada token, acumular en un buffer de ~50ms antes de actualizar el DOM.

chrome developers · mdn
Preferir
stream.js
// Acumular chunks en buffer
let buffer = "";
let timer = null;

source.on("chunk", (chunk) => {
  buffer += chunk;
  if (!timer) {
    timer = setTimeout(() => {
      el.innerHTML = DOMPurify.sanitize(
        marked.parse(buffer)
      );
      timer = null;
    }, 50);
  }
});
Evitar
stream.js
// XSS: el LLM puede generar HTML malicioso
source.on("chunk", (chunk) => {
  el.innerHTML = chunk;
});

// Si el modelo devuelve <img onerror="...">
// se ejecuta JS arbitrario en el cliente
1021

Estados de carga LLM: typing indicator + stop

Las llamadas a LLM pueden tardar 10-30 segundos. El typing indicator (tres puntos animados) comunica que el modelo esta procesando sin implicar que ya hay texto. Siempre ofrecer un botón "Detener generación" activo durante el streaming, el usuario puede ver que la respuesta va en la dirección equivocada y querer interrumpirla. El botón desaparece cuando la generación termina.

chrome developers . nngroup
Preferir
Analiza los datos de ventas del Q3...
Las ventas del Q3 muestran un crecimiento del 12% respecto al trimestre anterior, impulsado principalmente por...
Evitar
Analiza los datos de ventas del Q3...
Cargando...
1022

Indicadores de confianza y limitaciones

Un LLM puede alucinar. La interfaz debe comunicar activamente las limitaciones del modelo: fecha de corte de conocimiento, posibilidad de errores en datos factuales, y que no reemplaza consejo profesional en contextos medicos, legales o financieros. Esto no es disclaimer legal, es diseño honesto que mantiene la confianza del usuario a largo plazo.

nngroup . apple hig
Preferir
Confianza: Alta
La capital de Australia es Canberra, no Sidney.[1] Fue designada en 1913 como compromiso entre Sidney y Melbourne.[2]
Evitar
La capital de Australia es Sidney. Fue fundada en 1788 y es la ciudad más grande del pais, por lo que fue designada capital nacional.
Respuesta presentada como verdad absoluta, sin disclaimer, sin indicador de confianza. El usuario la toma como dato verificado.
1023

Citas y fuentes: cards expandibles

Cuando el modelo cita una fuente, mostrarla como un chip/badge inline con número de referencia. Al hacer clic, expandir una card con: título de la fuente, fragmento relevante, URL si aplica, y fecha. No listar todas las fuentes al final del texto como footnotes, el usuario no correlaciona el número con el contexto. La cita debe estar anclada al párrafo donde es relevante.

nngroup . chrome developers
Preferir
El uso de LLMs en producción crece un 340% anual 1. Los casos de uso empresariales son los más rentables 2 3.
gartner.com
AI LLM Adoption Report 2024 "El mercado de soluciones basadas en LLMs crece a una CAGR del 340% en despliegues empresariales..." Ver más
mckinsey.com
Global Survey: AI in Enterprise Q3 2024 "Los casos de uso empresariales representan el 72% del ROI positivo en adopción de IA generativa..." Ver más
hbr.org
Enterprise AI: The Business Case "Las organizaciones con estrategia de IA definida superan en 2.4x a sus competidores..." Ver más
Evitar
El uso de LLMs en producción crece un 340% anual. Puedes leer más aquí: https://www.gartner.com/en/articles/ai-llm-adoption-report-2024-enterprise-deployment-statistics-page34. Los casos de uso empresariales son los más rentables según este reporte: https://www.mckinsey.com/capabilities/quantumblack/our-insights/global-survey-ai-enterprise-q3-2024-full-results.
URLs largas rompen el flujo de lectura, sin preview ni contexto de calidad de la fuente
1024

Input de prompt: textarea expandible + archivos

El input de chat debe crecer verticalmente con el contenido (1 línea inicial, máximo 8-10 líneas antes de scroll interno). Soportar drag & drop de archivos, paste de imagenes y atajos de teclado: Enter para enviar, Shift+Enter para nueva línea, Flecha arriba para editar mensaje anterior. El contador de tokens debe mostrarse cuando el usuario se acerque al límite del modelo.

nngroup . apple hig
Preferir
documento.pdf imagen.png
Evitar
Un prompt técnico de 10 líneas no cabe en este input, el usuario escribe a ciegas sin ver el contexto completo.
1025

Acciones inline de IA

Cuando la IA genera una respuesta con elementos accionables, los botones de acción deben aparecer inline junto al contenido relevante, no fuera de contexto. El usuario no debería copiar texto, cambiar de pantalla ni buscar donde aplicar la sugerencia. Cada botón ejecuta la acción en un clic, con icono contextual que refuerza la intención. El patrón reduce fricción y convierte sugerencias pasivas en acciones inmediatas.

notion · apple hig · nngroup
Preferir
Asistente IA
He analizado tu proyecto. Deberias actualizar el archivo de configuración para incluir las nuevas variables de entorno.
También seria bueno revisar los permisos de acceso.
Botones inline junto a cada sugerencia, con icono contextual. Un clic ejecuta la acción sin cambiar de pantalla
Evitar
Asistente IA
He analizado tu proyecto. Deberias actualizar el archivo de configuración para incluir las nuevas variables de entorno. También seria bueno crear una tarea en el backlog para revisar los permisos de acceso.
La IA sugiere acciones pero el usuario debe copiar, cambiar de contexto y ejecutar manualmente cada paso
1026

Human-in-the-loop: aprobar antes de ejecutar

Las acciones con consecuencias irreversibles (enviar email, eliminar datos, publicar contenido, hacer una compra) deben requerir confirmación explicita del usuario aunque sean generadas por IA. Mostrar una preview de la acción completa antes de ejecutar: "El agente enviara este email a carlos@empresa.com. Revisar y aprobar". El modelo propone, el humano decide.

nngroup · apple hig
Preferir
"Elimina los registros viejos de enero a marzo"
Voy a eliminar 47 registros del periodo Enero-Marzo
Esta acción no se puede deshacer.
-clientes_leads (23 filas)
-historial_contacto (18 filas)
-notas_internas (6 filas)
Evitar
"Elimina los registros viejos de enero a marzo"
Se eliminaron 47 registros.
La IA ejecuto la eliminación sin confirmación. No hay forma de deshacer.
1027

Errores de IA: conservar input del usuario

Cuando una llamada al LLM falla (timeout, rate limit, error de red), conservar el mensaje del usuario en el input y mostrar el error con opción de reintentar. Nunca limpiar el input al fallar. El mensaje de error debe distinguir entre "el modelo no pudo responder" y "tu solicitud fue bloqueada por contenido", las acciones correctivas son distintas en cada caso.

nngroup, chrome developers
Preferir
No se pudo generar la respuesta
Tiempo de espera agotado. Tu mensaje se conservo, haz clic en Reintentar.
Error descriptivo con causa, input conservado intacto, botón Reintentar inmediato, el usuario no pierde su trabajo
Evitar
Error al generar respuesta. Intenta de nuevo.
El usuario tenia un prompt de 200 palabras, ahora tiene que reescribirlo desde cero
Input limpio tras el error, el usuario pierde su mensaje y debe reescribir desde cero