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.

Cómo establecer un modo de inferencia

En los ejemplos de la guía de inicio, 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, vuelve 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, se 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 integrado 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 solicitudes específicas. 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());

Cómo especificar 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 creas 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 usar. El SDK no tiene un modelo predeterminado alojado en la nube.

    • Encuentra los nombres de los 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 enumeran 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 [Preview] (nano-v4-full).

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

        • Se probó por completo y está disponible en dispositivos para el consumidor.

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

        • Es el parámetro de configuración predeterminado para el modelo integrado en el dispositivo si no se especifica ningún OnDeviceModelOption.

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

        • Diseñado para un mayor poder de razonamiento y tareas complejas.

        • 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 de versión preliminar más reciente que es rápido.

        • Está optimizado para ofrecer 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_HOSTED_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_HOSTED_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 ofrecen diferentes opciones de configuración (parámetros en la nube frente a integrados en el dispositivo).

En el caso de los modelos alojados en la nube, establece su configuración directamente en la configuración del modelo. Sin embargo, para los modelos integrados en el dispositivo, establece su configuración dentro de un onDeviceConfig.

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 que establece la configuración para los modelos alojados en la nube e integrados en el dispositivo que se podrían usar si se establece el modo de inferencia PREFER_ON_DEVICE:

Kotlin

val model = Firebase.ai(backend = GenerativeBackend.googleAI())
    .generativeModel("MODEL_NAME",
        // Config for cloud-hosted model
        generationConfig = generationConfig {
          temperature = 0.8f,
          topK = 10
        },
        // Config for on-device model
        onDeviceConfig = onDeviceConfig {
          mode = InferenceMode.PREFER_ON_DEVICE,
          temperature = 0.8f,
          topK = 5
        })

Java

// Config for cloud-hosted model
GenerationConfig generationConfig = new GenerationConfig.Builder()
    .setTemperature(0.8f)
    .setTopK(10)
    .build();

// Config for on-device model
OnDeviceConfig onDeviceConfig = new OnDeviceConfig.Builder()
    .setMode(InferenceMode.PREFER_ON_DEVICE)
    .setTemperature(0.8f)
    .setTopK(5)
    .build();

GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI())
    .generativeModel(
        "MODEL_NAME",
        generationConfig,
        onDeviceConfig
    );

GenerativeModelFutures model = GenerativeModelFutures.from(ai);