Начните работу с экспериментальным доступом Gemini Nano

Экспериментальный доступ Gemini Nano предназначен для разработчиков, желающих протестировать улучшения своих приложений с помощью передовых возможностей искусственного интеллекта на устройстве. В этом руководстве подробно описано, как экспериментировать с Gemini Nano с помощью Google AI Edge SDK в вашем собственном приложении.

Получить образец приложения

Если вы хотите воспользоваться подготовленной демонстрацией, ознакомьтесь с нашим примером приложения на GitHub .

Предварительные условия

Чтобы поэкспериментировать с Gemini Nano, вам понадобится устройство серии Pixel 9. Прежде чем продолжить, убедитесь, что он у вас под рукой, и что вы вошли в систему только с той учетной записью, которую собираетесь использовать для тестирования.

  1. Присоединяйтесь к экспериментальной группе aicore в Google.
  2. Примите участие в программе тестирования Android AICore.

После выполнения этих действий имя приложения в магазине Play (в разделе «Управление приложениями и устройством») должно измениться с «Android AICore» на «Android AICore (бета-версия)».

Обновите APK-файлы и загрузите двоичные файлы

  1. Обновите APK-файл AICore :
    1. В правом верхнем углу коснитесь значка профиля.
    2. Нажмите «Управление приложениями и устройством» > «Управление».
    3. Нажмите Android AICore.
    4. Нажмите «Обновить», если обновление доступно.
  2. Обновите APK службы частных вычислений :
    1. В правом верхнем углу коснитесь значка профиля.
    2. Нажмите «Управление приложениями и устройством» > «Управление».
    3. Нажмите «Службы частных вычислений».
    4. Нажмите «Обновить», если обновление доступно.
    5. Проверьте версию на вкладке « Об этом приложении» и убедитесь, что версия приложения — 1.0.release.658389993 или выше.
  3. Перезагрузите устройство и подождите несколько минут, чтобы регистрация тестирования вступила в силу.
  4. Проверьте версию APK AICore в магазине Play (на вкладке «Об этом приложении») и убедитесь, что она начинается с 0. Thirdpartyeap.

Настроить градиент

Добавьте следующее в блок зависимостей в вашей конфигурации build.gradle :


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

В конфигурации build.gradle установите минимальную цель SDK на 31:

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

Получите AICore и запустите вывод

Создайте объект GenerationConfig , который имеет параметры для настройки свойств того, как модель должна выполнять логический вывод.

Параметры включают в себя:

  • Температура : контролирует случайность; более высокие значения увеличивают разнообразие
  • Top K : сколько токенов с самым высоким рейтингом следует учитывать.
  • Количество кандидатов : Максимальное количество ответов для возврата
  • Максимальное количество выходных токенов : длина ответа.
  • Worker Executor : Служба ExecutorService , в которой следует запускать фоновые задачи.
  • Исполнитель обратного вызова : Executor на котором должны быть вызваны обратные вызовы.

Котлин

val generationConfig = generationConfig {
  context = ApplicationProvider.getApplicationContext() // required
  temperature = 0.2f
  topK = 16
  maxOutputTokens = 256
}

Ява

GenerationConfig.Builder configBuilder = GenerationConfig.Companion.builder();
    configBuilder.setContext(context);
    configBuilder.setTemperature(0.2f);
    configBuilder.setTopK(16);
    configBuilder.setMaxOutputTokens(256);

Создайте необязательный downloadCallback . Это функция обратного вызова, которая используется для загрузки модели. Возвращаемые сообщения предназначены для целей отладки.

Создайте объект GenerativeModel с конфигурациями генерации и дополнительной загрузки, которые вы создали ранее.

Котлин

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

Ява

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

Запустите вывод с помощью модели и передайте приглашение. Поскольку GenerativeModel.generateContent() — это функция приостановки, нам необходимо убедиться, что она находится в правильной области сопрограммы для запуска.

Котлин

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

Ява

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. Для получения дополнительной информации ознакомьтесь со стратегиями подсказок Близнецов .

Для перезаписи:

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.