Simulación de un sistema operativo neural con Gemini 2.5 Flash-Lite

25 DE JUNIO DE 2025
D Shin Senior Staff Software Engineer
Ali Eslami Research Scientist
Madhavi Sewak Technical Director

En la informática tradicional, las interfaces de usuario están predefinidas. Los desarrolladores codifican meticulosamente cada botón, menú y ventana. Pero ¿y si se pudiera generar una interfaz en tiempo real, que se adapte al contexto de un usuario con cada interacción? Exploramos esta pregunta construyendo un prototipo de investigación (ver app de demostración en Google AI Studio) para una experiencia de computadora generativa e infinita.

Nuestro prototipo simula un sistema operativo en el que cada pantalla se genera sobre la marcha a través de un modelo de lenguaje grande. Utiliza Gemini 2.5 Flash-Lite, un modelo cuya baja latencia es fundamental para crear una interacción receptiva que se sienta instantánea. En lugar de navegar por un sistema de archivos estático, el usuario interactúa con un entorno que el modelo construye y reconstruye con cada clic. Esta publicación describe los conceptos técnicos básicos detrás de este prototipo.

Acondicionamiento del modelo para la generación de IU sobre la marcha

Para generar una interfaz de usuario sobre la marcha, debemos proporcionar al modelo una estructura y un contexto claros para cada solicitud. Diseñamos nuestra indicación dividiendo la entrada del modelo en dos partes: una "constitución de la IU" y una "interacción de la IU".

La constitución de la IU es una indicación del sistema que contiene un conjunto fijo de reglas para la generación de la interfaz de usuario. Estas reglas definen elementos coherentes, como el estilo en el nivel del sistema operativo, el formato de la pantalla de inicio y la lógica para insertar elementos, como mapas.

La interacción de la IU es un objeto JSON que captura la acción más reciente del usuario, como hacer clic con el mouse en un ícono. Este objeto sirve como la consulta específica que solicita al modelo que genere la siguiente pantalla. Por ejemplo, hacer clic en el ícono "Guardar nota" dentro de la aplicación Notepad puede generar un objeto como el siguiente:

{
  // `id`: El ID único del atributo `data-interaction-id` del botón.
  id: 'save_note_action',
 
  // `type`: El tipo de interacción de `data-interaction-type`.
  type: 'button_press',
 
  // `value`: Debido a que el botón tiene un atributo `data-value-from`, el sistema 
  // obtiene el contenido del área de texto con el ID 'notepad_main_textarea'.
  value: 'Meeting notes\n- Discuss Q3 roadmap\n- Finalize budget',
 
  // `elementType`: La etiqueta HTML del elemento en el que se hizo clic.
  elementType: 'button',
 
  // `elementText`: El texto visible dentro del botón.
  elementText: 'Save Note',
 
  // `appContext`: El ID de la aplicación en la que se encuentra el usuario.
  // Proviene del estado `activeApp` en `App.tsx`.
  appContext: 'notepad_app'
}
JSON

Este enfoque de configuración de contexto de dos partes permite que el modelo mantenga una apariencia y estilo constantes al tiempo que genera pantallas novedosas basadas en entradas de usuario específicas en tiempo real.


Uso del rastreo de interacciones para la conciencia contextual

Una sola interacción proporciona un contexto inmediato, pero una secuencia de interacciones cuenta una historia más rica. Nuestro prototipo puede usar un rastro de las N interacciones pasadas para generar una pantalla más relevante contextualmente. Por ejemplo, el contenido generado dentro de una aplicación de calculadora podría diferir dependiendo de si el usuario visitó previamente un carrito de compras o una aplicación de reserva de viajes. Al ajustar la longitud de esta traza de interacción, podemos ajustar el equilibrio entre la precisión contextual y la variabilidad de la IU.


Transmisión de la IU para una experiencia receptiva

Para que el sistema sea rápido, no podemos esperar a que el modelo genere toda la pantalla de la IU antes de renderizar. Nuestro prototipo aprovecha la transmisión de modelos y el analizador nativo del navegador para implementar la representación progresiva. A medida que el modelo genera código HTML en fragmentos, lo agregamos continuamente al estado de nuestro componente. React luego vuelve a renderizar el contenido, permitiendo que el navegador muestre elementos HTML válidos tan pronto como se reciban. Para el usuario, esto crea la experiencia de una interfaz que se materializa en la pantalla casi al instante.


Cómo lograr el estado con un gráfico de IU generativa

De forma predeterminada, nuestro modelo genera una nueva pantalla desde cero con cada entrada de usuario. Esto significa que visitar la misma carpeta dos veces podría producir contenidos completamente diferentes. Es posible que no siempre se prefiera esta experiencia no determinista y sin estado, dado que la GUI a la que estamos acostumbrados es estática. Para introducir el estado en nuestro prototipo, nuestro sistema de demostración tiene la opción de crear una caché en memoria para modelar un gráfico de IU específico de la sesión. Cuando un usuario navega a una pantalla que ya se generó, el sistema muestra la versión almacenada desde el gráfico, sin volver a consultar a Gemini. Cuando el usuario solicita una nueva pantalla que no está en caché, el gráfico de IU crece de forma incremental. Este método proporciona un estado sin comprometer la calidad de la salida generativa, lo que puede ser un efecto secundario de simplemente bajar la temperatura de muestreo del modelo.


Aplicaciones potenciales para la IU generativa justo a tiempo

Si bien este es un prototipo conceptual, el marco subyacente podría aplicarse a casos de uso más prácticos.

  • Combinaciones de teclas contextuales: un sistema podría observar los patrones de interacción de un usuario y generar un panel de interfaz de usuario efímero para acelerar su tarea. Por ejemplo, como el usuario está comparando vuelos en varios sitios web, un widget flotante podría aparecer justo a tiempo con botones generados dinámicamente para comparar precios o reservar un vuelo directamente, ahorrando al usuario varios pasos.

  • "Modo generativo" en aplicaciones existentes: los desarrolladores podrían agregar un "modo generativo" a sus aplicaciones. En Calendario de Google, por ejemplo, un usuario podría activar este modo para ver las IU justo a tiempo. Al mover una invitación de calendario, en lugar de un diálogo estándar, el sistema podría generar una pantalla que presente los mejores horarios alternativos como una serie de botones seleccionables directamente en función de los horarios de los asistentes. Esto crearía una experiencia híbrida en la que los elementos de la interfaz de usuario generativa y estática coexistirían a la perfección en una sola aplicación.


Explorar conceptos novedosos como este nos ayuda a comprender cómo están evolucionando los nuevos paradigmas para la interacción persona-computadora. A medida que los modelos continúan siendo más rápidos y capaces, creemos que las interfaces generativas representan un área prometedora para la investigación y el desarrollo futuros.