Tworzenie rozmów wielostronnych (czatu) za pomocą interfejsu Gemini API


Za pomocą Gemini API możesz prowadzić rozmowy w dowolnej formie na przestrzeni wielu tur. Pakiet SDK Vertex AI in Firebase upraszcza ten proces, zarządzając stanem rozmowy, dzięki czemu w odróżnieniu od pakietów SDK generateContentStream()generateContent() nie musisz samodzielnie przechowywać historii rozmów.

Zanim zaczniesz

Jeśli jeszcze tego nie zrobisz, zapoznaj się z przewodnikiem wprowadzającym do pakietów SDK Vertex AI in Firebase. Najpierw wykonaj te czynności:

  1. Skonfiguruj nowy lub istniejący projekt Firebase, w tym użyj abonamentu Blaze i włącz wymagane interfejsy API.

  2. Połącz aplikację z Firebase, w tym zarejestruj ją i dodaj do niej konfigurację Firebase.

  3. Dodaj pakiet SDK i zainicjuj usługę Vertex AI oraz model generatywny w swojej aplikacji.

Po połączeniu aplikacji z Firebase, dodaniu pakietu SDK i inicjalizacji usługi Vertex AI oraz modelu generatywnego możesz wywołać funkcję Gemini API.

Wysyłanie prośby o czat

Aby prowadzić rozmowę z wieloma zwrotami (np. na czacie), zacznij od zainicjowania czatu, wywołując funkcję startChat(). Następnie kliknij sendMessageStream() (lub sendMessage()), aby wysłać nową wiadomość do użytkownika. Spowoduje to również dołączenie wiadomości i odpowiedzi do historii czatu.

W przypadku role powiązanego z treściami w rozmowie dostępne są 2 opcje:

  • user: rola, która dostarcza promptów. Ta wartość jest domyślna dla wywołań funkcji sendMessageStream() (lub 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.

Wybierz, czy chcesz wyświetlić odpowiedź w czasie (sendMessageStream), czy poczekać na odpowiedź, aż zostanie wygenerowany cały wynik (sendMessage).

Streaming

Możesz uzyskać szybsze interakcje, nie czekając na pełny wynik wygenerowany przez model, a zamiast tego używać strumieniowego przesyłania wyników częściowych.

Ten przykład pokazuje, jak za pomocą funkcji startChat() i sendMessageStream() przesyłać strumieniowo odpowiedzi z modelu:

import FirebaseVertexAI

// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()

// Initialize the generative model 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 stream generated text output, call sendMessageStream and pass in the message
let contentStream = try chat.sendMessageStream("How many paws are in my house?")
for try await chunk in contentStream {
  if let text = chunk.text {
    print(text)
  }
}

Bez strumieniowego przesyłania

Możesz też poczekać na cały wynik zamiast strumieniowego przesyłania. Wynik zostanie zwrócony dopiero po zakończeniu całego procesu generowania.

Ten przykład pokazuje, jak użyć funkcji startChat() i sendMessage(), aby wysłać wiadomość do nowego użytkownika:

import FirebaseVertexAI

// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()

// Initialize the generative model 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.")

Dowiedz się, jak wybrać model Gemini i opcjonalnie lokalizację odpowiednią do Twojego przypadku użycia i aplikacji.

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 usługi do wdrożenia, w tym o skonfigurowaniu Firebase App Check, aby chronić usługę Gemini API przed nadużyciami przez nieautoryzowanych klientów.

Wypróbuj inne możliwości Gemini API

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 modelach Gemini

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


Prześlij opinię na temat korzystania z usługi Vertex AI in Firebase