使用 Gemini-API 打造多輪對話 (聊天)


使用 Gemini API 時,您可以建立跨多輪的任意形式對話。Vertex AI in Firebase SDK 會管理對話狀態,因此您不必自行儲存對話記錄,這點與 generateContentStream()generateContent() 不同。

事前準備

如果您尚未完成,請參閱入門指南,瞭解如何設定 Firebase 專案、將應用程式連結至 Firebase、新增 SDK、初始化 Vertex AI 服務,以及建立 GenerativeModel 例項。

傳送即時通訊提示要求

如要建立多輪對話 (例如即時通訊),請先呼叫 startChat() 來初始化即時通訊。接著使用 sendMessageStream() (或 sendMessage()) 傳送新使用者訊息,這也會將訊息和回應附加到即時通訊記錄。

與對話內容相關聯的 role 有兩種可能的選項:

  • user:提供提示的角色。這個值是呼叫 sendMessageStream() (或 sendMessage()) 的預設值,如果傳遞不同的角色,函式就會擲回例外狀況。

  • model:提供回應的角色。這個角色可用於以現有 history 呼叫 startChat()

選擇要串流回應 (sendMessageStream),還是等待回應產生完整結果 (sendMessage)。

您可以不等待模型產生的完整結果,改用串流處理部分結果,以便加快互動速度。

本範例說明如何使用 startChat()sendMessageStream() 串流模型的回應:

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 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)
  }
}

或者,您可以等待整個結果,而不是串流;只有在模型完成整個產生程序後,系統才會傳回結果。

本範例說明如何使用 startChat()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.")

瞭解如何選擇適合用途和應用程式的模型,以及選用的位置

你還可以做些什麼?

試用其他功能

瞭解如何控管內容產生

您也可以使用 Vertex AI Studio 實驗提示和模型設定。

進一步瞭解支援的型號

瞭解可用於各種用途的模型,以及相關配額價格


針對 Vertex AI in Firebase 的使用體驗提供意見回饋