Erste Schritte mit dem experimentellen Zugriff auf Gemini Nano

Der experimentelle Zugriff auf Gemini Nano ist für Entwickler gedacht, die ihre Apps mit modernsten On-Device-KI-Funktionen verbessern möchten. In dieser Anleitung erfahren Sie, wie Sie Gemini Nano mit dem Google AI Edge SDK in Ihrer eigenen App testen können.

Beispiel-App abrufen

Wenn Sie eine vorbereitete Demo durchlaufen möchten, sehen Sie sich unsere Beispiel-App auf GitHub an.

Voraussetzungen

Wenn Sie Gemini Nano ausprobieren möchten, benötigen Sie ein Gerät der Pixel 9-Serie. Halten Sie eine bereit, bevor Sie fortfahren, und achten Sie darauf, dass Sie nur mit dem Konto angemeldet sind, das Sie für Tests verwenden möchten.

  1. Der aicore-experimental Google-Gruppe beitreten
  2. Für das Android AICore-Testprogramm anmelden

Nachdem Sie diese Schritte ausgeführt haben, sollte sich der App-Name im Play Store (unter „Apps und Geräte verwalten“) von „Android AICore“ zu „Android AICore (Beta)“ ändern.

APKs aktualisieren und Binärdateien herunterladen

  1. Aktualisieren Sie das AICore-APK:
    1. Tippen Sie rechts oben auf das Profilsymbol.
    2. Tippen Sie auf Apps und Gerät verwalten > Verwalten.
    3. Tippen Sie auf Android AICore.
    4. Tippen Sie auf Aktualisieren, wenn ein Update verfügbar ist.
  2. Aktualisieren Sie das Private Compute Service-APK:
    1. Tippen Sie rechts oben auf das Profilsymbol.
    2. Tippen Sie auf Apps und Gerät verwalten > Verwalten.
    3. Tippen Sie auf Private Compute Services.
    4. Tippen Sie auf Aktualisieren, wenn ein Update verfügbar ist.
    5. Prüfen Sie die Version auf dem Tab Über diese App und vergewissern Sie sich, dass die App-Version 1.0.release.658389993 oder höher ist.
  3. Starten Sie Ihr Gerät neu und warten Sie einige Minuten, bis die Testregistrierung wirksam wird.
  4. Prüfen Sie die AICore-APK-Version im Play Store (auf dem Tab „Über diese App“), um zu bestätigen, dass sie mit 0.thirdpartyeap beginnt.

Gradle konfigurieren

Fügen Sie der Konfiguration build.gradle den folgenden Block „dependencies“ hinzu:


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

Legen Sie in der build.gradle-Konfiguration das SDK-Mindestziel auf 31 fest:

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

AICore einrichten und Inferenz ausführen

Erstellen Sie ein GenerationConfig-Objekt mit Parametern zum Anpassen der Eigenschaften für die Ausführung der Inferenz durch das Modell.

Zu den Parametern gehören:

  • Temperatur: Steuert die Zufälligkeit. Höhere Werte erhöhen die Vielfalt.
  • Top K: Anzahl der höchstrangigen Tokens, die berücksichtigt werden sollen
  • Anzahl der Kandidaten: Maximale Anzahl der zurückzugebenden Antworten
  • Maximale Ausgabetokens: Länge der Antwort
  • Worker Executor: Der ExecutorService, auf dem Hintergrundaufgaben ausgeführt werden sollen
  • Callback-Executor: Der Executor, auf dem Callbacks aufgerufen werden sollen.

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

Erstellen Sie einen optionalen downloadCallback. Dies ist eine Callback-Funktion, die zum Herunterladen von Modellen verwendet wird. Die zurückgegebenen Nachrichten dienen zu Debugging-Zwecken.

Erstellen Sie das GenerativeModel-Objekt mit den zuvor erstellten Konfigurationen für die Generierung und den optionalen Download.

Kotlin

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

Java

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

Führen Sie die Inferenz mit dem Modell aus und übergeben Sie Ihren Prompt. Da GenerativeModel.generateContent() eine Suspend-Funktion ist, muss sie im richtigen Coroutine-Scope aufgerufen werden.

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."
    generativeModelFutures.generateContent(input),
    new FutureCallback<GenerateContentResponse>() {
      @Override
      public void onSuccess(GenerateContentResponse result) {
        // generation successful
      }

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

Wenn Sie Feedback zum Google AI Edge SDK oder anderes Feedback für unser Team haben, reichen Sie ein Ticket ein.

Tipps zu Prompts

Beim Prompt-Design werden Prompts erstellt, die eine optimale Antwort von Sprachmodellen auslösen. Gut strukturierte Prompts sind wichtig, um genaue, hochwertige Antworten aus einem Sprachmodell zu erhalten. Wir haben einige Beispiele für häufige Anwendungsfälle von Gemini Nano zusammengestellt, damit Sie leichter loslegen können. Weitere Informationen finden Sie unter Gemini-Prompting-Strategien.

Für Umschreibungen:

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

Für Anwendungsfälle mit intelligenten Antworten:

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:

Für Zusammenfassungen:

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.