Gemini Nano の試験運用版アクセスを開始する

Gemini Nano の試験運用版アクセスは、最先端のオンデバイス AI 機能を使用してアプリの機能強化をテストするデベロッパーを対象としています。このガイドでは、独自のアプリで Google AI Edge SDK を使用して Gemini Nano をテストする方法について詳しく説明します。

サンプルアプリを入手する

準備されたデモに沿って操作する場合は、GitHub のサンプルアプリをご覧ください。

前提条件

Gemini Nano を試すには、Google Pixel 9 シリーズのデバイスが必要です。テストを開始する前に、テストに使用するアカウントのみでログインしていることを確認してください。

  1. aicore-experimental Google グループに参加する
  2. Android AICore テスト プログラムにオプトインする

これらの手順を完了すると、Google Play ストア([アプリとデバイスの管理] 内)のアプリ名が「Android AICore」から「Android AICore(ベータ版)」に変わります。

APK を更新してバイナリをダウンロードする

  1. AICore APK を更新します。
    1. 右上のプロフィール アイコンをタップします。
    2. [アプリとデバイスの管理] > [管理] をタップします。
    3. [Android AICore] をタップします。
    4. アップデートが利用可能な場合は [更新] をタップします。
  2. Private Compute Service APK を更新します。
    1. 右上のプロフィール アイコンをタップします。
    2. [アプリとデバイスの管理] > [管理] をタップします。
    3. [Private Compute Services] をタップします。
    4. アップデートが利用可能な場合は [更新] をタップします。
    5. [このアプリについて] タブでバージョンを確認し、アプリのバージョンが 1.0.release.658389993 以降であることを確認します。
  3. デバイスを再起動し、テスト登録が有効になるまで数分待ちます。
  4. Google Play ストア([このアプリについて] タブ)で AICore APK のバージョンを確認し、0.thirdpartyeap で始まることを確認します。

Gradle を構成する

build.gradle 構成の依存関係ブロックに次のコードを追加します。


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

build.gradle 構成で、最小 SDK ターゲットを 31 に設定します。

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

AICore を取得して推論を実行する

GenerationConfig オブジェクトを作成します。このオブジェクトには、モデルが推論を実行する方法のプロパティをカスタマイズするパラメータがあります。

次のパラメータがあります。

  • Temperature: ランダム性を制御します。値が大きいほど多様性が高くなります。
  • Top K: 最も高いランクのトークンの中から考慮するトークンの数
  • 候補数: 返されるレスポンスの最大数
  • 最大出力トークン: レスポンスの長さ
  • ワーカー エグゼキュータ: バックグラウンド タスクを実行する ExecutorService
  • コールバック エグゼキュータ: コールバックを呼び出す Executor

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

オプションの downloadCallback を作成します。これは、モデルのダウンロードに使用されるコールバック関数です。返されるメッセージはデバッグ用です。

前に作成した生成構成とオプションのダウンロード構成を使用して、GenerativeModel オブジェクトを作成します。

Kotlin

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

Java

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

モデルで推論を実行し、プロンプトを渡します。GenerativeModel.generateContent() は suspend 関数であるため、起動時に正しいコルーチン スコープ内にあることを確認する必要があります。

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

Google AI Edge SDK に関するフィードバックや、チームへのその他のフィードバックがある場合は、チケットを送信してください。

プロンプトに関するヒント

プロンプト設計は、言語モデルから最適なレスポンスを引き出すプロンプトを作成するプロセスです。適切に構造化されたプロンプトを作成することは、言語モデルからの正確で高品質なレスポンスを実現するための不可欠な要素です。Gemini Nano の一般的なユースケースを開始するための例をいくつか示します。詳しくは、Gemini のメッセージ ストラテジーをご覧ください。

書き換えの場合:

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

スマート リプライのユースケース:

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:

要約の場合:

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.