Actualiza de forma dinámica tu app de Vertex AI en Firebase con Firebase Remote Config

Cuando llamas a Gemini API desde tu app con un SDK de Vertex AI in Firebase, tu solicitud contiene una serie de parámetros que controlan las respuestas de la IA generativa. Por lo general, incluyen el nombre del modelo, la configuración de generación de modelos (tokens máximos, temperatura, etc.), la configuración de seguridad, las instrucciones del sistema y los datos de instrucciones.

En la mayoría de los casos, querrás cambiarlos según sea necesario o a pedido para una serie de situaciones:

  • Actualiza tu modelo de IA generativa sin lanzar una app nueva. Puedes actualizar a versiones de modelos más recientes y estables antes de que las versiones anteriores se den de baja, cambiar a modelos de menor costo o mayor rendimiento según las necesidades y los atributos de tus usuarios, o implementar de forma condicional los modelos más recientes y mejores en segmentos de usuarios específicos (como verificadores beta).
  • Establece la ubicación desde la que accedes al modelo para que esté más cerca de tus usuarios.
  • Realiza pruebas A/B de diferentes instrucciones y mensajes del sistema y, luego, implementa de forma gradual los valores del experimento ganador para tus usuarios.
  • Usa marcas de función para ocultar o exponer con rapidez las funciones de IA generativa en tu app.

Firebase Remote Config hace todo esto y mucho más, lo que te permite actualizar los valores de los parámetros según sea necesario y de forma condicional para instancias de apps que coincidan con las características que estableciste en la consola de Firebase, sin lanzar una versión nueva de la app.

En esta guía de solución, se proporcionan casos de uso recomendados específicos y se describe cómo agregar Remote Config a tu app de IA generativa.

Ir a la implementación del código

¿Por qué usar Firebase Remote Config con tu app?

Firebase Remote Config te permite ajustar de forma dinámica el comportamiento de tu app sin necesidad de actualizarla. Esto es especialmente potente para las apps que usan IA generativa, en las que la iteración rápida y el ajuste fino son fundamentales.

Casos de uso esenciales de Remote Config con apps de IA generativa

Recomendamos usar Remote Config con Vertex AI in Firebase para los siguientes casos de uso esenciales:

  • Actualiza a la versión más reciente del modelo sin actualizar la app: Usa los parámetros Remote Config para cambiar el nombre del modelo según sea necesario, de modo que puedas actualizar a la versión más reciente de tu modelo Gemini preferido en cuanto esté disponible.
  • Actualiza las instrucciones del sistema y la configuración de seguridad sin actualizar la app: Almacena las instrucciones del sistema y la configuración de seguridad en los parámetros de Remote Config para asegurarte de que puedas cambiarlos a pedido si descubres problemas después de la implementación.
  • Reduce el riesgo y aplica la seguridad de la IA: Usa los lanzamientos de Remote Config para lanzar cambios de IA generativa de forma segura y gradual a tus usuarios de iOS y Android.

Casos de uso avanzados y recomendados para Remote Config con apps de IA generativa

Después de instrumentar tu app con Remote Config y Google Analytics, puedes explorar casos de uso avanzados:

  • Establece la ubicación según la ubicación del cliente: Usa condiciones Remote Config para configurar la ubicación del modelo según la ubicación detectada del cliente.
  • Experimenta con diferentes modelos: Prueba y cambia rápidamente entre varios modelos de IA generativa, o incluso implementa diferentes modelos en diferentes segmentos de usuarios, para encontrar el que mejor se adapte a tu caso de uso específico.
  • Optimiza el rendimiento del modelo: Ajusta los parámetros del modelo, como la instrucción del sistema, la cantidad máxima de tokens de salida, la temperatura y otros parámetros de configuración.
  • Usa diferentes instrucciones del sistema, mensajes y configuración del modelo según los atributos del cliente: Cuando usas Remote Config con Google Analytics, puedes crear condiciones basadas en atributos del cliente o públicos personalizados y establecer parámetros diferentes en función de estos atributos.

    Por ejemplo, si usas la IA generativa para proporcionar asistencia técnica en tu app, te recomendamos configurar instrucciones del sistema específicas para la plataforma de la app a fin de garantizar que se proporcionen instrucciones precisas a los usuarios de plataformas web, de iOS y de Android.

  • Personaliza las experiencias para cada usuario: Usa la personalización de Remote Config para determinar automáticamente la configuración óptima de IA generativa para cada usuario.

  • Controla los costos: Ajusta de forma remota a qué modelos de IA generativa se llaman y con qué frecuencia se usan, y configura de forma dinámica los valores máximos de tokens de salida en función del público de usuarios para reducir costos innecesarios.

  • Optimiza la experiencia y los resultados de la app: Usa A/B Testing con Remote Config en tus apps para iOS, Android y Flutter para probar los cambios en los parámetros de IA generativa en distintos segmentos de usuarios y ver cómo afectan a las métricas clave, como la retención y los ingresos.

Si instrumentas tu app de IA generativa con Firebase Remote Config, puedes crear aplicaciones potenciadas por IA flexibles, seguras y rentables a la vez que creas experiencias encantadoras para tus usuarios.

Agrega Firebase Remote Config a tu app

En esta guía de solución, usarás Firebase Remote Config para actualizar de forma dinámica los parámetros de tu app para Android que usan el SDK de Vertex AI in Firebase. Aprenderás a hacer lo siguiente:

  • Recupera y activa parámetros, como nombres de modelos e instrucciones del sistema, desde Firebase Remote Config.
  • Actualiza tus llamadas a Gemini API para usar los parámetros recuperados de forma dinámica, lo que te permite cambiar entre diferentes modelos o modificar las instrucciones del sistema sin actualizar la app.
  • Controla los parámetros de forma remota y ajusta el comportamiento y las capacidades del modelo según sea necesario.

Requisitos previos

En esta guía, se da por sentado que estás familiarizado con el uso de JavaScript para desarrollar apps web. Esta guía no depende del framework. Antes de comenzar, asegúrate de haber hecho lo siguiente:

  • Completa la guía de introducción del SDK de Vertex AI in Firebase. Asegúrate de haber realizado todo lo siguiente:

    1. Configura un proyecto de Firebase nuevo o existente, incluido el uso del plan de precios Blaze y la habilitación de las APIs requeridas.
    2. Conecta tu app a Firebase, lo que incluye registrarla y añadir la configuración de Firebase a la app.
    3. Agrega el SDK y, luego, inicializa el servicio de Vertex AI y el modelo generativo en tu app.
  • Habilita Google Analytics en tu proyecto y agrega su SDK a tu app (obligatorio para la segmentación condicional, como la configuración del servicio y la ubicación del modelo según la ubicación del dispositivo del cliente).

Paso 1: Configura los valores de los parámetros en Firebase console

Crea una plantilla de Remote Config del cliente y configura los parámetros y valores para recuperar y usar en la app.

  1. Abre Firebase console y, desde el menú de navegación, expande Ejecutar y selecciona Remote Config.
  2. Asegúrate de que Cliente esté seleccionado en el selector Cliente/Servidor que se encuentra en la parte superior de la página Remote Config.
    • Si es la primera vez que usas plantillas de cliente de Remote Config, haz clic en Crear configuración. Aparecerá el panel Crea tu primer parámetro.
    • Si no es la primera vez que usas plantillas de Remote Config, haz clic en Agregar parámetro.
  3. Define los siguientes parámetros de Remote Config:

    Nombre del parámetro Descripción Tipo Valor predeterminado
    model_name Nombre del modelo. Para obtener listas actualizadas de los nombres de modelos que puedes usar en tu código, consulta Nombres de modelos disponibles. String gemini-1.5-flash
    system_instructions Las instrucciones del sistema son como un "preámbulo" que agregas antes de que el modelo se exponga a otras instrucciones del usuario final para influir en su comportamiento, según necesidades y casos de uso específicos. String You are a helpful assistant who knows everything there is to know about Firebase!
    prompt Mensaje predeterminado para usar con tu función de IA generativa. String I am a developer who wants to know more about Firebase!
    vertex_location De manera opcional, controla la ubicación para ejecutar el servicio Vertex AI y acceder a un modelo. Puedes establecer condiciones para configurar esta opción en función de la ubicación del cliente que detecta Google Analytics. String us-central1
  4. Cuando hayas terminado de agregar los parámetros, haz clic en Publicar cambios. Si esta no es una plantilla Remote Config nueva, revisa los cambios y vuelve a hacer clic en Publicar cambios.

Paso 2: Agrega y, luego, inicializa el SDK de Remote Config

Agrega y, luego, inicializa el SDK de Remote Config:

  1. Abre tu código en un editor de texto y, luego, importa Remote Config:

    import { getRemoteConfig } from 'firebase/remote-config';
    
  2. Dentro de tu función principal y después de que se inicialice la app de Firebase para el SDK de Vertex AI in Firebase, inicializa Remote Config:

      // Initialize Remote Config and get a reference to the service
      const remoteConfig = getRemoteConfig(app);
    
  3. Establece un intervalo de recuperación mínimo. En este ejemplo, el intervalo de recuperación predeterminado es de 3,600 segundos, pero te recomendamos que establezcas un intervalo de recuperación mínimo relativamente bajo en tu código durante el desarrollo.

    remoteConfig.settings.minimumFetchIntervalMillis = 3600000;
    

Paso 3: Configura los valores de los parámetros en la app

Debes configurar los valores de los parámetros predeterminados en la app en el objeto Remote Config, para que la app funcione antes de que se conecte al backend de Remote Config, si se interrumpe el acceso a la red del cliente o si no hay valores configurados en el backend.

En este ejemplo, estableces manualmente los valores predeterminados para el nombre del modelo, las instrucciones del sistema, el mensaje para el usuario y la ubicación Vertex AI:

// Set default Remote Config parameter values
remoteConfig.defaultConfig = {
  model_name: 'gemini-1.5-flash',
  system_instructions:
    'You are a helpful assistant who knows everything there is to know about Firebase!',
  prompt: 'I am a developer who wants to know more about Firebase!',
  vertex_location: 'us-central1',
};

Paso 4: Recupera y activa valores

  1. Agrega getValue y fetchAndActivate a tus importaciones:

    import { getValue, fetchAndActivate } from 'firebase/remote-config';
    
  2. Después del código que agregaste para configurar los valores Remote Config predeterminados, recupera y activa la configuración y, luego, asigna valores a las constantes modelName, systemInstructions, prompt y vertexLocation.

    // Fetch and activate Remote Config.
    try {
      await fetchAndActivate(remoteConfig);
    } catch(err) {
      console.error('Remote Config fetch failed', err);
    }
    
    console.log('Remote Config fetched.');
    
    // Assign Remote Config values.
    const modelName = getValue(remoteConfig, 'model_name').asString();
    const systemInstructions = getValue(remoteConfig, 'system_instructions').asString();
    const prompt = getValue(remoteConfig, 'prompt').asString();
    const vertexLocation = getValue(remoteConfig, 'vertex_location').asString();
    

Paso 5: Actualiza las llamadas a Vertex AI para usar valores de Remote Config

Ahora que Remote Config está completamente configurado, actualiza tu código para reemplazar los valores codificados por valores provenientes de Remote Config. Por ejemplo, si usas el ejemplo que se usa en Comienza a usar la API de Gemini con los SDK de Vertex AI en Firebase, lo actualizarías de la siguiente manera:

// Initialize FirebaseApp
const firebaseApp = initializeApp(firebaseConfig);

// Initialize the Vertex AI service
// Optionally specify a location in which to run the service and access the model
const vertexAI = getVertexAI(firebaseApp, { location: vertexLocation });

// Initialize the generative model with a model that supports your use case
// Gemini 1.5 models are versatile and can be used with all API capabilities
const model = getGenerativeModel(vertexAI, {
  model: modelName,
  systemInstruction: systemInstruction
});

// Wrap in an async function so you can use await
async function run() {
  // Provide a prompt that contains text
  const userPrompt = prompt;

  // To generate text output, call generateContent with the text input
  const result = await model.generateContent(userPrompt);

  const response = result.response;
  const text = response.text();
  console.log(text);
}

Paso 6: Ejecuta la app

Ejecuta la app y verifica que funcione. Realiza cambios en la configuración desde la página Remote Config en Firebase console, publícalos y verifica el resultado.

Próximos pasos