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 experiencias híbridas:

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

Establecer 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 en el dispositivo si está disponible y admite el tipo de solicitud. De lo contrario, registra un error en el dispositivo y, luego, revierte 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 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, revierte al modelo 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);
    

Determinar si se usó la inferencia en el dispositivo o en la nube

Si usas los modos de inferencia PREFER_ON_DEVICE o PREFER_IN_CLOUD, puede ser útil saber qué modo se usó para las solicitudes determinadas. Esta información la proporciona 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());

Especificar un modelo alojado en la nube para usar

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

Si tu inferencia principal o de resguardo puede realizarse con un modelo alojado en la nube, debes especificar de forma explícita un modelo de nube para usar cuando crees la instancia `generativeModel`.generativeModel

Kotlin

val model = Firebase.ai(backend = GenerativeBackend.googleAI())
    .generativeModel(
        modelName = "MODEL_NAME",
        onDeviceConfig = OnDeviceConfig(mode = InferenceMode.PREFER_ON_DEVICE)
    )

Java

GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI())
    .generativeModel(
        "MODEL_NAME",
        new OnDeviceConfig(InferenceMode.PREFER_ON_DEVICE)
    );

GenerativeModelFutures model = GenerativeModelFutures.from(ai);

Busca los nombres de los modelos para todos los modelos de Gemini compatibles.

Usar la configuración del modelo para controlar las respuestas

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

En cada solicitud a un modelo, puedes enviar una configuración del modelo para controlar cómo el modelo genera una respuesta. Los modelos alojados en la nube y los modelos en el dispositivo ofrecen diferentes opciones de configuración (parámetros en la nube vs. en el dispositivo ).

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

La configuración se mantiene durante la vida útil de la instancia. Si deseas usar una configuración diferente, crea una instancia GenerativeModel nueva con esa configuración.

Este es un ejemplo que establece las configuraciones para los modelos alojados en la nube y 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);