Inizia a utilizzare l'API Gemini usando gli SDK Vertex AI per Firebase


Questa guida mostra come iniziare a effettuare chiamate all'API Gemini direttamente dalla tua app utilizzando l'SDK Vertex AI per Firebase.

Prerequisiti

Questa guida presuppone che tu abbia familiarità con l'uso di Android Studio per sviluppare app per Android.

  • Assicurati che il tuo ambiente di sviluppo e la tua app per Android soddisfino i seguenti requisiti:

    • Android Studio (versione più recente)
    • La tua app per Android deve avere il livello API target 21 o versioni successive.
  • (Facoltativo) Dai un'occhiata all'app di esempio.

    Scaricare l'app di esempio

    Puoi provare rapidamente l'SDK, visualizzare un'implementazione completa di vari casi d'uso oppure utilizzare l'app di esempio se non disponi di una tua app Android. Per utilizzare l'app di esempio, dovrai connetterla a un progetto Firebase.

Passaggio 1: configura un progetto Firebase e collega la tua app a Firebase

Se hai già un progetto Firebase e un'app collegata a Firebase

  1. Nella console Firebase, vai alla pagina Crea con Gemini, quindi fai clic sulla seconda scheda per avviare un flusso di lavoro che ti aiuta a eseguire le attività seguenti. Se non vedi il layout delle schede, significa che queste attività sono state completate.

  2. Vai al passaggio successivo di questa guida per aggiungere l'SDK alla tua app.

Se non disponi già di un progetto Firebase e di un'app collegati a Firebase

Passaggio 2: aggiungi l'SDK

Dopo aver configurato il progetto Firebase e aver collegato l'app a Firebase (vedi il passaggio precedente), puoi aggiungere l'SDK Vertex AI per Firebase.

L'SDK Vertex AI per Android (firebase-vertexai) fornisce l'accesso all'API Gemini.

Nel file di configurazione Gradle del modulo (a livello di app) (ad esempio <project>/<app-module>/build.gradle.kts), aggiungi la dipendenza per l'SDK Vertex AI per Android:

Kotlin+KTX

dependencies {
  // ... other androidx dependencies

  // add the dependency for the Vertex AI SDK for Android
  implementation("com.google.firebase:firebase-vertexai:16.0.0-alpha02")
}

Java

Per Java, devi aggiungere altre due librerie.

dependencies {
  // ... other androidx dependencies

  // add the dependency for the Vertex AI SDK for Android
  implementation("com.google.firebase:firebase-vertexai:16.0.0-alpha02")

  // Required for one-shot operations (to use `ListenableFuture` from Guava Android)
  implementation("com.google.guava:guava:31.0.1-android")

  // Required for streaming operations (to use `Publisher` from Reactive Streams)
  implementation("org.reactivestreams:reactive-streams:1.0.4")
}

Passaggio 3: inizializza il servizio Vertex AI e il modello generativo

Prima di poter effettuare chiamate API, devi inizializzare il servizio Vertex AI e il modello generativo.

Kotlin+KTX

// Initialize the Vertex AI service and the generative model
// Specify a model that supports your use case
// Gemini 1.5 Pro is versatile and can accept both text-only and multimodal prompt inputs
val generativeModel = Firebase.vertexAI.generativeModel("gemini-1.5-pro-preview-0409")
Per Kotlin, i metodi in questo SDK sono funzioni di sospensione e devono essere richiamati da un ambito Coroutine. Se non conosci le Coroutines, leggi Kotlin Coroutines su Android.

Java

// Initialize the Vertex AI service and the generative model
// Specify a model that supports your use case
// Gemini 1.5 Pro is versatile and can accept both text-only and multimodal prompt inputs
GenerativeModel gm = FirebaseVertexAI.getInstance()
        .generativeModel("gemini-1.5-pro-preview-0409");

// Use the GenerativeModelFutures Java compatibility layer which offers
// support for ListenableFuture and Publisher APIs
GenerativeModelFutures model = GenerativeModelFutures.from(gm);
Per Java, i metodi di inserimento di flussi in questo SDK restituiscono un tipo Publisher dalla libreria dei flussi reattivi.

Una volta terminata la guida introduttiva, impara a scegliere un modello Gemini appropriato per il tuo caso d'uso.

Passaggio 4: chiama l'API Gemini

Ora che hai connesso l'app a Firebase, aggiunto l'SDK e inizializzato il servizio Vertex AI e il modello generativo, puoi chiamare l'API Gemini.

Scegli se vuoi trasmettere la risposta in streaming (generateContentStream) o attendere la risposta fino a quando non viene generato l'intero risultato (generateContent).

Flussi di dati

Per impostazione predefinita, il modello restituisce una risposta dopo aver completato l'intero processo di generazione. Tuttavia, puoi ottenere interazioni più rapide non aspettando l'intero risultato e utilizzando invece i flussi di dati per gestire i risultati parziali.

Puoi utilizzare generateContentStream() per trasmettere in streaming il testo generato da una richiesta di prompt che include solo testo:

Kotlin+KTX

// Initialize the Vertex AI service and the generative model
// Specify a model that supports your use case
// Gemini 1.5 Pro is versatile and can accept both text-only and multimodal prompt inputs
val generativeModel = Firebase.vertexAI.generativeModel("gemini-1.5-pro-preview-0409")

// Provide a prompt that includes only text
val prompt = "Write a story about a magic backpack."

// To stream generated text output, call generateContentStream and pass in the prompt
var response = ""
generativeModel.generateContentStream(prompt).collect { chunk ->
    print(chunk.text)
    response += chunk.text
}
Per Kotlin, i metodi in questo SDK sono funzioni di sospensione e devono essere richiamati da un ambito Coroutine. Se non conosci le Coroutines, leggi Kotlin Coroutines su Android.

Java

// Initialize the Vertex AI service and the generative model
// Specify a model that supports your use case
// Gemini 1.5 Pro is versatile and can accept both text-only and multimodal prompt inputs
GenerativeModel gm = FirebaseVertexAI.getInstance()
        .generativeModel("gemini-1.5-pro-preview-0409");
GenerativeModelFutures model = GenerativeModelFutures.from(gm);

// Provide a prompt that contains text
Content prompt = new Content.Builder()
        .addText("Write a story about a magic backpack.")
        .build();

// To stream generated text output, call generateContentStream with the text input
Publisher<GenerateContentResponse> streamingResponse =
    model.generateContentStream(prompt);

// Subscribe to partial results from the response
final String[] fullResponse = {""};
streamingResponse.subscribe(new Subscriber<GenerateContentResponse>() {
  @Override
  public void onNext(GenerateContentResponse generateContentResponse) {
    String chunk = generateContentResponse.getText();
    fullResponse[0] += chunk;
  }

  @Override
  public void onComplete() {
    System.out.println(fullResponse[0]);
  }

  @Override
  public void onError(Throwable t) {
    t.printStackTrace();
  }

  @Override
  public void onSubscribe(Subscription s) { }
});
Per Java, i metodi di inserimento di flussi in questo SDK restituiscono un tipo Publisher dalla libreria dei flussi reattivi.

Senza streaming

In alternativa, puoi attendere l'intero risultato anziché eseguire il flusso di dati; il risultato viene restituito solo dopo che il modello ha completato l'intero processo di generazione.

Puoi utilizzare generateContent() per generare testo da una richiesta di prompt che include solo testo:

Kotlin+KTX

// Initialize the Vertex AI service and the generative model
// Specify a model that supports your use case
// Gemini 1.5 Pro is versatile and can accept both text-only and multimodal prompt inputs
val generativeModel = Firebase.vertexAI.generativeModel("gemini-1.5-pro-preview-0409")

// Provide a prompt that contains text
val prompt = "Write a story about a magic backpack."

// To generate text output, call generateContent with the text input
val response = generativeModel.generateContent(prompt)
print(response.text)
Per Kotlin, i metodi in questo SDK sono funzioni di sospensione e devono essere richiamati da un ambito Coroutine. Se non conosci le Coroutines, leggi Kotlin Coroutines su Android.

Java

// Initialize the Vertex AI service and the generative model
// Specify a model that supports your use case
// Gemini 1.5 Pro is versatile and can accept both text-only and multimodal prompt inputs
GenerativeModel gm = FirebaseVertexAI.getInstance()
        .generativeModel("gemini-1.5-pro-preview-0409");
GenerativeModelFutures model = GenerativeModelFutures.from(gm);

// Provide a prompt that contains text
Content prompt = new Content.Builder()
    .addText("Write a story about a magic backpack.")
    .build();

// To generate text output, call generateContent with the text input
ListenableFuture<GenerateContentResponse> response = model.generateContent(prompt);
Futures.addCallback(response, new FutureCallback<GenerateContentResponse>() {
    @Override
    public void onSuccess(GenerateContentResponse result) {
        String resultText = result.getText();
        System.out.println(resultText);
    }

    @Override
    public void onFailure(Throwable t) {
        t.printStackTrace();
    }
}, executor);
Per Java, i metodi in questo SDK restituiscono un ListenableFuture. Se non hai dimestichezza con questa API, consulta la documentazione Android sull'utilizzo di un ListenableFuture.

Che cos'altro puoi fare?

Scopri di più sui modelli Gemini

Scopri i modelli disponibili per vari casi d'uso e le relative quote e i prezzi.

Prova altre funzionalità dell'API Gemini

Scopri come controllare la generazione di contenuti

Puoi anche sperimentare i prompt e le configurazioni dei modelli utilizzando Vertex AI Studio.


Fornisci feedback sulla tua esperienza con gli SDK Vertex AI per Firebase