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.

Ecco 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 la 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 da utilizzare

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

Puoi specificare un modello da utilizzare quando crei l'istanza generativeModel (Kotlin | Java).

  • Specifica un modello ospitato sul cloud:

    • Se la modalità di inferenza è PREFER_ON_DEVICE, PREFER_IN_CLOUD o ONLY_IN_CLOUD, devi specificare esplicitamente un modello ospitato sul cloud da utilizzare. L'SDK non ha un modello ospitato sul cloud predefinito.

    • Trova i nomi dei modelli per tutti i modelli Gemini supportati ospitati sul cloud.

  • Specifica un modello sul dispositivo:

    • Se la modalità di inferenza è PREFER_ON_DEVICE, PREFER_IN_CLOUD o ONLY_ON_DEVICE, puoi facoltativamente specificare in onDeviceConfig una "categoria" di modello on-device da utilizzare. Le categorie sono una combinazione di fase di rilascio e caratteristiche di prestazioni.

    • I valori delle categorie supportati sono elencati di seguito.
      AICore seleziona automaticamente il modello on-device che soddisfa le condizioni della categoria specificata ed è supportato dal dispositivo. Ad esempio, se specifichi PREVIEW e il dispositivo è Pixel 9, allora Gemini Nano 4 Full [Anteprima] (nano-v4-full) verrà probabilmente selezionato automaticamente.

      • STABLE: l'ultima versione stabile del modello sul dispositivo.

        • Completamente testato e sui dispositivi di consumo.

        • Ad esempio, Gemini Nano 3 (nano-v3) o Gemini Nano 2 (nano-v2).

        • Impostazione predefinita per il modello sul dispositivo se non viene specificato alcun OnDeviceModelOption.

      • PREVIEW: l'ultima anteprima del modello sul dispositivo con funzionalità di prestazioni complete.

        • Progettato per una maggiore capacità di ragionamento e attività complesse.

        • Ad esempio, Gemini Nano 4 Full [Anteprima] (nano-v4-full, che si basa su Gemma 4 E4B).

      • PREVIEW_FAST: l'ultima anteprima del modello sul dispositivo, che è veloce.

        • Ottimizzato per la massima velocità e una latenza inferiore.

        • Ad esempio, Gemini Nano 4 Fast [Anteprima] (nano-v4-fast, che si basa su 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);

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 sono configurati in modo diverso e offrono opzioni di configurazione differenti:

  • Modelli ospitati sul cloud: imposta la configurazione utilizzando generationConfig (Kotlin | Java). Scopri di più sui parametri disponibili.

  • Modelli on-device: imposta la configurazione utilizzando onDeviceConfig (Kotlin | Java). Scopri di più sui parametri disponibili (Kotlin | Java).

La configurazione viene mantenuta per tutta la 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

// 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);


Fornisci un feedback sulla tua esperienza con Firebase AI Logic