Premiers pas avec l'accès expérimental à Gemini Nano

L'accès expérimental à Gemini Nano est conçu pour les développeurs qui souhaitent tester l'amélioration de leurs applications avec des fonctionnalités d'IA de pointe sur l'appareil. Ce guide explique comment tester Gemini Nano à l'aide du SDK Google AI Edge dans votre propre application.

Obtenir l'application exemple

Si vous souhaitez suivre une démonstration préparée, consultez notre application exemple sur GitHub.

Prérequis

Pour tester Gemini Nano, vous avez besoin d'un appareil de la gamme Pixel 9. Assurez-vous d'en avoir un à portée de main avant de continuer et de n'être connecté qu'avec le compte que vous prévoyez d'utiliser pour les tests.

  1. Rejoindre le groupe Google aicore-experimental
  2. Inscrivez-vous au programme de test Android AICore.

Une fois ces étapes terminées, le nom de l'application sur le Play Store (sous "Gérer les applications et l'appareil") devrait passer d'"Android AICore" à "Android AICore (bêta)".

Mettre à jour les APK et télécharger les binaires

  1. Mettez à jour l'APK AICore :
    1. En haut à droite, appuyez sur l'icône de votre profil.
    2. Appuyez sur Gérer les applications et l'appareil > Gérer.
    3. Appuyez sur Android AICore.
    4. Appuyez sur Mettre à jour si une mise à jour est disponible.
  2. Mettez à jour l'APK du service de calcul privé :
    1. En haut à droite, appuyez sur l'icône de votre profil.
    2. Appuyez sur Gérer les applications et l'appareil > Gérer.
    3. Appuyez sur Private Compute Services (Services de calcul privé).
    4. Appuyez sur Mettre à jour si une mise à jour est disponible.
    5. Vérifiez la version dans l'onglet À propos de cette application et assurez-vous qu'elle est 1.0.release.658389993 ou ultérieure.
  3. Redémarrez votre appareil et patientez quelques minutes pour que l'enregistrement de test soit pris en compte.
  4. Vérifiez la version de l'APK AICore sur le Play Store (sous l'onglet "À propos de cette application") pour vous assurer qu'elle commence par 0.thirdpartyeap.

Configurer Gradle

Ajoutez ce qui suit au bloc de dépendances de votre configuration build.gradle:


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

Dans votre configuration build.gradle, définissez la cible de SDK minimale sur 31:

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

Obtenir AICore et exécuter une inférence

Créez un objet GenerationConfig, qui comporte des paramètres permettant de personnaliser les propriétés pour la façon dont le modèle doit exécuter l'inférence.

Les paramètres incluent les suivants:

  • Température: contrôle le caractère aléatoire. Des valeurs plus élevées augmentent la diversité.
  • Top K: nombre de jetons à prendre en compte parmi les plus performants
  • Nombre de candidats: nombre maximal de réponses à renvoyer
  • Nombre maximal de jetons de sortie: longueur de la réponse
  • Exécuteur de nœud de calcul: ExecutorService sur lequel les tâches en arrière-plan doivent être exécutées
  • Exécuteur de rappel: Executor sur lequel les rappels doivent être appelés

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);

Créez un downloadCallback facultatif. Il s'agit d'une fonction de rappel utilisée pour le téléchargement de modèles. Les messages renvoyés sont destinés au débogage.

Créez l'objet GenerativeModel avec les configurations de génération et de téléchargement facultatives que vous avez créées précédemment.

Kotlin

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

Java

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

Exécutez l'inférence avec le modèle et transmettez votre requête. Comme GenerativeModel.generateContent() est une fonction de suspension, nous devons nous assurer qu'elle se trouve dans la portée de coroutine appropriée pour le lancement.

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));

Si vous avez des commentaires sur le SDK Google AI Edge ou sur d'autres sujets, envoyez une demande.

Conseils pour les requêtes

La conception de requêtes est le processus de création de requêtes qui déclenchent une réponse optimale à partir de modèles de langage. Pour rédiger des réponses précises et de haute qualité à partir d'un modèle de langage, il est essentiel de rédiger des requêtes bien structurées. Nous avons inclus quelques exemples pour vous aider à vous familiariser avec les cas d'utilisation courants de Gemini Nano. Pour en savoir plus, consultez les stratégies d'incitation Gemini.

Pour les réécritures:

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

Pour les cas d'utilisation des réponses suggérées:

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:

Pour la synthèse:

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.