Za pomocą Gemini API możesz prowadzić rozmowy w dowolnej formie w ciągu wielu tur. Pakiet SDK Vertex AI in Firebase upraszcza ten proces, zarządzając stanem rozmowy. Dzięki temu w odróżnieniu od generateContent()
(lub generateContentStream()
) nie musisz samodzielnie przechowywać historii rozmów.
Zanim zaczniesz
Jeśli jeszcze tego nie zrobisz, przeczytaj przewodnik dla początkujących, w którym znajdziesz informacje o konfigurowaniu projektu Firebase, łączeniu aplikacji z Firebase, dodawaniu pakietu SDK, inicjowaniu usługi Vertex AI i tworzeniu wystąpienia GenerativeModel
.
Wysyłanie prośby o rozmowę na czacie
Aby prowadzić rozmowę z wieloma zwrotami (np. na czacie), zacznij od zainicjowania czatu, wywołując funkcję startChat()
. Następnie kliknij sendMessage()
, aby wysłać nową wiadomość do użytkownika. Wiadomość i odpowiedź zostaną dodane do historii czatu.
W przypadku role
powiązanego z treścią w rozmowie dostępne są 2 opcje:
user
: rola, która dostarcza promptów. Ta wartość jest domyślna dla wywołań funkcjisendMessage()
, a jeśli zostanie przekazana inna rola, funkcja rzuci wyjątek.model
: rola, która dostarcza odpowiedzi. Tej roli można używać podczas wywoływania funkcjistartChat()
z dotychczasową funkcjąhistory
.
Swift
Aby zadzwonić, wybierz startChat()
, a aby wysłać wiadomość do nowego użytkownika: sendMessage()
import FirebaseVertexAI
// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()
// Create a `GenerativeModel` instance with a model that supports your use case
let model = vertex.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
Aby wysłać wiadomość do nowego użytkownika, zadzwoń pod numer startChat()
lub wyślij wiadomość na adres sendMessage()
.
// Initialize the Vertex AI service and create a `GenerativeModel` instance
// Specify a model that supports your use case
val generativeModel = Firebase.vertexAI.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
Aby wysłać wiadomość do nowego użytkownika, możesz zadzwonić pod numer
startChat()
lub
sendMessage()
ListenableFuture
.
// Initialize the Vertex AI service and create a `GenerativeModel` instance
// Specify a model that supports your use case
GenerativeModel gm = FirebaseVertexAI.getInstance()
.generativeModel("gemini-2.0-flash");
GenerativeModelFutures model = GenerativeModelFutures.from(gm);
// (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
Aby wysłać wiadomość do nowego użytkownika, możesz zadzwonić pod numer
startChat()
lub
sendMessage()
import { initializeApp } from "firebase/app";
import { getVertexAI, getGenerativeModel } from "firebase/vertexai";
// 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 Vertex AI service
const vertexAI = getVertexAI(firebaseApp);
// Create a `GenerativeModel` instance with a model that supports your use case
const model = getGenerativeModel(vertexAI, { 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
Aby wysłać wiadomość do nowego użytkownika, możesz zadzwonić pod numer
startChat()
lub
sendMessage()
import 'package:firebase_vertexai/firebase_vertexai.dart';
import 'package:firebase_core/firebase_core.dart';
import 'firebase_options.dart';
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
// Initialize the Vertex AI service and create a `GenerativeModel` instance
// Specify a model that supports your use case
final model =
FirebaseVertexAI.instance.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);
Dowiedz się, jak wybrać model i opcjonalnie lokalizację odpowiednią do przypadku użycia i aplikacji.
Odpowiadaj na pytania stopniowo
Zanim spróbujesz użyć tego szablonu, przeczytaj sekcję Zanim zaczniesz w tym przewodniku.
Możesz uzyskać szybsze interakcje, nie czekając na pełny wynik wygenerowany przez model, a zamiast tego używać strumieniowego przetwarzania częściowych wyników.
Aby odtworzyć odpowiedź, zadzwoń pod numer sendMessageStream()
.
Co jeszcze możesz zrobić?
- Dowiedz się, jak policzyć tokeny przed wysłaniem długich promptów do modelu.
- Skonfiguruj Cloud Storage for Firebase, aby móc dołączać duże pliki do żądań multimodalnych i mieć lepiej zarządzane rozwiązanie do dostarczania plików w promptach. Mogą to być obrazy, pliki PDF, filmy i pliki audio.
- Zacznij myśleć o przygotowaniu się do wdrożenia, w tym o skonfigurowaniu Firebase App Check, aby chronić usługę Gemini API przed nadużyciami przez nieautoryzowanych klientów. Zapoznaj się też z listą kontrolną wersji produkcyjnej.
Wypróbuj inne funkcje
- generować tekst na podstawie promptów tekstowych,
- generować tekst, wyświetlając prompty z różnymi typami plików, takimi jak obrazy, pliki PDF, filmy i dźwięk;
- generować uporządkowane dane wyjściowe (np. w formacie JSON) zarówno na podstawie promptów tekstowych, jak i promptów multimodalnych;
- generować obrazy na podstawie promptów tekstowych;
- Użyj funkcji wywoływania, aby połączyć modele generatywne z zewnętrznymi systemami i informacjami.
Dowiedz się, jak kontrolować generowanie treści
- Poznaj projektowanie promptów, w tym sprawdzone metody, strategie i przykładowe prompty.
- Skonfiguruj parametry modelu, takie jak temperatura i maksymalna liczba tokenów wyjściowych (w przypadku Gemini) lub format obrazu i generowanie osób (w przypadku Imagen).
- Używaj ustawień bezpieczeństwa, aby dostosować prawdopodobieństwo otrzymywania odpowiedzi, które mogą być uważane za szkodliwe.
Więcej informacji o obsługiwanych modelach
Dowiedz się więcej o modelach dostępnych w różnych przypadkach użycia oraz o ich limitach i cenach.Prześlij opinię o swoich wrażeniach związanych z usługą Vertex AI in Firebase