Mit der Gemini API können Sie Unterhaltungen im Freiformat über mehrere Runden erstellen. Das Firebase AI Logic SDK vereinfacht den Prozess, da der Status der Unterhaltung verwaltet wird. Anders als bei generateContent()
(oder generateContentStream()
) müssen Sie den Unterhaltungsverlauf also nicht selbst speichern.
Hinweis
Klicke auf deinen Gemini API-Anbieter, um dir anbieterspezifische Inhalte und Code auf dieser Seite anzusehen. |
Sehen Sie sich den Startleitfaden an, in dem beschrieben wird, wie Sie Ihr Firebase-Projekt einrichten, Ihre App mit Firebase verbinden, das SDK hinzufügen, den Backend-Dienst für den ausgewählten Gemini API-Anbieter initialisieren und eine GenerativeModel
-Instanz erstellen.
Zum Testen und Iterieren Ihrer Prompts und zum Generieren eines Code-Snippets empfehlen wir die Verwendung von Google AI Studio.
Chat-Prompt-Anfrage senden
Bevor Sie dieses Beispiel ausprobieren, müssen Sie den Abschnitt Vorbereitung in diesem Leitfaden durcharbeiten, um Ihr Projekt und Ihre App einzurichten. In diesem Abschnitt klicken Sie auch auf eine Schaltfläche für den von Ihnen ausgewählten Gemini API Anbieter, damit auf dieser Seite anbieterspezifische Inhalte angezeigt werden. |
Wenn Sie eine Unterhaltung mit mehreren Antworten (z. B. einen Chat) erstellen möchten, müssen Sie zuerst den Chat initialisieren, indem Sie startChat()
aufrufen. Senden Sie dann mit sendMessage()
eine neue Nutzernachricht. Dadurch werden die Nachricht und die Antwort an den Chatverlauf angehängt.
Es gibt zwei mögliche Optionen für role
, die mit den Inhalten in einer Unterhaltung verknüpft sind:
user
: die Rolle, die die Prompts bereitstellt. Dieser Wert ist der Standardwert für Aufrufe vonsendMessage()
. Die Funktion wirft eine Ausnahme, wenn eine andere Rolle übergeben wird.model
: die Rolle, die die Antworten liefert. Diese Rolle kann verwendet werden, wennstartChat()
mit vorhandenenhistory
aufgerufen wird.
Swift
Sie können startChat()
und sendMessage()
aufrufen, um eine Nachricht an einen neuen Nutzer zu senden:
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
Sie können startChat()
und sendMessage()
aufrufen, um eine Nachricht an einen neuen Nutzer zu senden:
// 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
Sie können startChat()
und sendMessage()
aufrufen, um eine Nachricht an einen neuen Nutzer zu senden:
ListenableFuture
zurück.
// 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
Sie können startChat()
und sendMessage()
aufrufen, um eine Nachricht an einen neuen Nutzer zu senden:
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
Sie können startChat()
und sendMessage()
anrufen, um eine Nachricht an einen neuen Nutzer zu senden:
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);
Einheit
Sie können StartChat()
und SendMessageAsync()
aufrufen, um eine Nachricht an einen neuen Nutzer zu senden:
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.");
Weitere Informationen zur Auswahl eines Modells
Antwort streamen
Bevor Sie dieses Beispiel ausprobieren, müssen Sie den Abschnitt Vorbereitung in diesem Leitfaden durcharbeiten, um Ihr Projekt und Ihre App einzurichten. In diesem Abschnitt klicken Sie auch auf eine Schaltfläche für den von Ihnen ausgewählten Gemini API Anbieter, damit auf dieser Seite anbieterspezifische Inhalte angezeigt werden. |
Sie können schnellere Interaktionen erzielen, wenn Sie nicht auf das vollständige Ergebnis der Modellgenerierung warten, sondern stattdessen Streaming zum Verarbeiten von Teilergebnissen verwenden.
Wenn Sie die Antwort streamen möchten, rufen Sie sendMessageStream()
auf.
Was können Sie sonst noch tun?
- Informationen zum Zählen von Tokens, bevor lange Prompts an das Modell gesendet werden
- Richten Sie Cloud Storage for Firebase ein, damit Sie große Dateien in Ihre multimodalen Anfragen aufnehmen und eine besser verwaltete Lösung für die Bereitstellung von Dateien in Prompts haben können. Dateien können Bilder, PDFs, Videos und Audiodateien enthalten.
-
Überlegen Sie, wie Sie sich auf die Produktion vorbereiten können (siehe Checkliste für die Produktion). Dazu gehören:
- Firebase App Check einrichten, um die Gemini API vor Missbrauch durch nicht autorisierte Clients zu schützen.
- Firebase Remote Config einbinden, um Werte in Ihrer App (z. B. den Modellnamen) zu aktualisieren, ohne eine neue App-Version zu veröffentlichen.
Weitere Funktionen ausprobieren
- Text aus nur Text-Prompts generieren
- Sie können Text generieren, indem Sie verschiedene Dateitypen als Prompt verwenden, z. B. Bilder, PDFs, Videos und Audio.
- Sie können sowohl aus Text- als auch aus multimodalen Prompts strukturierte Ausgabe (z. B. JSON) generieren.
- Bilder aus Text-Prompts generieren
- Verwenden Sie Funktionsaufrufe, um generative Modelle mit externen Systemen und Informationen zu verbinden.
Inhaltserstellung steuern
- Informationen zum Prompt-Design, einschließlich Best Practices, Strategien und Beispiel-Prompts.
- Konfigurieren Sie Modellparameter wie Temperatur und maximale Ausgabetokens (für Gemini) oder Seitenverhältnis und Personengenerierung (für Imagen).
- Mit den Sicherheitseinstellungen können Sie die Wahrscheinlichkeit anpassen, dass Sie Antworten erhalten, die als schädlich eingestuft werden könnten.
Weitere Informationen zu den unterstützten Modellen
Hier finden Sie Informationen zu den Modellen, die für verschiedene Anwendungsfälle verfügbar sind, sowie zu ihren Kontingenten und Preisen.Feedback zu Firebase AI Logic geben