Créer des workflows agentifs avec Gemini Nano

Les workflows agentiques de ML Kit (com.google.mlkit:genai-agent, alpha) vous permettent de créer des expériences conversationnelles autonomes et multitours sur l'appareil, optimisées par Gemini Nano et le service système Android AICore.

Basée sur la classe GenerativeModel (accès direct au modèle), la classe AgentRunner automatise des boucles d'agent complètes et axées sur des objectifs directement dans votre application : observation du contexte, raisonnement sur les entrées utilisateur, action via des outils Kotlin typés et évaluation des commentaires jusqu'à ce qu'une condition d'arrêt soit remplie.

Modèles agentiques courants

Les workflows agentiques sur l'appareil sont optimisés pour des boucles de raisonnement ciblées et déterministes, où l'intention utilisateur est traduite en actions d'application structurées. Voici quelques modèles courants :

Schéma

Exemple

Exécution d'actions dans l'application et raccourcis

Traduire des requêtes en langage naturel en commandes d'application spécifiques, comme appliquer des ajustements photo sur un canevas de retouche, modifier les paramètres de lecture ou activer/désactiver les préférences de l'application.

Recherche structurée et calcul local

Récupérer un enregistrement spécifique par ID (comme l'état d'une commande ou le solde d'un compte) et effectuer des calculs mathématiques en plusieurs étapes (comme l'amortissement d'un prêt ou des métriques de remise en forme).

Filtrage et sélection conversationnels

Interroger et affiner de manière interactive des éléments d'application locaux, par exemple en effectuant une recherche dans une liste de tâches locale, en filtrant une playlist ou en triant des éléments de catalogue en fonction de critères utilisateur.

Saisie guidée en plusieurs étapes

Guider les utilisateurs étape par étape dans la saisie de données structurées, en validant les entrées intermédiaires avec des outils locaux avant l'envoi final.

Performances et confidentialité sur l'appareil

Les workflows agentiques s'exécutent sur Android AICore pour offrir une exécution privée et réactive directement sur l'appareil de l'utilisateur :

  • Raisonnement local et confidentialité des requêtes : la boucle de raisonnement et de planification du modèle s'exécute entièrement sur l'appareil, sans aucune latence réseau. Les données des requêtes utilisateur restent privées sur l'appareil. Toutefois, les outils individuels implémentés dans votre application peuvent toujours effectuer des appels réseau ou interroger des API cloud si votre cas d'utilisation nécessite des données externes.
  • Sessions multitours gérées : l'interface AgentSession conserve l'historique des conversations en mémoire d'un tour à l'autre. Vous n'avez donc pas besoin de gérer les transcriptions manuellement. Vous pouvez récupérer de la mémoire à tout moment à l'aide des méthodes session.close(), deleteSession(sessionId) ou clearAllSessions().
  • Limites d'exécution : les configurations de l'agent appliquent une limite maximale de tours (la limite maxTurns, définie par défaut sur 10) en tant que condition d'arrêt des ressources pour éviter les boucles d'exécution incontrôlées, économiser la batterie et protéger la réactivité de l'appareil.

Choisissez entre la génération personnalisée, les agents et les API spécifiques à une tâche

ML Kit organise les fonctionnalités d'IA générative sur l'appareil en fonction du niveau de personnalisation et d'orchestration dont votre fonctionnalité a besoin :

  • Génération et agents personnalisés : travaillez directement avec le modèle de fondation Gemini Nano lorsque votre fonctionnalité nécessite des instructions personnalisées ou une logique spécifique au domaine. Choisissez les workflows agentiques (à l'aide de la classe AgentRunner, basée sur la classe GenerativeModel) lorsque vous souhaitez des sessions multitours gérées et des boucles d'appel d'outils automatisées, ou choisissez l'accès direct au modèle (à l'aide de la classe GenerativeModel) pour des requêtes personnalisées, une sortie structurée typée ou un historique multitour géré par le client.
  • Parole et audio : utilisez des modèles de reconnaissance vocale et d'IA générative dédiés (comme la reconnaissance vocale) pour transcrire l'audio parlé en texte.
  • Tâches de texte et d'image : utilisez des types de caractéristiques préconfigurés et spécifiques aux tâches, ainsi que des adaptateurs LoRA affinés en plus du modèle de base partagé (comme Description de l'image, Résumé, Relecture et Réécriture) pour des cas d'utilisation de vision et d'écriture clés en main sans prompt engineering.

Le tableau suivant compare ces approches :

Décision d'achat

Workflows agentifs (AgentRunner)

Accès direct au modèle (GenerativeModel)

API de tâches de texte et d'image

Architecture

Couche d'orchestration de haut niveau basée sur GenerativeModel.

Interface directe avec le modèle de fondation Gemini Nano pour les requêtes personnalisées.

Types de caractéristiques spécifiques à une tâche, basés sur des adaptateurs LoRA affinés en plus du modèle de base partagé.

Contexte multitour

Sessions multitours gérées (AgentSession) : conserve automatiquement l'historique des conversations en mémoire d'un tour à l'autre, ce qui vous évite d'avoir à gérer manuellement les transcriptions (permet également l'exécution éphémère d'un seul tour).

Contexte multitour géré par le client. GenerateContentRequest est compatible avec les List<Content> multitours (rôles USER et MODEL) et sessionId pour les développeurs qui souhaitent gérer directement leur propre historique des discussions.

Appels de tâches sans état à entrée unique.

Appel d'outils et actions

Boucle d'appel d'outils automatisée Découvre les AppFunctions Android enregistrées, exécute les appels sélectionnés par le modèle et renvoie automatiquement les résultats au modèle.

Déclarations d'outils gérés par le client. GenerateContentRequest accepte les schémas d'outils et émet des requêtes d'appel de fonction que votre application doit exécuter et renvoyer manuellement.

Non applicable (pipeline de tâches fixe).

Quand les utiliser ?

Utilisez-le lorsque vous souhaitez une orchestration automatisée pour l'exécution d'outils en plusieurs étapes et des sessions multitours gérées en mémoire.

Utilisez-le pour le prompting personnalisé, la compréhension d'images multimodales, la sortie structurée typée (@Generable) ou lorsque vous souhaitez gérer directement votre propre historique des discussions ou l'envoi d'outils.

Utilisez cette option lorsque votre fonctionnalité correspond à une tâche d'écriture ou de vision standard et que vous souhaitez obtenir une qualité prête à l'emploi à partir de LoRA réglés avec une configuration minimale.

Étapes suivantes