Con Gemini API puoi creare conversazioni in formato libero su più turni. L'SDK Firebase AI Logic semplifica la procedura gestendo
lo stato della conversazione, quindi, a differenza di generateContent()
(o generateContentStream()
), non devi memorizzare autonomamente la cronologia della conversazione.
Prima di iniziare
Fai clic sul tuo fornitore Gemini API per visualizzare i contenuti e il codice specifici del fornitore in questa pagina. |
Se non l'hai ancora fatto, consulta la
guida introduttiva, che descrive come configurare il progetto Firebase, collegare l'app a Firebase, aggiungere l'SDK, inizializzare il servizio di backend per il provider Gemini API scelto e creare un'istanza GenerativeModel
.
Per testare e eseguire l'iterazione sui prompt e persino per ottenere uno snippet di codice generato, ti consigliamo di utilizzare Google AI Studio.
Inviare una richiesta di prompt di chat
Prima di provare questo esempio, completa la sezione Prima di iniziare di questa guida per configurare il progetto e l'app. In questa sezione, dovrai anche fare clic su un pulsante per il fornitore Gemini API scelto per visualizzare i contenuti specifici del fornitore in questa pagina. |
Per creare una conversazione con più turni (ad esempio una chat), inizia con l'inizializzazione della chat chiamando startChat()
. Quindi, utilizza
sendMessage()
per inviare un nuovo messaggio dell'utente, che
aggiungerà anche il messaggio e la risposta alla cronologia della chat.
Esistono due possibili opzioni per role
associate ai contenuti di una conversazione:
user
: il ruolo che fornisce i prompt. Questo valore è predefinito per le chiamate asendMessage()
e la funzione genera un'eccezione se viene passato un ruolo diverso.model
: il ruolo che fornisce le risposte. Questo ruolo può essere utilizzato quando si chiamastartChat()
conhistory
esistente.
Swift
Puoi chiamare
startChat()
e
sendMessage()
per inviare un messaggio a un nuovo utente:
import FirebaseAI
// Initialize the Gemini Developer API backend service
let ai = FirebaseAI.firebaseAI(backend: .googleAI())
// Create a `GenerativeModel` instance with a model that supports your use case
let model = ai.generativeModel(modelName: "gemini-2.0-flash")
// Optionally specify existing chat history
let history = [
ModelContent(role: "user", parts: "Hello, I have 2 dogs in my house."),
ModelContent(role: "model", parts: "Great to meet you. What would you like to know?"),
]
// Initialize the chat with optional chat history
let chat = model.startChat(history: history)
// To generate text output, call sendMessage and pass in the message
let response = try await chat.sendMessage("How many paws are in my house?")
print(response.text ?? "No text in response.")
Kotlin
Puoi chiamare startChat()
e
sendMessage()
per inviare un messaggio a un nuovo utente:
// Initialize the Gemini Developer API backend service
// Create a `GenerativeModel` instance with a model that supports your use case
val model = Firebase.ai(backend = GenerativeBackend.googleAI())
.generativeModel("gemini-2.0-flash")
// Initialize the chat
val chat = generativeModel.startChat(
history = listOf(
content(role = "user") { text("Hello, I have 2 dogs in my house.") },
content(role = "model") { text("Great to meet you. What would you like to know?") }
)
)
val response = chat.sendMessage("How many paws are in my house?")
print(response.text)
Java
Puoi chiamare
startChat()
e
sendMessage()
per inviare un messaggio a un nuovo utente:
ListenableFuture
.
// Initialize the Gemini Developer API backend service
// Create a `GenerativeModel` instance with a model that supports your use case
GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI())
.generativeModel("gemini-2.0-flash");
// Use the GenerativeModelFutures Java compatibility layer which offers
// support for ListenableFuture and Publisher APIs
GenerativeModelFutures model = GenerativeModelFutures.from(ai);
// (optional) Create previous chat history for context
Content.Builder userContentBuilder = new Content.Builder();
userContentBuilder.setRole("user");
userContentBuilder.addText("Hello, I have 2 dogs in my house.");
Content userContent = userContentBuilder.build();
Content.Builder modelContentBuilder = new Content.Builder();
modelContentBuilder.setRole("model");
modelContentBuilder.addText("Great to meet you. What would you like to know?");
Content modelContent = userContentBuilder.build();
List<Content> history = Arrays.asList(userContent, modelContent);
// Initialize the chat
ChatFutures chat = model.startChat(history);
// Create a new user message
Content.Builder messageBuilder = new Content.Builder();
messageBuilder.setRole("user");
messageBuilder.addText("How many paws are in my house?");
Content message = messageBuilder.build();
// Send the message
ListenableFuture<GenerateContentResponse> response = chat.sendMessage(message);
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);
Web
Puoi chiamare
startChat()
e
sendMessage()
per inviare un messaggio a un nuovo utente:
import { initializeApp } from "firebase/app";
import { getAI, getGenerativeModel, GoogleAIBackend } from "firebase/ai";
// TODO(developer) Replace the following with your app's Firebase configuration
// See: https://firebase.google.com/docs/web/learn-more#config-object
const firebaseConfig = {
// ...
};
// Initialize FirebaseApp
const firebaseApp = initializeApp(firebaseConfig);
// Initialize the Gemini Developer API backend service
const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() });
// Create a `GenerativeModel` instance with a model that supports your use case
const model = getGenerativeModel(ai, { model: "gemini-2.0-flash" });
async function run() {
const chat = model.startChat({
history: [
{
role: "user",
parts: [{ text: "Hello, I have 2 dogs in my house." }],
},
{
role: "model",
parts: [{ text: "Great to meet you. What would you like to know?" }],
},
],
generationConfig: {
maxOutputTokens: 100,
},
});
const msg = "How many paws are in my house?";
const result = await chat.sendMessage(msg);
const response = await result.response;
const text = response.text();
console.log(text);
}
run();
Dart
Puoi chiamare
startChat()
e
sendMessage()
per inviare un messaggio a un nuovo utente:
import 'package:firebase_ai/firebase_ai.dart';
import 'package:firebase_core/firebase_core.dart';
import 'firebase_options.dart';
// Initialize FirebaseApp
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
// Initialize the Gemini Developer API backend service
// Create a `GenerativeModel` instance with a model that supports your use case
final model =
FirebaseAI.googleAI().generativeModel(model: 'gemini-2.0-flash');
final chat = model.startChat();
// Provide a prompt that contains text
final prompt = [Content.text('Write a story about a magic backpack.')];
final response = await chat.sendMessage(prompt);
print(response.text);
Unity
Puoi chiamare
StartChat()
e
SendMessageAsync()
per inviare un messaggio a un nuovo utente:
using Firebase;
using Firebase.AI;
// Initialize the Gemini Developer API backend service
var ai = FirebaseAI.GetInstance(FirebaseAI.Backend.GoogleAI());
// Create a `GenerativeModel` instance with a model that supports your use case
var model = ai.GetGenerativeModel(modelName: "gemini-2.0-flash");
// Optionally specify existing chat history
var history = new [] {
ModelContent.Text("Hello, I have 2 dogs in my house."),
new ModelContent("model", new ModelContent.TextPart("Great to meet you. What would you like to know?")),
};
// Initialize the chat with optional chat history
var chat = model.StartChat(history);
// To generate text output, call SendMessageAsync and pass in the message
var response = await chat.SendMessageAsync("How many paws are in my house?");
UnityEngine.Debug.Log(response.Text ?? "No text in response.");
Scopri come scegliere un modello appropriato per il tuo caso d'uso e la tua app.
Visualizza la risposta in streaming
Prima di provare questo esempio, completa la sezione Prima di iniziare di questa guida per configurare il progetto e l'app. In questa sezione, dovrai anche fare clic su un pulsante per il fornitore Gemini API scelto per visualizzare i contenuti specifici del fornitore in questa pagina. |
Puoi ottenere interazioni più rapide non aspettando l'intero risultato della generazione del modello, ma utilizzando lo streaming per gestire i risultati parziali.
Per riprodurre in streaming la risposta, chiama sendMessageStream()
.
Cos'altro puoi fare?
- Scopri come contare i token prima di inviare prompt lunghi al modello.
- Configura Cloud Storage for Firebase in modo da poter includere file di grandi dimensioni nelle richieste multimodali e avere una soluzione più gestita per fornire file nei prompt. I file possono includere immagini, PDF, video e audio.
-
Inizia a pensare alla preparazione per la produzione (consulta l'elenco di controllo per la produzione), tra cui:
- Configurazione di Firebase App Check per proteggere Gemini API da abusi da parte di clienti non autorizzati.
- Integrazione di Firebase Remote Config per aggiornare i valori nell'app (ad esempio il nome del modello) senza rilasciare una nuova versione dell'app.
Provare altre funzionalità
- Genera testo da prompt di solo testo.
- Genera testo tramite prompt con vari tipi di file, come immagini, PDF, video e audio.
- Genera output strutturato (come JSON) da prompt di testo e multimodali.
- Genera immagini da prompt di testo.
- Utilizza le chiamate di funzione per collegare i modelli generativi a sistemi e informazioni esterni.
Scopri come controllare la generazione di contenuti
- Comprendi la progettazione dei prompt, tra cui le best practice, le strategie e i prompt di esempio.
- Configura i parametri del modello, ad esempio la temperatura e il numero massimo di token di output (per Gemini) o le proporzioni e la generazione di persone (per Imagen).
- Utilizza le impostazioni di sicurezza per regolare la probabilità di ricevere risposte che potrebbero essere considerate dannose.
Scopri di più sui modelli supportati
Scopri i modelli disponibili per vari casi d'uso e le relative quote e prezzi.Inviare un feedback sulla tua esperienza con Firebase AI Logic