Crea flujos de trabajo de agentes con Gemini Nano

Los flujos de trabajo de agentes de ML Kit (com.google.mlkit:genai-agent, versión alfa) te permiten crear experiencias de conversación autónomas y de varios turnos integradas en el dispositivo con la tecnología de Gemini Nano y el servicio del sistema Android AICore.

Creada sobre la clase GenerativeModel (acceso directo al modelo), la clase AgentRunner automatiza bucles de agentes completos y orientados a objetivos directamente en tu app: observa el contexto, razona sobre las entradas del usuario, actúa a través de herramientas de Kotlin con tipo y evalúa los comentarios hasta que se cumpla una condición de finalización.

Patrones de agentes comunes

Los flujos de trabajo de agentes integrados en el dispositivo están optimizados para bucles de razonamiento determinísticos y enfocados, en los que la intención del usuario se traduce en acciones estructuradas de la app. Entre los patrones comunes, se incluyen los siguientes:

Patrón

Ejemplo

Ejecución de acciones en la aplicación y accesos directos

Traducir solicitudes en lenguaje natural en comandos específicos de la app, como aplicar ajustes de fotos en un lienzo de edición, modificar la configuración de reproducción o activar o desactivar las preferencias de la app

Búsqueda estructurada y cálculo local

Recuperar un registro específico por ID (como un estado de pedido o un saldo de cuenta) y realizar cálculos matemáticos de varios pasos (como amortizaciones de préstamos o métricas de estado físico).

Filtro y selección conversacionales

Consultar y definir mejor de forma interactiva los elementos de la app local, como buscar en una lista de tareas local, filtrar una playlist o ordenar los elementos del catálogo según los criterios del usuario

Entrada guiada de varios pasos

Guía a los usuarios paso a paso por la entrada de datos estructurados y valida las entradas intermedias con herramientas locales antes del envío final.

Rendimiento y privacidad integrados en el dispositivo

Los flujos de trabajo de agentes se ejecutan en Android AICore para ofrecer una ejecución privada y responsiva directamente en el dispositivo del usuario:

  • Razonamiento local y privacidad de las instrucciones: El bucle de razonamiento y planificación del modelo se ejecuta por completo integrado en el dispositivo con cero latencia de red. Los datos de las instrucciones del usuario permanecen privados en el dispositivo. Sin embargo, las herramientas individuales implementadas en tu app pueden realizar llamadas de red o consultar APIs de Cloud si tu caso de uso requiere datos externos.
  • Sesiones de varios turnos administradas: La interfaz de AgentSession mantiene el historial de conversaciones en la memoria en todos los turnos para que no tengas que administrar las transcripciones de forma manual. Puedes recuperar memoria en cualquier momento con los métodos session.close(), deleteSession(sessionId) o clearAllSessions().
  • Barreras de seguridad de ejecución: Los parámetros de configuración del agente aplican un límite máximo de turnos (el límite de maxTurns, que se establece de forma predeterminada en 10) como una condición de finalización de recursos para evitar bucles de ejecución descontrolados, conservar la batería y proteger la capacidad de respuesta del dispositivo.

Elige entre la generación personalizada, los agentes y las APIs específicas para tareas

El ML Kit organiza las funciones de IA generativa integradas en el dispositivo según el nivel de personalización y organización que necesita tu función:

  • Generación y agentes personalizados: Trabaja directamente con el modelo de base de Gemini Nano cuando tu función requiera instrucciones personalizadas o lógica específica del dominio. Elige flujos de trabajo de agentes (con la clase AgentRunner, compilada sobre la clase GenerativeModel) cuando quieras sesiones de varios turnos administradas y bucles de llamadas a herramientas automatizados, o elige acceso directo al modelo (con la clase GenerativeModel) para instrucciones personalizadas, resultados estructurados con tipo o historial de varios turnos administrado por el cliente.
  • Voz y audio: Usa modelos de IA generativa y de voz dedicados (como el reconocimiento de voz) para transcribir audio hablado a texto.
  • Tareas de texto y de imagen: Usa tipos de atributos preconfigurados y específicos de la tarea, y adaptadores de LoRA ajustados sobre el modelo base compartido (como Descripción de la imagen, Resumen, Revisión de texto y Reescritura) para casos de uso de visión y escritura listos para usar sin ingeniería de instrucciones.

En la siguiente tabla, se describe cómo se comparan estos enfoques:

Consideración

Flujos de trabajo de agentes (AgentRunner)

Acceso directo al modelo (GenerativeModel)

APIs de tareas de texto y de imagen

Arquitectura

Es una capa de organización de alto nivel compilada sobre GenerativeModel.

Es una interfaz directa al modelo de base de Gemini Nano para instrucciones personalizadas.

Tipos de atributos específicos de la tarea respaldados por adaptadores de LoRA ajustados sobre el modelo base compartido.

Contexto de varios turnos

Sesiones de varios turnos administradas (AgentSession). Mantiene el historial de conversaciones en la memoria automáticamente entre turnos para que no tengas que administrar las transcripciones de forma manual (también admite la ejecución efímera de un solo turno).

Contexto de varios turnos administrado por el cliente. GenerateContentRequest admite List<Content> de varios turnos (roles USER y MODEL) y sessionId para los desarrolladores que quieran administrar su propio historial de chat directamente.

Llamadas de tareas sin estado y de entrada única.

Llamadas a herramientas y acciones

Bucle de llamada a herramientas automatizado. Descubre las AppFunctions de Android registradas, ejecuta las llamadas seleccionadas por el modelo y devuelve los resultados al modelo automáticamente.

Declaraciones de herramientas administradas por el cliente. GenerateContentRequest acepta esquemas de herramientas y emite solicitudes de llamada a función para que tu app las ejecute y devuelva manualmente.

No aplicable (canalización de tareas fija).

Cuándo debe utilizarse

Úsala cuando quieras una organización automatizada para la ejecución de herramientas de varios pasos y sesiones de varios turnos administradas en la memoria.

Úsala para instrucciones personalizadas, comprensión de imágenes multimodales, resultados estructurados escritos (@Generable) o cuando quieras administrar tu propio historial de chat o envío de herramientas directamente.

Úsala cuando tu función coincida con una tarea de escritura o visión estándar y quieras obtener una calidad lista para usar de LoRA ajustadas con una configuración mínima.

Próximos pasos