Apps inteligentes

Crea apps para Android seguras y con costos optimizados con Firebase AI Logic y Gemini Nano 4

Bocinas

  • Ankita Saxena

    Gerente de producto

  • Arthur Thompson

    Ingeniera de Relaciones con Desarrolladores

Acerca de

Acerca de la charla

Para compilar IA generativa lista para producción en apps para Android, no basta con conectarse a un LLM, sino que se necesitan controles de costos y seguridad de nivel empresarial. En esta sesión, descubre cómo Firebase AI Logic permite a los desarrolladores implementar experiencias de IA seguras y económicas a gran escala.

We will cover from security foundations and Firebase App Check, cost management, dynamic model routing to leveraging the multimodal capabilities.

Resumen

  • Firebase AI Logic enruta las solicitudes de los SDK de cliente directamente a las APIs de Gemini sin un backend personalizado. Las plantillas de instrucciones del servidor almacenan instrucciones en la nube para evitar las actualizaciones de la app.
  • La Verificación de aplicaciones de Firebase protege los recursos contra abusos, ya que garantiza que las solicitudes se originen en tu app. Integra proveedores de certificación, como Play Integrity y reCAPTCHA Enterprise, antes de aplicar las verificaciones.
  • Gemini Nano 4 ejecuta la inferencia integrada en el dispositivo para reducir la latencia y proteger la privacidad del usuario. Firebase AI Logic administra el enrutamiento de resguardo a la nube cuando es necesario.
  • Los límites de inversión y los activadores de Firebase AI Logic mantienen los costos de la nube predecibles. Firebase pausa automáticamente tu servicio de IA cuando se alcanza el 100% del gasto, y los activadores te permiten ejecutar funciones personalizadas antes o después de la generación.
  • La API de Gemini Live potencia la transmisión bidireccional de audio y video conversacional. El SDK de cliente administra las conexiones de WebSocket y los protocolos de transmisión subyacentes.

Gemini Notebook

Temas

  • firebase-ai-logic
  • gemini-nano
  • firebase-app-check
  • on-device-ai
  • optimización de costos
  • gemini-live-api

Transcripción

Descargar transcripción

Introducción y descripción general de Firebase AI Logic

  • Te damos la bienvenida a Android Dev Summit.

  • Soy Ankita Saxena, gerente de producto de Firebase.

  • Y yo soy Arthur Thompson, ingeniero de Relaciones con Desarrolladores del equipo de Firebase.

  • Hoy te mostraremos cómo agregar funciones generativas a tus apps para Android.

  • Bien.

  • ¿Qué es Firebase?

  • Levanten la mano quienes hayan oído hablar de Firebase.

  • Oh, veo muchas.

  • Muy bien.

  • Firebase es la plataforma de desarrollo de apps de Google.

  • Firebase proporciona una plataforma unificada que tiene más de 20 productos integrados, por lo que no tienes la experiencia fragmentada que obtendrías con cualquier software adicional.

  • Hablemos de los desafíos de enviar la IA generativa a las apps para dispositivos móviles.

  • Identificamos los tres desafíos principales.

  • Primero, las filtraciones de claves de API: se tarda minutos en extraerlas.

  • En segundo lugar, la actualización de los nombres de los modelos: siempre recomendamos a los desarrolladores que no los codifiquen en sus apps; de lo contrario, cada vez que llegue un modelo nuevo, tendrán que lanzar otra versión.

  • En tercer lugar, está la privacidad de los archivos: es muy importante que cualquier desarrollador o usuario de una app tenga sus datos protegidos y que se implementen las medidas de protección adecuadas para la app.

  • Presentar Firebase AI Logic como la solución clave para abordar los desafíos que analizamos

  • ¿Cuál es la propuesta de valor que te ofrece Firebase AI Logic?

  • Básicamente, nos encargamos de todo el backend personalizado complejo para que no tengas que desarrollarlo por tu cuenta.

  • En segundo lugar, con nuestros SDKs de cliente, puedes llamar a la API de Gemini de forma directa y segura desde tus apps para dispositivos móviles.

  • Veamos cómo funciona y comprendamos cómo fluye la arquitectura.

  • A la izquierda, tenemos los SDKs de cliente de Firebase.

  • Actualmente, admitimos una amplia variedad de SDK de cliente.

  • Quiero destacar que también admitimos Kotlin.

  • Cuando un desarrollador quiere realizar una acción de IA, el SDK envía la solicitud a Firebase AI Logic, que, luego, la enruta de forma segura a la API de Gemini Developer o a la API de Gemini de Agent Platform.

  • Básicamente, nos encargamos de todo el backend personalizado que creas hoy.

  • Y el valor que obtenemos de esto es que aceleras el tiempo de salida al mercado sin costo alguno.

Demostración de la app de FriendlyMeals

  • Ahora viene la parte divertida.

  • Esta será una demostración de la app de FriendlyMeals.

  • Por cierto, usaremos la misma app para las demostraciones restantes de esta sesión, así que no dudes en descargarla.

  • Puedes escanearlo con el código QR que aparece aquí.

  • Veamos la demostración.

  • Básicamente, la app de FriendlyMeals te ayuda a identificar recetas según los ingredientes que ingreses.

  • Entonces, en este flujo de trabajo, puedes ver las dos formas de, básicamente, capturar esos ingredientes.

  • Primero, ingresas los ingredientes que tienes.

  • Segundo, toma una foto de los ingredientes.

  • Voy a usar el primer flujo de trabajo, que consiste en ingresar los ingredientes.

  • Eso es todo lo que pude encontrar en mi refrigerador.

  • Mientras se genera la receta, quiero destacar algunos aspectos.

  • De forma interna, aquí llamamos a los modelos de Gemini.

  • Para este caso de uso específico, llamaremos a tres modelos Gemini 3.8 Flash.

  • Si miras la parte superior, la imagen, esa en realidad usa el modelo Gemini Nano Banana, que es Nano Banana 2.1, la versión más reciente.

  • Antes de pasar al código, quiero reforzar la propuesta de valor que obtienes a través de Firebase AI Logic.

  • El primero son los SDK sin servidores.

  • Quieres agregar una función de IA, pero no quieres tener que configurar un backend.

  • Ahí es donde entran en juego nuestros SDKs del cliente.

  • Llamas directamente a Gemini desde tu app para Android.

  • La segunda son las funciones de seguridad integradas y sólidas.

  • Por lo tanto, en tus llamadas a Gemini, puedes aprovechar funciones como la Verificación de aplicaciones de Firebase, así como las plantillas de instrucciones del servidor y otras, y hablaremos más sobre esas funciones de seguridad un poco más adelante.

  • En tercer lugar, se encuentra la compatibilidad con funciones avanzadas, como las entradas multimodales y la transmisión.

  • Supongamos que quieres crear una app que agregue una función de IA sencilla para generar una historia sobre una mochila mágica.

    import com.google.firebase.Firebase
    import com.google.firebase.ai.ai
    
    @Composable
    fun MagicBackpackGenerator() {
        var output by remember { mutableStateOf("") }
    
        LaunchedEffect(Unit) {
    
           val model=Firebase.ai.generativeModel("gemini-4-argon")
    
            val response = model.generateContent("Write a story about a magic backpack")
    
            output = response.text.toString()
    
        }
        MagicBackpackUI(output)
    }
  • Solo se necesitan estos tres pasos sencillos para agregar esa función potenciada por IA y tenerla lista para la producción.

  • Como Firebase AI Logic facilita tanto agregar funciones potenciadas por IA a tu app, la primera pregunta que deberías hacerte es cómo protegerás esta función.

Seguridad y administración de instrucciones

  • Analicemos los detalles de seguridad, comenzando por la Verificación de aplicaciones de Firebase.

  • La Verificación de aplicaciones de Firebase te ayuda a proteger tus datos y a tus usuarios, y a controlar quién tiene acceso a tus recursos de API, ya que certifica que las solicitudes provienen de tu app.

  • Es una capa de seguridad adicional que ayuda a evitar que se abuse de tu app.

  • Antes de comenzar a escribir código, debes seguir algunos pasos en Firebase console.

  • En Verificación de aplicaciones, en Firebase console, registra tu app para Android y agrega los proveedores de certificación correspondientes.

  • Por ejemplo, Play Integrity o reCAPTCHA Enterprise.

  • Ten en cuenta que, una vez que configures la Verificación de aplicaciones, debes comenzar con el modo sin aplicación forzosa.

  • De esta manera, permites que tu app proporcione telemetría para asegurarte de que todas tus apps reciban llamadas a la API exitosas a tu backend antes de aplicar la política.

  • Una vez que veas que la telemetría se recibe correctamente, puedes aplicar la Verificación de aplicaciones. En ese momento, se rechazarán todas las solicitudes que no tengan un token válido certificado por hardware.

  • Este es el código para implementar la Verificación de aplicaciones. Así se ve.

    class FireTravelApp : Application() {
       lateinit var appContainer: AppContainer
           private set
       override fun onCreate() {
           super.onCreate()
           if (BuildConfig.DEBUG) {
               Firebase.appCheck.installAppCheckProviderFactory(
                   DebugAppCheckProviderFactory.getInstance()
               )
           } else {
               Firebase.appCheck.installAppCheckProviderFactory(
                   PlayIntegrityAppCheckProviderFactory.getInstance()
               )
           }
           appContainer = AppContainer(this)
       }
    }
  • En la clase de tu aplicación, instala el proveedor de la Verificación de aplicaciones.

  • En las etapas de desarrollo, te recomendamos usar el proveedor de depuración y, luego, cuando tengas todo listo para pasar a producción, cambiar a Play Integrity o reCAPTCHA Enterprise.

  • Sin embargo, recuerda siempre que debes configurar la Verificación de aplicaciones antes de realizar cualquier otra llamada de Firebase.

  • Cuando crean funciones potenciadas por IA, los desarrolladores suelen codificar las instrucciones directamente en el código de sus apps, pero esto genera dos grandes desafíos.

  • Primero, si se requiere alguna improvisación para el mensaje, debes enviar la actualización completa.

  • En segundo lugar, quien desempaquete tu app tendrá acceso a tu ingeniería de instrucciones patentada.

  • Para resolver este problema, Firebase AI Logic usa plantillas de instrucciones del servidor.

  • En lugar de mantener tus instrucciones en el dispositivo, se almacenan en la nube.

  • Esta es la vista de las plantillas de instrucciones del servidor en Firebase console.

  • Las plantillas se crean en formato .prompt.

    ---
    model: 'gemini-3-flash'
    input:
      schema:...
    tools:...
    ---
    {{role "system"}}
    You're a storyteller that tells nice and joyful stories with happy endings.
    
    {{role "user"}}
    Create a story about {{topic}} with the length of {{length}} words in the {{language}} language.
  • Puedes establecer el nombre del modelo aquí.

  • Puedes actualizarla en cualquier momento.

  • No es necesario que envíes la actualización completa de la app.

  • También puedes actualizar las instrucciones del sistema, y también se necesita un esquema JSON estricto para la entrada y la salida.

  • Una vez más, no es necesario lanzar la app.

  • Como se encuentra en la nube, puedes ajustar una instrucción o cambiar un modelo de forma instantánea.

  • Y así se ve el código en Kotlin.

    val generativeModel = Firebase.ai.templateGenerativeModel()
    
    val response = generativeModel.generateContent("storyteller-v1",
        mapOf(
            "topic" to topic,
            "length" to length,
            "language" to language
        )
    )
    
    output.value = response.text
  • Cabe mencionar que las plantillas de instrucciones del servidor están en versión preliminar pública.

  • También puedes implementar el modo de solo autenticación.

  • Se usan tokens de usuario de Firebase Auth para autorizar la solicitud.

  • Para completar nuestras funciones de seguridad y bloquear por completo tu aplicación, también puedes usar el modo de solo plantilla directamente desde Firebase console.

Panel de supervisión y telemetría de IA

  • Una vez que tu app esté publicada, es posible que quieras obtener visibilidad sobre su comportamiento.

  • En la pestaña AI Monitoring, con un solo clic, puedes habilitar la Supervisión de la IA y configurar la tasa de muestreo.

  • Firebase capturará automáticamente las métricas, las latencias y los recuentos de tokens sin que tengas que escribir un código de estadísticas personalizado para eso.

  • Un aviso para mencionar los dos modos que acabamos de ver, todos están disponibles en la misma ventana.

  • Una vez que habilites la Supervisión de la IA en Firebase console, esta se incorporará directamente en el panel de Supervisión de la IA.

  • Puedes observar tu latencia del percentil 95, detectar aumentos repentinos de errores y hacer un seguimiento del consumo de tokens en diferentes modalidades, como texto, imágenes y audio.

  • También puedes inspeccionar el visor de Trace para ver ciertos seguimientos.

  • En este caso, como se muestra el modelo que estamos usando, puedes ver la latencia y la tasa de éxito.

Inferencia híbrida con Gemini Nano

  • En Firebase console, donde puedes obtener toda la telemetría y la visibilidad de cómo funciona tu función potenciada por IA.

  • En ese caso, supongamos que ves un aumento repentino en el uso de tokens o en la latencia. El enfoque híbrido es una forma de reducir esos costos o esa latencia.

  • Y, a medida que las funciones potenciadas por IA generativa se convierten en una parte clave de nuestras apps, depender al 100% solo de la nube probablemente no sea la opción correcta.

  • Por lo tanto, con el uso de Nano 4, los modelos integrados en el dispositivo en Android, se desbloquean tres beneficios principales, con los que todos podrían estar familiarizados.

  • El primero es el modo sin conexión.

  • Por lo tanto, ya sea que estés en una conferencia grande, en un avión o en el metro, la función potenciada por IA seguirá funcionando.

  • El costo

  • Como la inferencia se ejecuta en el dispositivo, puedes agregar estas funciones y no tienes que preocuparte por el aumento de los costos de tu función potenciada por IA.

  • Y el tercero es la privacidad de los datos.

  • Por lo tanto, si se trata de datos sensibles, puedes garantizarles a tus usuarios que ninguna de las inferencias saldrá de tu dispositivo.

  • Por lo tanto, con Firebase AI Logic, puedes establecer estos modos de inferencia y tener estrategias de enrutamiento claras, como PREFER_ON_DEVICE, PREFER_IN_CLOUD o ONLY_ON_DEVICE.

  • Cuando eliges ONLY_ON_DEVICE, el SDK aprovecha directamente el modelo integrado en el dispositivo y omite la nube por completo.

  • Cambiemos al teléfono.

  • Por lo tanto, una vez más, iremos a FriendlyMeals y veremos algunas de las funciones integradas en el dispositivo.

  • Lo primero que probaremos es crear una receta basada en algunos de los ingredientes que podrían estar disponibles en nuestro refrigerador.

  • Antes, vieron que Ankita usó el método manual, en el que solo escribió los ingredientes y, luego, generó la receta.

  • Por lo tanto, probemos con otro método.

  • Tomemos este refrigerador muy real, que no se generó con IA.

  • Hay muchas aceitunas en este refrigerador, así que veamos qué tipo de receta se genera aquí.

  • Quiero destacar un par de cosas.

  • Una es que la imagen nunca salió del dispositivo.

  • Nano by Gemma analizó la imagen de forma local…

  • Nano 4.

  • Y, en segundo lugar, la velocidad con la que se obtuvo la respuesta.

  • Se generaron los ingredientes.

  • Por lo tanto, obtienes los dos beneficios.

  • Los datos no salen del dispositivo, pero también hay una reducción significativa de la latencia.

  • Muy bien, veamos qué receta obtenemos para el refrigerador lleno de aceitunas.

  • Por lo tanto, esta vez, usaremos la nube.

  • Por lo tanto, tomaremos los ingredientes que se identificaron en el refrigerador y los enviaremos a la nube, todo con Firebase AI Logic, para generar una receta.

  • No vi salmón en el refrigerador, pero sí en la receta.

  • Pero volvamos a las diapositivas, por favor.

  • Como vimos en la demostración, cambiar entre un modelo local y uno en la nube es bastante sencillo.

  • Actualmente, Firebase AI Logic habilita la inferencia con un enrutamiento básico basado en la disponibilidad de la red.

  • Para administrar esta inferencia, puedes pensar en ella como barandillas.

  • Por lo tanto, la arquitectura incluye compatibilidad integrada para funciones como esquemas de entrada y salida, y multimodales, así como integración completa con Gemma, perdón, con Gemini Nano 4.

  • Veamos cómo se implementan estas protecciones en la práctica.

  • Por lo tanto, el enrutamiento híbrido no requiere que crees un middleware complejo ni que crees mucha de la lógica de resguardo por tu cuenta.

  • En cuanto al código, solo es un parámetro adicional.

  • Pasas un parámetro onDeviceConfig para establecer el modo que prefieras.

    import com.google.firebase.Firebase
    import com.google.firebase.ai.ai
    
    @Composable
    fun MagicBackpackGenerator() {
        var output by remember { mutableStateOf("") }
    
        LaunchedEffect(Unit) {
    
            val model = Firebase.ai.generativeModel(modelName = "gemini-3.8-flash",
    onDeviceConfig = OnDeviceConfig(mode = InferenceMode.PREFER_ON_DEVICE))
    
           val response = model.generateContent("Write a story about a magic backpack")
    
            output = response.text.toString()
    
        }
        MagicBackpackUI(output)
    }
  • En este caso, el SDK probará primero el modelo local y, si no está disponible, recurrirá automáticamente a la nube.

Optimización de costos y activadores de AI Logic

  • Ahora que ya vimos cómo compilar apps seguras y aprovechar los modelos integrados en el dispositivo, hablemos de la optimización de costos.

  • Las funciones generativas pueden escalar con rapidez, al igual que tu factura de Cloud.

  • Por lo tanto, debemos contar con las protecciones adecuadas para asegurarnos de tener los controles de infraestructura proactivos y las funciones automatizadas correctos que puedan ayudar a que tus presupuestos sean predecibles y tus aplicaciones sean eficientes desde el punto de vista financiero.

  • Si bien Arthur acaba de destacar que la inferencia integrada en el dispositivo es completamente gratuita, siempre habrá situaciones que requieran tareas de razonamiento complejas y que también requieran un resguardo y un enrutamiento a la nube.

  • Cuando se producen esas llamadas a la nube, necesitas protecciones para mantener tu presupuesto predecible.

  • Por ese motivo, presentamos los límites de inversión de Firebase.

  • Con los límites de inversión, puedes tener un control más detallado del costo de tus apps.

  • Por lo tanto, en lugar de un parámetro de configuración de presupuesto genérico para todo el proyecto, con alertas de presupuesto que solo te envían un correo electrónico, puedes establecer un límite de presupuesto específico para servicios individuales, como Firebase AI Logic.

  • Cuando tu inversión alcance el 100%, Firebase pausará automáticamente el servicio de IA para evitar que se generen facturas descontroladas.

  • Más allá de los límites de inversión simples, existen varias estrategias avanzadas de optimización de costos.

  • La que nos gustaría destacar hoy son los activadores de Firebase AI Logic.

  • ¿Qué sucede si necesitas una lógica personalizada en el medio?

  • Esos son los activadores de Firebase AI Logic.

  • Puedes ejecutar una función antes o después de generar contenido.

  • Úsala para verificar al usuario, filtrar la entrada, agregar contexto y también ajustar la respuesta.

API de Gemini Live y capacidades del modelo

  • Ahora que ya abordamos la optimización de costos y la seguridad, cambiemos de tema para hablar de la capacidad del modelo y ver qué ofrece Firebase AI Logic.

  • Para potenciar estas experiencias multimodales, Firebase AI Logic proporciona un catálogo completo de modelos y herramientas listos para producción.

  • Para razonamiento, texto, código y contenido multimedia de alta velocidad, puedes usar Gemini 4 Argon, Gemini 3.1 Pro, Gemini 3.8 Flash y otros.

  • También puedes conectar estos modelos a datos del mundo real con la fundamentación de la Búsqueda y Maps.

  • Por último, para la voz, proporcionamos generación de audio de Gemini Live y texto a voz natural.

  • Cambiemos al teléfono una vez más.

  • Aquí tenemos lo dulce y lo salado.

  • Lo siento, esa no es la respuesta correcta.

  • Aquí tenemos nuestra tostada rápida con queso y kétchup para nuestra receta.

  • Suena delicioso.

  • Lo primero que queremos ver es la API de Live.

  • En este caso, podremos usar el video que se muestra y puedo decir: "Hey Gemini, could you tell me what's on the table for the ingredients?"

  • Según la imagen de la pantalla de tu laptop, los ingredientes que tienes son pan, queso cheddar y kétchup.

  • Bien.

  • ¿Puedo comenzar con el primer paso de la receta?

  • Sí.

  • El primer paso es precalentar el horno tostador o el asador a fuego medio-alto.

  • Gracias.

  • Bien.

  • En ese caso, se trataba de la API de Live, y esa conversación permanecería abierta hasta que la cerrara de forma efectiva.

  • La otra que me gustaría mostrar es la de voz a texto, o texto a voz, perdón.

  • Y con la función de texto a voz, en este ejemplo, tenemos las instrucciones de la receta.

  • Por lo tanto, en lugar de tener que leerlo, puedo presionar "Generar" o "Hablar", y se enviará el texto de las instrucciones al modelo de texto a voz.

  • Generará el audio y lo enviará de vuelta al dispositivo.

  • Puedo reproducirlo, almacenarlo en caché para más tarde y se reproducirá como vemos aquí.

  • 1.

  • Precalienta el horno tostador o el asador a fuego medio-alto.

  • 2.

  • Coloca dos rebanadas de pan en una bandeja para hornear o en la bandeja de la tostadora.

  • Bien.

  • Es genial, ¿no?

  • Por lo tanto, Firebase AI Logic nos permite implementar este tipo de funciones geniales con solo unas pocas líneas de código.

  • Volvamos a las diapositivas.

  • Ahora que vimos en la demostración cómo funciona la API de Gemini Live, ¿qué pasa si quieres crear una experiencia de conversación sin usar las manos?

  • Aquí es donde entra en juego la API de Gemini Live, que te permite crear conversaciones de voz bidireccionales.

  • Tu app para Android puede transmitir audio del micrófono y fotogramas de la cámara en vivo, y recibir una voz natural, de baja latencia y hablada en tiempo real.

  • En Kotlin, la configuración parece bastante familiar.

    val model = Firebase.ai.liveModel(
        modelName = "gemini-3.1-flash-live-preview",
        generationConfig = liveGenerationConfig {
            responseModality = ResponseModality.AUDIO
       },
       systemInstruction = "Your main job is to change the color...",
       tools = listOf(Tool.functionDeclarations(listOf(changeColorFunction)))
    )
    
    val session = model.connect(::handler)
    
    session.startAudioConversation(::handler)
    
    session.stopAudioConversation()
  • Crea una instancia de un modelo de Live configurado para respuestas de audio y conéctate a la sesión con un controlador de transmisión.

  • El punto principal que nos gustaría destacar aquí es que el SDK controla todo lo relacionado con WebSocket y los protocolos de transmisión de forma interna.

  • Por lo tanto, no tienes que programarlo, ¿verdad?

  • Sigue escribiendo líneas.

Habilidades de Firebase para agentes y conclusiones clave

  • Para finalizar nuestras demostraciones y mirar hacia el futuro del desarrollo de apps, nos gustaría destacar una herramienta potente para tu flujo de trabajo: las habilidades de Firebase para agentes.

    # Execute to add agent capabilities to your workspace
    npx skills add firebase/agent-skills
  • Además, para quienes usan Antigravity y Android Studio, ya integramos Firebase AI Logic directamente en el flujo de incorporación.

  • Para terminar, les dejo tres conclusiones clave: comiencen a crear, apóyense en las herramientas de producción desde el principio, como las de seguridad que vimos hoy, y, por último, usen las habilidades de los agentes siempre que puedan.

  • Gracias.

Código

Fragmentos de código

Fragmento de Kotlin en el minuto 5:14 de "Demostración de la app de FriendlyMeals"
import com.google.firebase.Firebase
import com.google.firebase.ai.ai

@Composable
fun MagicBackpackGenerator() {
    var output by remember { mutableStateOf("") }

    LaunchedEffect(Unit) {

       val model=Firebase.ai.generativeModel("gemini-4-argon")

        val response = model.generateContent("Write a story about a magic backpack")

        output = response.text.toString()

    }
    MagicBackpackUI(output)
}
Fragmento de Kotlin en el minuto 07:07 de "Seguridad y administración de instrucciones"
class FireTravelApp : Application() {
   lateinit var appContainer: AppContainer
       private set
   override fun onCreate() {
       super.onCreate()
       if (BuildConfig.DEBUG) {
           Firebase.appCheck.installAppCheckProviderFactory(
               DebugAppCheckProviderFactory.getInstance()
           )
       } else {
           Firebase.appCheck.installAppCheckProviderFactory(
               PlayIntegrityAppCheckProviderFactory.getInstance()
           )
       }
       appContainer = AppContainer(this)
   }
}
Fragmento de YAML en el minuto 08:18 de "Seguridad y administración de instrucciones"
---
model: 'gemini-3-flash'
input:
  schema:...
tools:...
---
{{role "system"}}
You're a storyteller that tells nice and joyful stories with happy endings.

{{role "user"}}
Create a story about {{topic}} with the length of {{length}} words in the {{language}} language.
Fragmento de Kotlin en el minuto 8:54 de "Seguridad y administración de instrucciones"
val generativeModel = Firebase.ai.templateGenerativeModel()

val response = generativeModel.generateContent("storyteller-v1",
    mapOf(
        "topic" to topic,
        "length" to length,
        "language" to language
    )
)

output.value = response.text
Fragmento de Kotlin en el minuto 15:09 de "Inferencia híbrida con Gemini Nano"
import com.google.firebase.Firebase
import com.google.firebase.ai.ai

@Composable
fun MagicBackpackGenerator() {
    var output by remember { mutableStateOf("") }

    LaunchedEffect(Unit) {

        val model = Firebase.ai.generativeModel(modelName = "gemini-3.8-flash",
onDeviceConfig = OnDeviceConfig(mode = InferenceMode.PREFER_ON_DEVICE))

       val response = model.generateContent("Write a story about a magic backpack")

        output = response.text.toString()

    }
    MagicBackpackUI(output)
}
Fragmento de Kotlin en el minuto 21:02 de "API de Gemini Live y capacidades del modelo"
val model = Firebase.ai.liveModel(
    modelName = "gemini-3.1-flash-live-preview",
    generationConfig = liveGenerationConfig {
        responseModality = ResponseModality.AUDIO
   },
   systemInstruction = "Your main job is to change the color...",
   tools = listOf(Tool.functionDeclarations(listOf(changeColorFunction)))
)

val session = model.connect(::handler)

session.startAudioConversation(::handler)

session.stopAudioConversation()
Fragmento de shell en el minuto 21:30 de "Habilidades de Firebase para agentes y conclusiones clave"
# Execute to add agent capabilities to your workspace
npx skills add firebase/agent-skills