Erste Schritte mit dem experimentellen Zugriff auf Gemini Nano

Der experimentelle Zugriff auf Gemini Nano richtet sich an Entwickler, die die Verbesserung ihrer Apps mithilfe moderner On-Device-KI-Funktionen testen möchten. In dieser Anleitung erfahren Sie, wie Sie mit dem Google AI Edge SDK in Ihrer eigenen App mit Gemini Nano experimentieren.

Beispiel-App abrufen

Wenn Sie einer vorbereiteten Demo folgen 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. Achten Sie darauf, dass Sie eine solche Karte haben, bevor Sie fortfahren, und dass Sie nur mit dem Konto angemeldet sind, das Sie für die Tests verwenden möchten.

  1. Der Google-Gruppe aicore-experimental beitreten
  2. Am Android AICore-Testprogramm teilnehmen

Nachdem Sie diese Schritte ausgeführt haben, sollte sich der App-Name im Play Store (unter „Apps und Gerät verwalten“) von „Android AICore“ in „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 auf dem Tab Info zur App, ob die App-Version 1.0.release.658389993 oder höher ist.
  3. Starten Sie das Gerät neu und warten Sie einige Minuten, bis die Testregistrierung wirksam wird.
  4. Prüfen Sie die AICore-APK-Version im Play Store (Tab „Info zur App“), ob sie mit 0.thirdpartyeap beginnt.

Gradle konfigurieren

Fügen Sie dem Block „dependencies“ in Ihrer build.gradle-Konfiguration Folgendes hinzu:


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

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

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

AICore abrufen und Inferenz ausführen

Erstellen Sie ein GenerationConfig-Objekt mit Parametern, mit denen Sie die Eigenschaften für die Inferenz des Modells anpassen können.

Zu den Parametern gehören:

  • Temperatur: Bestimmt die Zufälligkeit. Höhere Werte erhöhen die Vielfalt.
  • Top-K: Gibt an, wie viele Tokens aus den am höchsten bewerteten berücksichtigt werden sollen.
  • Kandidatenanzahl: Maximale Anzahl der Antworten, die zurückgegeben werden sollen
  • Max. Ausgabetokens: Länge der Antwort
  • Worker-Executor: Die ExecutorService, auf der Hintergrundaufgaben ausgeführt werden sollen
  • Callback-Ausführer: Die Executor, auf der 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 Rückruffunktion, die für das Herunterladen von Modellen verwendet wird. Die zurückgegebenen Meldungen dienen der Fehlerbehebung.

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

Kotlin

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

Java

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

Führen Sie die Inferenz mit dem Modell aus und geben Sie den Prompt ein. Da GenerativeModel.generateContent() eine suspendierte Funktion ist, müssen wir darauf achten, dass sie sich im richtigen coroutine-Kontext befindet, um gestartet zu 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."
    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));

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

Tipps zu Prompts

„Prompt-Design“ ist der Prozess, Prompts zu erstellen, die eine optimale Antwort aus Sprachmodellen auslösen. Gut strukturierte Prompts sind wichtig, um genaue, hochwertige Antworten aus einem Sprachmodell zu gewährleisten. Wir haben einige Beispiele für gängige Anwendungsfälle für Gemini Nano zusammengestellt. Weitere Informationen finden Sie in den Gemini-Prompt-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 für intelligente 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:

Zusammenfassung:

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.