Tworzenie rozmów wieloobrobowych (czat) za pomocą interfejsu Gemini API

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ń funkcji sendMessage(), 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 funkcji startChat() 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().

W przypadku Kotlina metody w tym pakiecie SDK są funkcjami zawieszającymi i muszą być wywoływane z zakresu współbieżności.
// 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()

W przypadku Javy metody w tym pakiecie SDK zwracają wartość 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ć?

Wypróbuj inne funkcje

Dowiedz się, jak kontrolować generowanie treści

Możesz też eksperymentować z promptami i konfiguracjami modeli za pomocą Vertex AI Studio.

Więcej informacji o obsługiwanych modelach

Dowiedz się więcej o modelach dostępnych w różnych przypadkach użycia oraz o ich limitachcenach.


Prześlij opinię o swoich wrażeniach związanych z usługą Vertex AI in Firebase