Opzioni di configurazione per le esperienze ibride nelle app per Android


Questa pagina descrive le seguenti opzioni di configurazione per le esperienze ibride:

Assicurati di aver completato la guida introduttiva alla creazione di esperienze ibride.

Imposta una modalità di inferenza

Gli esempi nella guida introduttiva utilizzano la modalità PREFER_ON_DEVICE, ma questa è solo una delle quattro modalità di inferenza disponibili.

Di seguito sono riportate le modalità di inferenza disponibili:

  • PREFER_ON_DEVICE: tenta di utilizzare il modello sul dispositivo se è disponibile e supporta il tipo di richiesta. In caso contrario, registra un errore sul dispositivo e poi torna automaticamente al modello ospitato sul cloud.

    Kotlin

    val config = OnDeviceConfig(mode = InferenceMode.PREFER_ON_DEVICE)
    

    Java

    InferenceMode mode = InferenceMode.PREFER_ON_DEVICE;
    OnDeviceConfig config = new OnDeviceConfig(mode);
    
  • ONLY_ON_DEVICE: tenta di utilizzare il modello sul dispositivo se è disponibile e supporta il tipo di richiesta. In caso contrario, genera un'eccezione.

    Kotlin

    val config = OnDeviceConfig(mode = InferenceMode.ONLY_ON_DEVICE)
    

    Java

    InferenceMode mode = InferenceMode.ONLY_ON_DEVICE;
    OnDeviceConfig config = new OnDeviceConfig(mode);
    
  • PREFER_IN_CLOUD: tenta di utilizzare il modello ospitato sul cloud se il dispositivo è online e se il modello è disponibile. Se il dispositivo è offline, viene utilizzato il modello sul dispositivo. In tutti gli altri casi di errore, genera un'eccezione.

    Kotlin

    val config = OnDeviceConfig(mode = InferenceMode.PREFER_IN_CLOUD)
    

    Java

    InferenceMode mode = InferenceMode.PREFER_IN_CLOUD;
    OnDeviceConfig config = new OnDeviceConfig(mode);
    
  • ONLY_IN_CLOUD: tenta di utilizzare il modello ospitato sul cloud se il dispositivo è online e se il modello è disponibile. In caso contrario, genera un'eccezione.

    Kotlin

    val config = OnDeviceConfig(mode = InferenceMode.ONLY_IN_CLOUD)
    

    Java

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

Determinare se è stata utilizzata l'inferenza sul dispositivo o nel cloud

Se utilizzi le modalità di inferenza PREFER_ON_DEVICE o PREFER_IN_CLOUD, potrebbe essere utile sapere quale modalità è stata utilizzata per determinate richieste. Queste informazioni vengono fornite dalla proprietà inferenceSource di ogni risposta.

Quando accedi a questa proprietà, il valore restituito sarà 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());

Specifica un modello ospitato sul cloud da utilizzare

Fai clic sul tuo fornitore Gemini API per visualizzare i contenuti e il codice specifici del fornitore in questa pagina.

Se l'inferenza principale o di riserva potrebbe essere eseguita da un modello ospitato sul cloud, devi specificare esplicitamente un modello cloud da utilizzare quando crei l'istanza 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);

Trova i nomi dei modelli per tutti i modelli Gemini supportati.

Utilizzare la configurazione del modello per controllare le risposte

Fai clic sul tuo fornitore Gemini API per visualizzare i contenuti e il codice specifici del fornitore in questa pagina.

In ogni richiesta a un modello, puoi inviare una configurazione del modello per controllare il modo in cui il modello genera una risposta. I modelli ospitati sul cloud e quelli sul dispositivo offrono diverse opzioni di configurazione (parametri cloud e on-device).

Per i modelli ospitati su cloud, imposta la configurazione direttamente nella configurazione del modello. Tuttavia, per i modelli sul dispositivo, imposta la configurazione all'interno di un onDeviceConfig.

La configurazione viene mantenuta per l'intera durata dell'istanza. Se vuoi utilizzare una configurazione diversa, crea una nuova istanza GenerativeModel con quella configurazione.

Ecco un esempio che imposta le configurazioni per i modelli ospitati sul cloud e sul dispositivo che potrebbero essere utilizzati se è impostata la modalità di inferenza 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);