Comienza a usar el acceso experimental a Gemini Nano

El acceso experimental a Gemini Nano está diseñado para los desarrolladores que buscan probar la mejora de sus apps con capacidades de IA integradas en el dispositivo de vanguardia. En esta guía, se proporcionan detalles para experimentar con Gemini Nano usando el SDK de IA Edge de Google en tu propia app.

Obtén la app de ejemplo

Si quieres seguir una demostración preparada, consulta nuestra app de ejemplo en GitHub.

Requisitos previos

Para experimentar con Gemini Nano, necesitarás un dispositivo de la serie Pixel 9. Asegúrate de tener una a mano antes de continuar y de haber accedido solo con la cuenta que deseas usar para las pruebas.

  1. Únete al grupo de Google aicore-experimental
  2. Participa en el programa de prueba de Android AICore

Después de completar estos pasos, el nombre de la app en Play Store (en Administrar apps y dispositivos) debería cambiar de "Android AICore" a "Android AICore (beta)".

Actualiza APKs y descarga archivos binarios

  1. Actualiza el APK de AICore:
    1. En la esquina superior derecha, presiona el ícono de perfil.
    2. Presiona Administrar dispositivo y apps > Administrar.
    3. Presiona Android AICore.
    4. Presiona Actualizar si hay una actualización disponible.
  2. Actualiza el APK de Private Compute Service:
    1. En la esquina superior derecha, presiona el ícono de perfil.
    2. Presiona Administrar dispositivo y apps > Administrar.
    3. Presiona Private Compute Services.
    4. Presiona Actualizar si hay una actualización disponible.
    5. Verifica la versión en la pestaña Acerca de esta app y confirma que la versión de la app sea 1.0.release.658389993 o superior.
  3. Reinicia el dispositivo y espera unos minutos para que se aplique la inscripción en las pruebas.
  4. Consulta la versión del APK de AICore en Play Store (en la pestaña "Acerca de esta app") para confirmar que comienza con 0.thirdpartyeap.

Configura Gradle

Agrega lo siguiente al bloque de dependencias en tu configuración de build.gradle:


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

En la configuración de build.gradle, establece el SDK de destino mínimo en 31:

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

Obtén AICore y ejecuta la inferencia

Crea un objeto GenerationConfig, que tiene parámetros para personalizar las propiedades de cómo el modelo debe ejecutar la inferencia.

Entre los parámetros, se incluyen los siguientes:

  • Temperatura: Controla la aleatoriedad. Los valores más altos aumentan la diversidad.
  • Top K: Cantidad de tokens que se deben considerar entre los de mayor clasificación
  • Candidate Count: Cantidad máxima de respuestas que se devolverán
  • Cantidad máxima de tokens de salida: Longitud de la respuesta
  • Worker Executor: Es el ExecutorService en el que se deben ejecutar las tareas en segundo plano.
  • Callback Executor: Es el Executor en el que se deben invocar las devoluciones de llamada.

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

Crea un downloadCallback opcional. Esta es una función de devolución de llamada que se usa para la descarga del modelo. Los mensajes que se muestran son para fines de depuración.

Crea el objeto GenerativeModel con la generación y las configuraciones de descarga opcionales que creaste antes.

Kotlin

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

Java

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

Ejecuta la inferencia con el modelo y pasa tu instrucción. Como GenerativeModel.generateContent() es una función de suspensión, debemos asegurarnos de que esté en el alcance de corrutina correcto para lanzarla.

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

Si tienes comentarios sobre el SDK de Google AI Edge o cualquier otro comentario para nuestro equipo, envía un ticket.

Sugerencias para las instrucciones

El diseño de instrucciones es el proceso de crear instrucciones que produzcan una respuesta óptima de los modelos de lenguaje. Escribir instrucciones bien estructuradas es una parte esencial de garantizar respuestas precisas y de alta calidad desde un modelo de lenguaje. Incluimos algunos ejemplos para que comiences a usar Gemini Nano en casos de uso comunes. Consulta las estrategias de instrucciones de Gemini para obtener más información.

Para reescrituras:

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

Para casos de uso de Respuesta inteligente:

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:

Para la generación de resúmenes:

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.