Opciones de configuración para experiencias híbridas en apps para Android


En esta página, se describen las siguientes opciones de configuración para las experiencias híbridas:

Asegúrate de haber completado la guía de introducción para crear experiencias híbridas.

Establece un modo de inferencia

En los ejemplos de la guía de introducción, se usa el modo PREFER_ON_DEVICE, pero este es solo uno de los cuatro modos de inferencia disponibles.

Estos son los modos de inferencia disponibles:

  • PREFER_ON_DEVICE: Intenta usar el modelo integrado en el dispositivo si está disponible y admite el tipo de solicitud. De lo contrario, registra un error en el dispositivo y, luego, recurre automáticamente al modelo alojado en la nube.

    Kotlin

    val config = OnDeviceConfig(mode = InferenceMode.PREFER_ON_DEVICE)
    

    Java

    InferenceMode mode = InferenceMode.PREFER_ON_DEVICE;
    OnDeviceConfig config = new OnDeviceConfig(mode);
    
  • ONLY_ON_DEVICE: Intenta usar el modelo integrado en el dispositivo si está disponible y admite el tipo de solicitud. De lo contrario, arroja una excepción.

    Kotlin

    val config = OnDeviceConfig(mode = InferenceMode.ONLY_ON_DEVICE)
    

    Java

    InferenceMode mode = InferenceMode.ONLY_ON_DEVICE;
    OnDeviceConfig config = new OnDeviceConfig(mode);
    
  • PREFER_IN_CLOUD: Intenta usar el modelo alojado en la nube si el dispositivo está en línea y si el modelo está disponible. Si el dispositivo no tiene conexión, recurre al modelo integrado en el dispositivo. En todos los demás casos de falla, arroja una excepción.

    Kotlin

    val config = OnDeviceConfig(mode = InferenceMode.PREFER_IN_CLOUD)
    

    Java

    InferenceMode mode = InferenceMode.PREFER_IN_CLOUD;
    OnDeviceConfig config = new OnDeviceConfig(mode);
    
  • ONLY_IN_CLOUD: Intenta usar el modelo alojado en la nube si el dispositivo está en línea y si el modelo está disponible. De lo contrario, arroja una excepción.

    Kotlin

    val config = OnDeviceConfig(mode = InferenceMode.ONLY_IN_CLOUD)
    

    Java

    InferenceMode mode = InferenceMode.ONLY_IN_CLOUD;
    OnDeviceConfig config = new OnDeviceConfig(mode);
    

Determina si se usó la inferencia integrada en el dispositivo o en la nube

Si tu modo de inferencia es PREFER_ON_DEVICE o PREFER_IN_CLOUD, puede ser útil saber qué modo se usó para las solicitudes dadas. Esta información se proporciona en la propiedad inferenceSource de cada respuesta.

Cuando accedas a esta propiedad, el valor que se mostrará será ON_DEVICE o IN_CLOUD.

Kotlin

// ...

print("You used: ${result.response.inferenceSource}")

print(result.response.text)

Java

// ...

System.out.println("You used: " + result.getResponse().getInferenceSource());

System.out.println(result.getResponse().getText());

Especifica un modelo para usar

Haz clic en tu proveedor de Gemini API para ver el contenido y el código específicos del proveedor en esta página.

Puedes especificar un modelo para usar cuando crees la instancia de generativeModel (Kotlin | Java).

  • Especifica un modelo alojado en la nube:

    • Si tu modo de inferencia es PREFER_ON_DEVICE, PREFER_IN_CLOUD o ONLY_IN_CLOUD, debes especificar de forma explícita un modelo alojado en la nube para usarlo. El SDK no tiene un modelo predeterminado alojado en la nube.

    • Busca nombres de modelos para todos los modelos de Gemini alojados en la nube compatibles.

  • Especifica un modelo integrado en el dispositivo:

    • Si tu modo de inferencia es PREFER_ON_DEVICE, PREFER_IN_CLOUD o ONLY_ON_DEVICE, puedes especificar de forma opcional en onDeviceConfig una "categoría" de modelo integrado en el dispositivo para usar. Las categorías son una combinación de la etapa de lanzamiento y las características de rendimiento.

    • A continuación, se indican los valores de categoría admitidos.
      AICore selecciona automáticamente el modelo integrado en el dispositivo que cumple con las condiciones de la categoría especificada y que es compatible con el dispositivo. Por ejemplo, si especificas PREVIEW y el dispositivo es un Pixel 9, es probable que se seleccione automáticamente Gemini Nano 4 Full [versión preliminar] (nano-v4-full).

      • STABLE: Es el modelo integrado en el dispositivo estable más reciente.

        • Se probó por completo y está disponible en dispositivos de consumidores.

        • Por ejemplo, Gemini Nano 3 (nano-v3) o Gemini Nano 2 (nano-v2).

        • Es la configuración predeterminada para el modelo integrado en el dispositivo si no se especifica ningún OnDeviceModelOption.

      • PREVIEW: Es el modelo integrado en el dispositivo más reciente en versión preliminar con capacidades de rendimiento completas.

        • Diseñado para tareas complejas y con mayor capacidad de razonamiento.

        • Por ejemplo, Gemini Nano 4 Full [versión preliminar] (nano-v4-full, que se basa en Gemma 4 E4B).

      • PREVIEW_FAST: Es el modelo integrado en el dispositivo más reciente en versión preliminar que es rápido.

        • Optimizado para obtener la máxima velocidad y una latencia más baja.

        • Por ejemplo, Gemini Nano 4 Fast [versión preliminar] (nano-v4-fast, que se basa en Gemma 4 E2B).

Kotlin

val model = Firebase.ai(backend = GenerativeBackend.googleAI())
    .generativeModel(
        // Specify a cloud-hosted model.
        // Required for `PREFER_ON_DEVICE`, `PREFER_IN_CLOUD`, and `ONLY_IN_CLOUD` inference modes.
        modelName = "CLOUD_MODEL_NAME",
        onDeviceConfig = OnDeviceConfig(
            mode = InferenceMode.INFERENCE_MODE,
            // (Optional) Specify an on-device model category.
            // AICore will auto-select an on-device model based on this category.
            // If not specified, AICore will auto-select the default stable on-device model.
            modelOption = OnDeviceModelOption.ON-DEVICE_MODEL_CATEGORY)
    )

Java

GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI())
    .generativeModel(
        // Specify a cloud-hosted model.
        // Required for `PREFER_ON_DEVICE`, `PREFER_IN_CLOUD`, and `ONLY_IN_CLOUD` inference modes.
        "CLOUD_MODEL_NAME",
        /* config = */ null,
        /* safetySettings = */ null,
        /* tools = */ null,
        /* toolConfig = */ null,
        /* systemInstruction = */ null,
        /* requestOptions = */ new RequestOptions(),
        new OnDeviceConfig(
                /* mode = */ InferenceMode.INFERENCE_MODE,
                /* maxOutputTokens = */ null,
                /* temperature = */ null,
                /* topK = */ null,
                /* seed = */ null,
                /* candidateCount = */ 1,
                // (Optional) Specify an on-device model category.
                // AICore will auto-select an on-device model based on this category.
                // If not specified, AICore will auto-select the default stable on-device model.
                /* modelOption = */ OnDeviceModelOption.ON-DEVICE_MODEL_CATEGORY)
    );

GenerativeModelFutures model = GenerativeModelFutures.from(ai);

Usa la configuración del modelo para controlar las respuestas

Haz clic en tu proveedor de Gemini API para ver el contenido y el código específicos del proveedor en esta página.

En cada solicitud a un modelo, puedes enviar una configuración del modelo para controlar cómo este genera una respuesta. Los modelos alojados en la nube y los modelos integrados en el dispositivo se configuran de manera diferente y ofrecen distintas opciones de configuración:

  • Modelos alojados en la nube: Establece la configuración con generationConfig (Kotlin | Java). Obtén información sobre los parámetros disponibles.

  • Modelos integrados en el dispositivo: Establece la configuración con onDeviceConfig (Kotlin o Java). Obtén información sobre los parámetros disponibles (Kotlin | Java).

La configuración se mantiene durante el ciclo de vida de la instancia. Si quieres usar una configuración diferente, crea una instancia de GenerativeModel nueva con esa configuración.

Este es un ejemplo en el que se establecen los parámetros de configuración para los modelos alojados en la nube y integrados en el dispositivo que se podrían usar si se establece el modo de inferencia PREFER_ON_DEVICE:

Kotlin

// Config for cloud-hosted model
val generationConfig = generationConfig {
    maxOutputTokens = 200
    stopSequences = listOf("red")
}

// Config for on-device model
val onDeviceConfig = OnDeviceConfig(
    mode = InferenceMode.PREFER_ON_DEVICE,
    maxOutputTokens = 200
)

val model = Firebase.ai(backend = GenerativeBackend.googleAI())
    .generativeModel(
        modelName = "CLOUD_MODEL_NAME",
        generationConfig = generationConfig,
        onDeviceConfig = onDeviceConfig
    )

Java

// Config for cloud-hosted model
GenerationConfig generationConfig = new GenerationConfig.Builder()
    .setMaxOutputTokens(200)
    .setStopSequences(List.of("red"))
    .build();

// Config for on-device model
OnDeviceConfig onDeviceConfig = new OnDeviceConfig(
    /* mode = */ InferenceMode.PREFER_ON_DEVICE,
    /* maxOutputTokens = */ 200,
    /* temperature = */ null,
    /* topK = */ null,
    /* seed = */ null,
    /* candidateCount = */ 1,
    /* modelOption = */ null
);

GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI())
    .generativeModel(
        "CLOUD_MODEL_NAME",
        generationConfig,
        /* safetySettings = */ null,
        /* tools = */ null,
        /* toolConfig = */ null,
        /* systemInstruction = */ null,
        /* requestOptions = */ new RequestOptions(),
        onDeviceConfig
    );

GenerativeModelFutures model = GenerativeModelFutures.from(ai);


Envía comentarios sobre tu experiencia con Firebase AI Logic