Iniziare a utilizzare l'accesso sperimentale a Gemini Nano

L'accesso sperimentale a Gemini Nano è progettato per gli sviluppatori che vogliono testare il miglioramento delle loro app con funzionalità IA on-device all'avanguardia. Questa guida fornisce dettagli su come eseguire esperimenti con Gemini Nano utilizzando l'SDK Google AI Edge nella tua app.

Ottieni l'app di esempio

Se vuoi seguire una demo preparata, dai un'occhiata alla nostra app di esempio su GitHub.

Prerequisiti

Per eseguire esperimenti con Gemini Nano, devi avere un dispositivo della serie Pixel 9. Assicurati di averne uno a portata di mano prima di procedere e di aver eseguito l'accesso solo con l'account che intendi utilizzare per i test.

  1. Partecipa al gruppo Google aicore-experimental
  2. Attivare il programma di test di Android AICore

Dopo aver completato questi passaggi, il nome dell'app sul Play Store (in Gestisci app e dispositivo) dovrebbe cambiare da "Android AICore" a "Android AICore (beta)".

Aggiorna gli APK e scarica i binari

  1. Aggiorna l'APK AICore:
    1. In alto a destra, tocca l'icona del profilo.
    2. Tocca Gestisci app e dispositivo > Gestisci.
    3. Tocca Android AICore
    4. Tocca Aggiorna se è disponibile un aggiornamento.
  2. Aggiorna l'APK del servizio Private Compute:
    1. In alto a destra, tocca l'icona del profilo.
    2. Tocca Gestisci app e dispositivo > Gestisci.
    3. Tocca Private Compute Services.
    4. Tocca Aggiorna se è disponibile un aggiornamento.
    5. Controlla la versione nella scheda Informazioni su questa app e verifica che sia 1.0.release.658389993 o successiva
  3. Riavvia il dispositivo e attendi qualche minuto affinché la registrazione per i test abbia effetto.
  4. Controlla la versione dell'APK AICore nel Play Store (nella scheda "Informazioni su questa app") per verificare che inizi con 0.thirdpartyeap

Configura Gradle

Aggiungi quanto segue al blocco delle dipendenze nella configurazione build.gradle:


implementation("com.google.ai.edge.aicore:aicore:0.0.1-exp01")

Nella configurazione di build.gradle, imposta la versione minima dell'SDK su 31:

defaultConfig {
    ...
    minSdk = 31
    ...
}

Ottieni AICore ed esegui l'inferenza

Crea un oggetto GenerationConfig, che contiene parametri per personalizzare le proprietà per la modalità di esecuzione dell'inferenza da parte del modello.

I parametri includono:

  • Temperatura: controlla la casualità; i valori più alti aumentano la diversità
  • Top K: il numero di token da considerare tra quelli con il ranking più alto
  • Numero candidati: il numero massimo di risposte da restituire
  • Numero massimo di token di output: la lunghezza della risposta
  • Esecutore di worker: il ExecutorService su cui devono essere eseguite le attività in background
  • Executor di callback: l'Executor su cui devono essere invocati i callback

Kotlin

val generationConfig = generationConfig {
  context = ApplicationProvider.getApplicationContext() // required
  temperature = 0.2f
  topK = 16
  maxOutputTokens = 256
}

Java

GenerationConfig.Builder configBuilder = GenerationConfig.Companion.builder();
    configBuilder.setContext(context);
    configBuilder.setTemperature(0.2f);
    configBuilder.setTopK(16);
    configBuilder.setMaxOutputTokens(256);

Crea un downloadCallback facoltativo. Questa è una funzione di callback utilizzata per il download del modello. I messaggi restituiti sono per scopi di debug.

Crea l'oggetto GenerativeModel con le configurazioni di generazione e download facoltative che hai creato in precedenza.

Kotlin

val downloadConfig = DownloadConfig(downloadCallback)
val model = GenerativeModel(
   generationConfig = generationConfig,
   downloadConfig = downloadConfig // optional
)

Java

GenerativeModel model = new GenerativeModel(
   generationConfig,
   downloadConfig = DownloadConfig(downloadCallback) // optional
);

Esegui l'inferenza con il modello e passa il prompt. Poiché GenerativeModel.generateContent() è una funzione di sospensione, dobbiamo assicurarci che sia nello spazio di coroutine corretto per il lancio.

Kotlin

scope.launch {
  // Single string input prompt
  val input = "I want you to act as an English proofreader. I will provide you
    texts, and I would like you to review them for any spelling, grammar, or
    punctuation errors. Once you have finished reviewing the text, provide me
    with any necessary corrections or suggestions for improving the text: These
    arent the droids your looking for."
  val response = generativeModel.generateContent(input)
  print(response.text)

  // Or multiple strings as input
  val response = generativeModel.generateContent(
  content {
    text("I want you to act as an English proofreader. I will provide you texts
      and I would like you to review them for any spelling, grammar, or
      punctuation errors.")
    text("Once you have finished reviewing the text, provide me with any
      necessary corrections or suggestions for improving the text:")
    text("These arent the droids your looking for.")
    }
  )
  print(response.text)
}

Java

Futures.addCallback(
    String input = "I want you to act as an English proofreader. I will
    provide you texts, and I would like you to review them for any
    spelling, grammar, or punctuation errors. Once you have finished
    reviewing the text, provide me with any necessary corrections or
    suggestions for improving the text:
    These aren't the droids you're looking for."
    modelFutures.generateContent(input),
    new FutureCallback<GenerateContentResponse>() {
      @Override
      public void onSuccess(GenerateContentResponse result) {
        // generation successful
      }

      @Override
      public void onFailure(Throwable t) {
        // generation failed
      }
    },
    ContextCompat.getMainExecutor(this));

Se hai feedback sull'SDK Google AI Edge o su qualsiasi altro argomento per il nostro team, invia una richiesta.

Suggerimenti per i prompt

La progettazione dei prompt è il processo di creazione di prompt che generano una risposta ottimale da parte dei modelli linguistici. Scrivere prompt ben strutturati è un aspetto essenziale per garantire risposte accurate e di alta qualità da un modello linguistico. Abbiamo incluso alcuni esempi per aiutarti a iniziare a utilizzare i casi d'uso comuni di Gemini Nano. Per saperne di più, consulta le strategie di prompt di Gemini.

Per le riscritture:

I want you to act as an English proofreader. I will provide you texts, and I
would like you to review them for any spelling, grammar, or punctuation errors.
Once you have finished reviewing the text, provide me with any necessary
corrections or suggestions for improving the text: These arent the droids your
looking for

Per i casi d'uso delle risposte rapide:

Prompt: Predict up to 5 emojis as a response to a text chat message. The output
should only include emojis.

input: The new visual design is blowing my mind 🤯
output: ➕,💘, ❤‍🔥

input: Well that looks great regardless
output: 💗,🪄

input: Unfortunately this won't work
output: 💔,😔

input: sounds good, I'll look into that
output: 🙏,👍

input: 10hr cut of jeff goldblum laughing URL
output: 😂,💀,⚰️

input: Woo! Launch time!
Output:

Per il riepilogo:

Summarize this text as bullet points of key information.
Text: A quantum computer exploits quantum mechanical phenomena to perform
  calculations exponentially faster than any modern traditional computer. At
  very tiny scales, physical matter acts as both particles and as waves, and
  quantum computing uses specialized hardware to leverage this behavior. The
  operating principles of quantum devices are beyond the scope of classical
  physics. When deployed at scale, quantum computers could be used in a wide
  variety of applications such as: in cybersecurity to break existing encryption
  methods while helping researchers create new ones, in meteorology to develop
  better weather forecasting etc. However, the current state-of-the-art quantum
  computers are still largely experimental and impractical.