Crea workflow agentici con Gemini Nano

Gli Agentic Workflows di ML Kit (com.google.mlkit:genai-agent, alpha) ti consentono di creare esperienze conversazionali on-device autonome e multi-turno basate su Gemini Nano e sul servizio di sistema Android AICore.

Basata sulla classe GenerativeModel (accesso diretto al modello), la classe AgentRunner automatizza loop dell'agente completi e orientati agli obiettivi direttamente all'interno della tua app: osservazione del contesto, ragionamento sugli input utente, azione tramite strumenti Kotlin tipizzati e valutazione del feedback fino a quando non viene soddisfatta una condizione di terminazione.

Pattern agentici comuni

Gli Agentic Workflow on-device sono ottimizzati per cicli di ragionamento mirati e deterministici in cui lo user intent viene tradotto in azioni strutturate dell'app. I pattern più comuni includono:

Sequenza

Esempio

Esecuzione di azioni in-app e scorciatoie

Traduzione di richieste in linguaggio naturale in comandi specifici dell'app, come l'applicazione di regolazioni delle foto su un canvas di modifica, la modifica delle impostazioni di riproduzione o l'attivazione/disattivazione delle preferenze dell'app.

Ricerca strutturata e calcolo locale

Recupero di un record specifico in base all'ID (ad esempio lo stato dell'ordine o il saldo dell'account) ed esecuzione di calcoli matematici in più passaggi (ad esempio ammortamenti di prestiti o metriche di fitness).

Filtro e selezione conversazionali

Eseguire query e perfezionare in modo interattivo gli elementi delle app locali, ad esempio eseguire ricerche in un elenco di attività locali, filtrare una playlist o ordinare gli elementi del catalogo in base ai criteri dell'utente.

Input guidato in più passaggi

Guida gli utenti passo passo nell'inserimento dei dati strutturati, convalidando gli input intermedi con strumenti locali prima dell'invio finale.

Prestazioni e privacy on-device

Gli Agentic Workflows vengono eseguiti su Android AICore per offrire un'esecuzione privata e reattiva direttamente sul dispositivo dell'utente:

  • Ragionamento locale e privacy dei prompt: il loop di ragionamento e pianificazione del modello viene eseguito interamente on-device con latenza di rete pari a zero. I dati dei prompt degli utenti rimangono privati sul dispositivo. Tuttavia, i singoli strumenti implementati nella tua app possono comunque effettuare chiamate di rete o eseguire query sulle API Cloud se il tuo caso d'uso richiede dati esterni.
  • Sessioni multi-turno gestite: l'interfaccia AgentSession mantiene la cronologia delle conversazioni in memoria tra i turni, quindi non devi gestire le trascrizioni manualmente. Puoi recuperare la memoria in qualsiasi momento utilizzando i metodi session.close(), deleteSession(sessionId) o clearAllSessions().
  • Limiti di esecuzione: le configurazioni dell'agente applicano un limite massimo di turni (il limite maxTurns, il cui valore predefinito è 10) come condizione di terminazione delle risorse per evitare loop di esecuzione incontrollati, risparmiare batteria e proteggere la reattività del dispositivo.

Scegli tra generazione personalizzata, agenti e API specifiche per le attività

ML Kit organizza le funzionalità di AI generativa on-device in base al livello di personalizzazione e orchestrazione richiesto dalla tua funzionalità:

  • Generazione e agenti personalizzati: lavora direttamente con il modello di base Gemini Nano quando la tua funzionalità richiede istruzioni personalizzate o logica specifica per il dominio. Scegli gli Agentic Workflows (utilizzando la classe AgentRunner, basata sulla classe GenerativeModel) se vuoi sessioni multi-turn gestite e loop di chiamate degli strumenti automatizzati, oppure scegli l'accesso diretto al modello (utilizzando la classe GenerativeModel) per prompt personalizzati, output strutturato tipizzato o cronologia multi-turn gestita dal client.
  • Sintesi vocale e audio: utilizza modelli di sintesi vocale e AI generativa dedicati (come il riconoscimento vocale) per trascrivere l'audio parlato in testo.
  • Attività di testo e immagini: utilizza tipi di caratteristiche preconfigurati e specifici per l'attività e adattatori LoRA ottimizzati oltre al modello di base condiviso (come Descrizione dell'immagine, Riassunto, Correzione di bozze e Riscrittura) per casi d'uso di visione e scrittura pronti all'uso senza prompt engineering.

La seguente tabella mette a confronto questi approcci:

Considerazione

Agentic Workflows (AgentRunner)

Accesso diretto al modello (GenerativeModel)

API per attività di testo e immagini

Architettura

Livello di orchestrazione di alto livello basato su GenerativeModel.

Interfaccia diretta al modello di base Gemini Nano per prompt personalizzati.

Tipi di funzionalità specifiche per le attività supportati da adattatori LoRA ottimizzati sul modello di base condiviso.

Contesto multi-turno

Sessioni multi-turno gestite (AgentSession). Mantiene automaticamente la cronologia delle conversazioni in memoria tra i turni, così non devi gestire manualmente le trascrizioni (supporta anche l'esecuzione a turno singolo temporanea).

Contesto multi-turn gestito dal client. GenerateContentRequest supporta le conversazioni multi-turn List<Content> (ruoli USER e MODEL) e sessionId per gli sviluppatori che vogliono gestire direttamente la propria cronologia chat.

Chiamate di attività stateless con un singolo input.

Chiamate agli strumenti e azioni

Loop di chiamata degli strumenti automatizzato. Rileva le AppFunction Android registrate, esegue le chiamate selezionate dal modello e inserisce automaticamente i risultati nel modello.

Dichiarazioni degli strumenti gestiti dal client. GenerateContentRequest accetta gli schemi degli strumenti ed emette richieste di chiamata di funzione che la tua app deve eseguire e restituire manualmente.

Non applicabile (pipeline di attività fissa).

Quando utilizzarle

Utilizzalo quando vuoi un'orchestrazione automatizzata per l'esecuzione di strumenti in più passaggi e sessioni multi-turn in memoria gestite.

Utilizzalo per il prompting personalizzato, la comprensione delle immagini multimodali, l'output strutturato digitato (@Generable) o quando vuoi gestire direttamente la cronologia chat o l'invio degli strumenti.

Utilizzalo quando la tua funzionalità corrisponde a un'attività di scrittura o visione standard e vuoi una qualità immediata da LoRA ottimizzati con una configurazione minima.

Passaggi successivi