Tạo cuộc trò chuyện (trò chuyện) nhiều lượt với Gemini API


Khi sử dụng Gemini API, bạn có thể tạo các cuộc trò chuyện ở dạng tự do qua nhiều lượt. SDK Vertex AI in Firebase đơn giản hoá quy trình này bằng cách quản lý trạng thái của cuộc trò chuyện. Vì vậy, không giống như generateContentStream() hoặc generateContent(), bạn không cần tự lưu trữ nhật ký trò chuyện.

Trước khi bắt đầu

Nếu bạn chưa hoàn tất, hãy hoàn thành hướng dẫn bắt đầu sử dụng. Hướng dẫn này mô tả cách thiết lập dự án Firebase, kết nối ứng dụng với Firebase, thêm SDK, khởi chạy dịch vụ Vertex AI và tạo một thực thể GenerativeModel.

Gửi yêu cầu câu lệnh trò chuyện

Để tạo một cuộc trò chuyện nhiều lượt (như cuộc trò chuyện), hãy bắt đầu bằng cách khởi chạy cuộc trò chuyện bằng cách gọi startChat(). Sau đó, hãy sử dụng sendMessageStream() (hoặc sendMessage()) để gửi tin nhắn mới của người dùng. Thao tác này cũng sẽ thêm tin nhắn và nội dung trả lời vào nhật ký trò chuyện.

Có hai tuỳ chọn có thể dùng cho role liên kết với nội dung trong một cuộc trò chuyện:

  • user: vai trò cung cấp lời nhắc. Giá trị này là mặc định cho các lệnh gọi đến sendMessageStream() (hoặc sendMessage()) và hàm sẽ gửi một ngoại lệ nếu một vai trò khác được truyền.

  • model: vai trò cung cấp phản hồi. Bạn có thể sử dụng vai trò này khi gọi startChat() bằng history hiện có.

Chọn xem bạn muốn truyền trực tuyến phản hồi (sendMessageStream) hay đợi phản hồi cho đến khi toàn bộ kết quả được tạo (sendMessage).

Bạn có thể đạt được các lượt tương tác nhanh hơn bằng cách không chờ toàn bộ kết quả từ quá trình tạo mô hình, mà thay vào đó, hãy sử dụng tính năng truyền trực tuyến để xử lý một phần kết quả.

Ví dụ này cho thấy cách sử dụng startChat()sendMessageStream() để truyền trực tuyến các phản hồi từ mô hình:

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

Ngoài ra, bạn có thể chờ toàn bộ kết quả thay vì truyền trực tuyến; kết quả chỉ được trả về sau khi mô hình hoàn tất toàn bộ quá trình tạo.

Ví dụ này cho thấy cách sử dụng startChat()sendMessage() để gửi thông báo cho người dùng mới:

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.")

Tìm hiểu cách chọn một mô hình và tuỳ ý chọn một vị trí phù hợp với trường hợp sử dụng và ứng dụng của bạn.

Bạn có thể làm gì khác?

Thử các tính năng khác

Tìm hiểu cách kiểm soát việc tạo nội dung

Bạn cũng có thể thử nghiệm với các câu lệnh và cấu hình mô hình bằng cách sử dụng Vertex AI Studio.

Tìm hiểu thêm về các mẫu được hỗ trợ

Tìm hiểu về các mô hình có sẵn cho nhiều trường hợp sử dụng, cũng như hạn mứcgiá của các mô hình đó.


Gửi ý kiến phản hồi về trải nghiệm của bạn với Vertex AI in Firebase