Khi gọi Gemini API từ ứng dụng bằng SDK Vertex AI in Firebase, bạn có thể nhắc mô hình Gemini tạo văn bản dựa trên dữ liệu đầu vào đa phương thức. Lời nhắc đa phương thức có thể bao gồm nhiều phương thức (hoặc loại dữ liệu đầu vào), chẳng hạn như văn bản cùng với hình ảnh, tệp PDF, tệp văn bản thuần tuý, video và âm thanh.
Trong mỗi yêu cầu đa phương thức, bạn phải luôn cung cấp những thông tin sau:
mimeType
của tệp. Tìm hiểu về các loại MIME được hỗ trợ của tệp đầu vào.Tệp. Bạn có thể cung cấp tệp dưới dạng dữ liệu cùng dòng (như hiển thị trên trang này) hoặc sử dụng URL hoặc URI của tệp.
Để kiểm thử và lặp lại các lời nhắc đa phương thức, bạn nên sử dụng Vertex AI Studio.
Trước khi bắt đầu
Hãy hoàn tất hướng dẫn bắt đầu sử dụng SDK Vertex AI in Firebase nếu bạn chưa thực hiện. Hãy đảm bảo rằng bạn đã làm tất cả những việc sau:
Thiết lập một dự án Firebase mới hoặc hiện có, bao gồm cả việc sử dụng gói giá Blaze và bật các API bắt buộc.
Kết nối ứng dụng với Firebase, bao gồm cả việc đăng ký ứng dụng và thêm cấu hình Firebase vào ứng dụng.
Thêm SDK và khởi chạy dịch vụ Vertex AI cũng như mô hình tạo sinh trong ứng dụng.
Sau khi kết nối ứng dụng với Firebase, thêm SDK và khởi chạy dịch vụ Vertex AI cũng như mô hình tạo sinh, bạn đã sẵn sàng gọi Gemini API.
Tạo văn bản từ văn bản và một hình ảnh Tạo văn bản từ văn bản và nhiều hình ảnh Tạo văn bản từ văn bản và video
Tệp nội dung nghe nhìn mẫu
Nếu chưa có tệp nội dung nghe nhìn, bạn có thể sử dụng các tệp có sẵn công khai sau đây:
Hình ảnh:
gs://cloud-samples-data/generative-ai/image/scones.jpg
với loại MIME làimage/jpeg
.
Xem hoặc tải hình ảnh này xuống.PDF:
gs://cloud-samples-data/generative-ai/pdf/2403.05530.pdf
với loại MIME làapplication/pdf
.
Xem hoặc tải tệp PDF này xuống.Video:
gs://cloud-samples-data/video/animals.mp4
với loại MIME làvideo/mp4
.
Xem hoặc tải video này xuống.Âm thanh:
gs://cloud-samples-data/generative-ai/audio/pixel.mp3
với loại MIME làaudio/mp3
.
Nghe hoặc tải bản âm thanh này xuống.
Tạo văn bản từ văn bản và một hình ảnh
Hãy đảm bảo bạn đã hoàn tất phần Trước khi bắt đầu trong hướng dẫn này trước khi thử mẫu này.
Bạn có thể gọi Gemini API bằng các lời nhắc đa phương thức bao gồm cả văn bản và một tệp (chẳng hạn như hình ảnh, như trong ví dụ này). Đối với các lệnh gọi này, bạn cần sử dụng một mô hình hỗ trợ nội dung nghe nhìn trong lời nhắc (chẳng hạn như Gemini 1.5 Flash).
Hãy nhớ xem lại các yêu cầu và đề xuất đối với tệp đầu vào.
Chọn xem bạn muốn truyền trực tuyến phản hồi (generateContentStream
) hay đợi phản hồi cho đến khi toàn bộ kết quả được tạo (generateContent
).
Phát trực tuyến
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 biết cách sử dụng generateContentStream()
để truyền trực tuyến văn bản được tạo từ một yêu cầu lời nhắc đa phương thức bao gồm văn bản và một hình ảnh:
import FirebaseVertexAI
// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()
// Initialize the generative model with a model that supports your use case
// Gemini 1.5 models are versatile and can be used with all API capabilities
let model = vertex.generativeModel(modelName: "gemini-1.5-flash")
guard let image = UIImage(systemName: "bicycle") else { fatalError() }
// Provide a text prompt to include with the image
let prompt = "What's in this picture?"
// To stream generated text output, call generateContentStream and pass in the prompt
let contentStream = try model.generateContentStream(image, prompt)
for try await chunk in contentStream {
if let text = chunk.text {
print(text)
}
}
Không truyền trực tuyến
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 biết cách sử dụng generateContent()
để tạo văn bản từ một yêu cầu lời nhắc đa phương thức bao gồm văn bản và một hình ảnh:
import FirebaseVertexAI
// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()
// Initialize the generative model with a model that supports your use case
// Gemini 1.5 models are versatile and can be used with all API capabilities
let model = vertex.generativeModel(modelName: "gemini-1.5-flash")
guard let image = UIImage(systemName: "bicycle") else { fatalError() }
// Provide a text prompt to include with the image
let prompt = "What's in this picture?"
// To generate text output, call generateContent and pass in the prompt
let response = try await model.generateContent(image, prompt)
print(response.text ?? "No text in response.")
Tìm hiểu cách chọn một mô hình Gemini và một vị trí phù hợp với trường hợp sử dụng và ứng dụng của bạn (không bắt buộc).
Tạo văn bản từ văn bản và nhiều hình ảnh
Hãy đảm bảo bạn đã hoàn tất phần Trước khi bắt đầu trong hướng dẫn này trước khi thử mẫu này.
Bạn có thể gọi Gemini API bằng lời nhắc đa phương thức bao gồm cả văn bản và nhiều tệp (như hình ảnh, như trong ví dụ này). Đối với các lệnh gọi này, bạn cần sử dụng một mô hình hỗ trợ nội dung nghe nhìn trong lời nhắc (chẳng hạn như Gemini 1.5 Flash).
Hãy nhớ xem lại các yêu cầu và đề xuất đối với tệp đầu vào.
Chọn xem bạn muốn truyền trực tuyến phản hồi (generateContentStream
) hay đợi phản hồi cho đến khi toàn bộ kết quả được tạo (generateContent
).
Phát trực tuyến
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 generateContentStream()
để truyền trực tuyến văn bản được tạo từ một yêu cầu lời nhắc đa phương thức bao gồm văn bản và nhiều hình ảnh:
import FirebaseVertexAI
// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()
// Initialize the generative model with a model that supports your use case
// Gemini 1.5 models are versatile and can be used with all API capabilities
let model = vertex.generativeModel(modelName: "gemini-1.5-flash")
guard let image1 = UIImage(systemName: "car") else { fatalError() }
guard let image2 = UIImage(systemName: "car.2") else { fatalError() }
// Provide a text prompt to include with the images
let prompt = "What's different between these pictures?"
// To stream generated text output, call generateContentStream and pass in the prompt
let contentStream = try model.generateContentStream(image1, image2, prompt)
for try await chunk in contentStream {
if let text = chunk.text {
print(text)
}
}
Không truyền trực tuyến
Ngoài ra, bạn có thể đợi 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 biết cách sử dụng generateContent()
để tạo văn bản từ một yêu cầu lời nhắc đa phương thức bao gồm văn bản và nhiều hình ảnh:
import FirebaseVertexAI
// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()
// Initialize the generative model with a model that supports your use case
// Gemini 1.5 models are versatile and can be used with all API capabilities
let model = vertex.generativeModel(modelName: "gemini-1.5-flash")
guard let image1 = UIImage(systemName: "car") else { fatalError() }
guard let image2 = UIImage(systemName: "car.2") else { fatalError() }
// Provide a text prompt to include with the images
let prompt = "What's different between these pictures?"
// To generate text output, call generateContent and pass in the prompt
let response = try await model.generateContent(image1, image2, prompt)
print(response.text ?? "No text in response.")
Tìm hiểu cách chọn một mô hình Gemini và một vị trí phù hợp với trường hợp sử dụng và ứng dụng của bạn (không bắt buộc).
Tạo văn bản từ văn bản và video
Hãy đảm bảo bạn đã hoàn tất phần Trước khi bắt đầu trong hướng dẫn này trước khi thử mẫu này.
Bạn có thể gọi Gemini API bằng lời nhắc đa phương thức bao gồm cả(các) tệp văn bản và video (như trong ví dụ này). Đối với các lệnh gọi này, bạn cần sử dụng một mô hình hỗ trợ nội dung nghe nhìn trong câu lệnh (chẳng hạn như Gemini 1.5 Flash).
Hãy nhớ xem lại các yêu cầu và đề xuất đối với tệp đầu vào.
Chọn xem bạn muốn truyền trực tuyến phản hồi (generateContentStream
) hay đợi phản hồi cho đến khi toàn bộ kết quả được tạo (generateContent
).
Phát trực tuyến
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 generateContentStream()
để truyền trực tuyến văn bản được tạo từ một yêu cầu lời nhắc đa phương thức bao gồm văn bản và một video:
import FirebaseVertexAI
// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()
// Initialize the generative model with a model that supports your use case
// Gemini 1.5 models are versatile and can be used with all API capabilities
let model = vertex.generativeModel(modelName: "gemini-1.5-flash")
// Provide the video as `Data` with the appropriate MIME type
let video = InlineDataPart(data: try Data(contentsOf: videoURL), mimeType: "video/mp4")
// Provide a text prompt to include with the video
let prompt = "What is in the video?"
// To stream generated text output, call generateContentStream with the text and video
let contentStream = try model.generateContentStream(video, prompt)
for try await chunk in contentStream {
if let text = chunk.text {
print(text)
}
}
Không truyền trực tuyến
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 generateContent()
để tạo văn bản từ một yêu cầu lời nhắc đa phương thức bao gồm văn bản và một video:
import FirebaseVertexAI
// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()
// Initialize the generative model with a model that supports your use case
// Gemini 1.5 models are versatile and can be used with all API capabilities
let model = vertex.generativeModel(modelName: "gemini-1.5-flash")
// Provide the video as `Data` with the appropriate MIME type.
let video = InlineDataPart(data: try Data(contentsOf: videoURL), mimeType: "video/mp4")
// Provide a text prompt to include with the video
let prompt = "What is in the video?"
// To generate text output, call generateContent with the text and video
let response = try await model.generateContent(video, prompt)
print(response.text ?? "No text in response.")
Tìm hiểu cách chọn một mô hình Gemini và một vị trí phù hợp với trường hợp sử dụng và ứng dụng của bạn (không bắt buộc).
Yêu cầu và đề xuất đối với tệp đầu vào
Hãy xem phần Các tệp đầu vào được hỗ trợ và yêu cầu đối với Vertex AI Gemini API để tìm hiểu về những nội dung sau:
- Các tuỳ chọn cung cấp tệp trong yêu cầu
- Các loại tệp được hỗ trợ
- Các loại MIME được hỗ trợ và cách chỉ định các loại đó
- Yêu cầu và các phương pháp hay nhất đối với tệp và yêu cầu đa phương thức
Bạn có thể làm gì khác?
- Tìm hiểu cách đếm mã thông báo trước khi gửi lời nhắc dài đến mô hình.
- Thiết lập Cloud Storage for Firebase để bạn có thể đưa các tệp lớn vào yêu cầu đa phương thức và có giải pháp được quản lý tốt hơn để cung cấp tệp trong lời nhắc. Tệp có thể bao gồm hình ảnh, tệp PDF, video và âm thanh.
- Bắt đầu suy nghĩ về việc chuẩn bị cho bản phát hành chính thức, bao gồm cả việc thiết lập Firebase App Check để bảo vệ Gemini API khỏi hành vi lạm dụng của các ứng dụng không được uỷ quyền.
Thử các chức năng khác của Gemini API
- Xây dựng cuộc trò chuyện nhiều lượt (trò chuyện).
- Tạo văn bản từ lời nhắc chỉ có văn bản.
- Tạo kết quả có cấu trúc (như JSON) từ cả lời nhắc bằng văn bản và đa phương thức.
- Sử dụng tính năng gọi hàm để kết nối các mô hình tạo sinh với hệ thống và thông tin bên ngoài.
Tìm hiểu cách kiểm soát việc tạo nội dung
- Tìm hiểu về thiết kế câu lệnh, bao gồm cả các phương pháp hay nhất, chiến lược và câu lệnh mẫu.
- Định cấu hình các tham số mô hình như nhiệt độ và mã thông báo đầu ra tối đa.
- Sử dụng chế độ cài đặt an toàn để điều chỉnh khả năng nhận được những câu trả lời có thể bị coi là có hại.
Tìm hiểu thêm về các mô hình Gemini
Tìm hiểu về các mô hình có sẵn cho nhiều trường hợp sử dụng và hạn mức và mức giá 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