Pierwsze kroki z dostępem do Gemini Nano w trybie eksperymentalnym

Dostęp do eksperymentalnej wersji Gemini Nano jest przeznaczony dla deweloperów, którzy chcą przetestować ulepszanie swoich aplikacji za pomocą zaawansowanych funkcji AI na urządzeniu. W tym przewodniku znajdziesz szczegółowe informacje o tym, jak eksperymentować z Gemini Nano za pomocą pakietu Google AI Edge SDK w swojej aplikacji.

Pobieranie przykładowej aplikacji

Jeśli chcesz zobaczyć przygotowaną prezentację, zapoznaj się z naszą przykładową aplikacją na GitHubie.

Wymagania wstępne

Aby eksperymentować z Gemini Nano, potrzebujesz urządzenia z serii Pixel 9. Zanim przejdziesz dalej, upewnij się, że masz go pod ręką i że logujesz się tylko na konto, którego chcesz używać do testowania.

  1. Dołącz do grupy Google „aicore-experimental”
  2. Dołącz do programu testów Android AICore.

Po wykonaniu tych czynności nazwa aplikacji w Google Play (w sekcji zarządzania aplikacjami i urządzeniem) powinna zmienić się z „Android AICore” na „Android AICore (beta)”.

Aktualizowanie plików APK i pobieranie binarnych plików binarnych

  1. Zaktualizuj plik APK AICore:
    1. W prawym górnym rogu kliknij ikonę profilu.
    2. Kliknij Zarządzaj aplikacjami i urządzeniami > Zarządzaj.
    3. Kliknij Android AICore.
    4. Jeśli dostępna jest aktualizacja, kliknij Aktualizuj.
  2. Zaktualizuj plik APK usługi Private Compute Service:
    1. W prawym górnym rogu kliknij ikonę profilu.
    2. Kliknij Zarządzaj aplikacjami i urządzeniami > Zarządzaj.
    3. Kliknij Private Compute Services (Prywatne usługi obliczeniowe).
    4. Jeśli dostępna jest aktualizacja, kliknij Aktualizuj.
    5. Sprawdź wersję na karcie Informacje o aplikacji i upewnij się, że jest to wersja 1.0.release.658389993 lub nowsza.
  3. Zrestartuj urządzenie i poczekaj kilka minut, aż testowa rejestracja zacznie obowiązywać.
  4. Sprawdź wersję pliku APK AICore w Sklepie Play (na karcie „Informacje o aplikacji”), aby upewnić się, że zaczyna się od 0.thirdpartyeap.

Konfigurowanie Gradle

W bloku zależności w konfiguracji build.gradle dodaj te informacje:


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

W konfiguracji build.gradle ustaw minimalną wersję pakietu SDK na 31:

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

Pobieranie AICore i uruchamianie wnioskowania

Utwórz obiekt GenerationConfig, który zawiera parametry umożliwiające dostosowanie właściwości określających, jak model ma przeprowadzać wnioskowanie.

Parametry:

  • Temperatura: określa losowość; wyższe wartości zwiększają różnorodność.
  • Top K: ile tokenów o najwyższym rankingu ma być uwzględnionych.
  • Liczba kandydatów: maksymalna liczba odpowiedzi do zwrócenia.
  • Maksymalna liczba tokenów wyjściowych: długość odpowiedzi.
  • Wykonawca zadań: ExecutorService, na którym mają być wykonywane zadania w tle.
  • Wykonawca wywołań zwrotnych: Executor, w których mają być wywoływane wywołania zwrotne.

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

Utwórz opcjonalny element downloadCallback. Jest to funkcja wywołania zwrotnego używana do pobierania modelu. Zwracane komunikaty służą do debugowania.

Utwórz obiekt GenerativeModel z utworzonymi wcześniej konfiguracjami generowania i opcjonalnego pobierania.

Kotlin

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

Java

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

Przeprowadź wnioskowanie z modelem i przekaż prompt. Funkcja GenerativeModel.generateContent() jest funkcją zawieszania, więc musimy się upewnić, że jest ona uruchomiona w odpowiednim zakresie współbieżnej funkcji.

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

Jeśli chcesz podzielić się opinią na temat pakietu SDK Google AI Edge lub na temat innych kwestii, prześlij zgłoszenie.

Wskazówki dotyczące promptów

Projektowanie promptów to proces tworzenia promptów, które służą do uzyskania optymalnej odpowiedzi modelu językowego. Pisanie dobrze sformatowanych promptów jest kluczowym elementem zapewnienia dokładnych i wysokiej jakości odpowiedzi modelu językowego. Dołączyliśmy kilka przykładów, aby ułatwić Ci rozpoczęcie korzystania z Gemini Nano w typowych przypadkach użycia. Więcej informacji znajdziesz w strategiach promptów Gemini.

W przypadku przekierowań:

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

Inteligentne odpowiedzi:

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:

W przypadku podsumowywania:

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.