Comienza a usar el acceso experimental a Gemini Nano

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

Obtén la app de ejemplo

Si deseas 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. Habilita el programa de pruebas 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 los APKs y descarga los objetos 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 sea 1.0.release.658389993 o una posterior.
  3. Reinicia el dispositivo y espera unos minutos hasta que se aplique la inscripción de prueba.
  4. Consulta la versión del APK de AICore en Play Store (en la pestaña "Acerca de esta app") para confirmar que comience con 0.thirdpartyeap.

Cómo configurar Gradle

Agrega lo siguiente al bloque de dependencias en la 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 objetivo de SDK 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: Indica cuántos tokens de los de clasificación más alta se deben considerar.
  • Cantidad de candidatos: Cantidad máxima de respuestas que se mostrarán
  • Cantidad máxima de tokens de salida: Es la longitud de la respuesta.
  • Ejecutor de trabajadores: Es el ExecutorService en el que se deben ejecutar las tareas en segundo plano.
  • Ejecutor de devolución de llamada: 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 de modelos. Los mensajes que se muestran son para depurar.

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

Kotlin

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

Java

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

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

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

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 activen 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 casos de uso comunes de Gemini Nano. Consulta las estrategias de indicaciones 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.