Tạo các ứng dụng và tính năng dựa trên AI bằng suy luận kết hợp bằng Firebase AI Logic. Suy luận kết hợp cho phép chạy suy luận bằng các mô hình trên thiết bị khi có sẵn và chuyển đổi liền mạch sang các mô hình được lưu trữ trên đám mây nếu không.
Với bản phát hành này, bạn có thể sử dụng suy luận kết hợp bằng cách sử dụng SDK Firebase AI Logic cho Web với tính năng hỗ trợ suy luận trên thiết bị cho Chrome trên máy tính.
Các trường hợp sử dụng được đề xuất và các chức năng được hỗ trợ
Các trường hợp sử dụng được đề xuất:
Sử dụng mô hình trên thiết bị để suy luận các đề xuất:
- Quyền riêng tư nâng cao
- Bối cảnh địa phương
- Suy luận miễn phí
- Chức năng khi không có mạng
Sử dụng các chức năng kết hợp:
- Tiếp cận 100% đối tượng của bạn, bất kể mẫu thiết bị có sẵn hay không
Các chức năng và tính năng được hỗ trợ cho suy luận trên thiết bị:
- Tạo nội dung một lượt, phát trực tuyến và không phát trực tuyến
- Tạo văn bản từ dữ liệu đầu vào chỉ có văn bản
- Tạo văn bản từ dữ liệu đầu vào là văn bản và hình ảnh, cụ thể là các loại hình ảnh đầu vào JPEG và PNG
- Tạo đầu ra có cấu trúc, bao gồm cả JSON và enum
Bắt đầu
Hướng dẫn này cho bạn biết cách bắt đầu sử dụng SDK Firebase AI Logic cho Web để thực hiện suy luận kết hợp.
Suy luận bằng mô hình trên thiết bị sử dụng Prompt API của Chrome; trong khi đó, suy luận bằng mô hình được lưu trữ trên đám mây sử dụng nhà cung cấp Gemini API mà bạn chọn (Gemini Developer API hoặc Vertex AI Gemini API).
Bắt đầu phát triển bằng localhost, như mô tả trong phần này (bạn cũng có thể tìm hiểu thêm về cách sử dụng API trên localhost trong tài liệu của Chrome). Sau đó, sau khi triển khai tính năng, bạn có thể cho phép người dùng cuối dùng thử tính năng của bạn (không bắt buộc).
Bước 1: Thiết lập Chrome và Prompt API để suy luận trên thiết bị
Đảm bảo bạn đang dùng phiên bản Chrome gần đây. Cập nhật trong chrome://settings/help.
Tính năng suy luận trên thiết bị có trong Chrome phiên bản 139 trở lên.Bật mô hình đa phương thức trên thiết bị bằng cách đặt cờ sau thành Enabled (Đã bật):
chrome://flags/#prompt-api-for-gemini-nano-multimodal-input
Khởi động lại Chrome.
(Không bắt buộc) Tải mô hình trên thiết bị xuống trước yêu cầu đầu tiên.
Prompt API được tích hợp vào Chrome; tuy nhiên, theo mặc định, mô hình trên thiết bị sẽ không hoạt động. Nếu bạn chưa tải mô hình xuống trước yêu cầu đầu tiên về suy luận trên thiết bị, thì yêu cầu sẽ tự động bắt đầu tải mô hình xuống ở chế độ nền.
Bước 2: Thiết lập một dự án Firebase và kết nối ứng dụng của bạn với Firebase
Đăng nhập vào bảng điều khiển Firebase, sau đó chọn dự án Firebase của bạn.
Trong bảng điều khiển Firebase, hãy chuyển đến trang Firebase AI Logic.
Nhấp vào Bắt đầu để chạy một quy trình có hướng dẫn giúp bạn thiết lập các API bắt buộc và tài nguyên cho dự án của mình.
Chọn nhà cung cấp "Gemini API" mà bạn muốn sử dụng với các SDK Firebase AI Logic. Gemini Developer API là lựa chọn nên dùng cho người dùng mới. Bạn có thể thêm thông tin thanh toán hoặc thiết lập Vertex AI Gemini API sau nếu muốn.
Gemini Developer API – billing optional (có trong gói giá Spark không tốn phí và bạn có thể nâng cấp sau nếu muốn)
Bảng điều khiển sẽ bật các API bắt buộc và tạo khoá API Gemini trong dự án của bạn.
Đừng thêm khoá API Gemini này vào cơ sở mã của ứng dụng. Tìm hiểu thêm.Vertex AI Gemini API – bắt buộc phải có thông tin thanh toán (yêu cầu gói giá Blaze trả theo mức sử dụng)
Bảng điều khiển sẽ giúp bạn thiết lập thông tin thanh toán và bật các API bắt buộc trong dự án của mình.
Nếu được nhắc trong quy trình của bảng điều khiển, hãy làm theo hướng dẫn trên màn hình để đăng ký ứng dụng và kết nối ứng dụng đó với Firebase.
Tiếp tục chuyển sang bước tiếp theo trong hướng dẫn này để thêm SDK vào ứng dụng của bạn.
Bước 3: Thêm SDK
Thư viện Firebase cung cấp quyền truy cập vào các API để tương tác với các mô hình tạo sinh. Thư viện này được đưa vào SDK JavaScript của Firebase cho Web.
Cài đặt Firebase JS SDK cho Web bằng npm:
npm install firebase
Khởi động Firebase trong ứng dụng của bạn:
import { initializeApp } from "firebase/app"; // 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);
Bước 4: Khởi động dịch vụ và tạo một phiên bản mô hình
Nhấp vào nhà cung cấp Gemini API để xem nội dung và mã dành riêng cho nhà cung cấp trên trang này. |
Trước khi gửi một câu lệnh đến mô hình Gemini, hãy khởi chạy dịch vụ cho nhà cung cấp API mà bạn đã chọn và tạo một phiên bản GenerativeModel
.
Đặt mode
thành một trong các giá trị sau:
PREFER_ON_DEVICE
: Định cấu hình SDK để sử dụng mô hình trên thiết bị nếu có hoặc quay lại mô hình được lưu trữ trên đám mây.ONLY_ON_DEVICE
: Định cấu hình SDK để sử dụng mô hình trên thiết bị hoặc đưa ra một ngoại lệ.ONLY_IN_CLOUD
: Định cấu hình SDK để không bao giờ sử dụng mô hình trên thiết bị.
Theo mặc định, khi bạn sử dụng PREFER_ON_DEVICE
hoặc ONLY_IN_CLOUD
, mô hình được lưu trữ trên đám mây là gemini-2.0-flash-lite
, nhưng bạn có thể ghi đè giá trị mặc định.
import { initializeApp } from "firebase/app";
import { getAI, getGenerativeModel, GoogleAIBackend, InferenceMode } from "firebase/ai";
// 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 Gemini Developer API backend service
const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() });
// Create a `GenerativeModel` instance
// Set the mode, for example to use on-device model when possible
const model = getGenerativeModel(ai, { mode: InferenceMode.PREFER_ON_DEVICE });
Gửi yêu cầu bằng câu lệnh cho một mô hình
Phần này cung cấp ví dụ về cách gửi nhiều loại dữ liệu đầu vào để tạo ra nhiều loại dữ liệu đầu ra, bao gồm:
- Tạo văn bản từ dữ liệu đầu vào chỉ có văn bản
- Tạo văn bản từ dữ liệu đầu vào dạng văn bản và hình ảnh (đa phương thức)
Nếu bạn muốn tạo đầu ra có cấu trúc (chẳng hạn như JSON hoặc enum), hãy sử dụng một trong các ví dụ "tạo văn bản" sau đây và định cấu hình mô hình để phản hồi theo một giản đồ được cung cấp.
Tạo văn bản từ dữ liệu đầu vào chỉ có văn bản
Trước khi dùng thử mẫu này, hãy đảm bảo rằng bạn đã hoàn tất phần Bắt đầu của hướng dẫn này. |
Bạn có thể dùng generateContent()
để tạo văn bản từ một câu lệnh có chứa văn bản:
// Imports + initialization of FirebaseApp and backend service + creation of model instance
// Wrap in an async function so you can use await
async function run() {
// Provide a prompt that contains text
const prompt = "Write a story about a magic backpack."
// To generate text output, call `generateContent` with the text input
const result = await model.generateContent(prompt);
const response = result.response;
const text = response.text();
console.log(text);
}
run();
Tạo văn bản từ dữ liệu đầu vào dạng văn bản và hình ảnh (đa phương thức)
Trước khi dùng thử mẫu này, hãy đảm bảo rằng bạn đã hoàn tất phần Bắt đầu của hướng dẫn này. |
Bạn có thể dùng generateContent()
để tạo văn bản từ một câu lệnh có chứa tệp văn bản và hình ảnh, bằng cách cung cấp mimeType
của từng tệp đầu vào và chính tệp đó.
Các loại hình ảnh đầu vào được hỗ trợ cho suy luận trên thiết bị là PNG và JPEG.
// Imports + initialization of FirebaseApp and backend service + creation of model instance
// Converts a File object to a Part object.
async function fileToGenerativePart(file) {
const base64EncodedDataPromise = new Promise((resolve) => {
const reader = new FileReader();
reader.onloadend = () => resolve(reader.result.split(',')[1]);
reader.readAsDataURL(file);
});
return {
inlineData: { data: await base64EncodedDataPromise, mimeType: file.type },
};
}
async function run() {
// Provide a text prompt to include with the image
const prompt = "Write a poem about this picture:";
const fileInputEl = document.querySelector("input[type=file]");
const imagePart = await fileToGenerativePart(fileInputEl.files[0]);
// To generate text output, call `generateContent` with the text and image
const result = await model.generateContent([prompt, imagePart]);
const response = result.response;
const text = response.text();
console.log(text);
}
run();
Bạn có thể làm gì khác?
Ngoài các ví dụ trên, bạn cũng có thể cho phép người dùng cuối dùng thử tính năng của bạn, sử dụng các chế độ suy luận thay thế, ghi đè mô hình dự phòng mặc định và sử dụng cấu hình mô hình để kiểm soát các phản hồi.
Cho phép người dùng cuối dùng thử tính năng của bạn
Để cho phép người dùng cuối dùng thử tính năng của bạn, bạn có thể đăng ký tham gia Thử nghiệm nguồn gốc của Chrome. Xin lưu ý rằng các bản dùng thử này có thời lượng và phạm vi sử dụng có giới hạn.
Đăng ký Bản dùng thử theo nguyên gốc Prompt API của Chrome. Bạn sẽ nhận được một mã thông báo.
Cung cấp mã thông báo trên mọi trang web mà bạn muốn bật tính năng dùng thử. Dùng một trong các cách sau:
Cung cấp mã thông báo dưới dạng thẻ meta trong thẻ
<head>
:<meta http-equiv="origin-trial" content="TOKEN">
Cung cấp mã thông báo dưới dạng tiêu đề HTTP:
Origin-Trial: TOKEN
Cung cấp mã thông báo theo phương thức lập trình.
Sử dụng các chế độ suy luận thay thế
Các ví dụ trên đã sử dụng chế độ PREFER_ON_DEVICE
để định cấu hình SDK sử dụng một mô hình trên thiết bị nếu có hoặc quay lại mô hình được lưu trữ trên đám mây. SDK này cung cấp 2 chế độ suy luận thay thế: ONLY_ON_DEVICE
và ONLY_IN_CLOUD
.
Sử dụng chế độ
ONLY_ON_DEVICE
để SDK chỉ có thể sử dụng một mô hình trên thiết bị. Trong cấu hình này, API sẽ báo lỗi nếu không có mô hình trên thiết bị.const model = getGenerativeModel(ai, { mode: InferenceMode.ONLY_ON_DEVICE });
Sử dụng chế độ
ONLY_IN_CLOUD
để SDK chỉ có thể sử dụng một mô hình được lưu trữ trên đám mây.const model = getGenerativeModel(ai, { mode: InferenceMode.ONLY_IN_CLOUD });
Ghi đè mô hình dự phòng mặc định
Khi bạn sử dụng chế độ PREFER_ON_DEVICE
, SDK sẽ chuyển sang dùng một mô hình được lưu trữ trên đám mây nếu không có mô hình trên thiết bị. Mô hình dự phòng mặc định được lưu trữ trên đám mây là gemini-2.0-flash-lite
. Mô hình được lưu trữ trên đám mây này cũng là mô hình mặc định khi bạn sử dụng chế độ ONLY_IN_CLOUD
.
Bạn có thể sử dụng lựa chọn cấu hình inCloudParams
để chỉ định một mô hình mặc định thay thế được lưu trữ trên đám mây:
const model = getGenerativeModel(ai, {
mode: InferenceMode.PREFER_ON_DEVICE,
inCloudParams: {
model: "gemini-2.5-flash"
}
});
Tìm tên mô hình cho tất cả các mô hình Gemini được hỗ trợ.
Sử dụng cấu hình mô hình để kiểm soát câu trả lời
Trong mỗi yêu cầu gửi đến một mô hình, bạn có thể gửi kèm theo một cấu hình mô hình để kiểm soát cách mô hình tạo ra phản hồi. Các mô hình được lưu trữ trên đám mây và mô hình trên thiết bị cung cấp các lựa chọn cấu hình khác nhau.
Cấu hình được duy trì trong suốt thời gian hoạt động của phiên bản. Nếu bạn muốn sử dụng một cấu hình khác, hãy tạo một phiên bản GenerativeModel
mới bằng cấu hình đó.
Thiết lập cấu hình cho một mô hình được lưu trữ trên đám mây
Sử dụng lựa chọn inCloudParams
để định cấu hình một mô hình Gemini được lưu trữ trên đám mây. Tìm hiểu về các thông số hiện có.
const model = getGenerativeModel(ai, {
mode: InferenceMode.PREFER_ON_DEVICE,
inCloudParams: {
model: "gemini-2.5-flash"
temperature: 0.8,
topK: 10
}
});
Đặt cấu hình cho một mô hình trên thiết bị
Xin lưu ý rằng quá trình suy luận bằng mô hình trên thiết bị sẽ sử dụng Prompt API của Chrome.
Sử dụng lựa chọn onDeviceParams
để định cấu hình một mô hình trên thiết bị. Tìm hiểu về các thông số hiện có.
const model = getGenerativeModel(ai, {
mode: InferenceMode.PREFER_ON_DEVICE,
onDeviceParams: {
createOptions: {
temperature: 0.8,
topK: 8
}
}
});
Đặt cấu hình cho đầu ra có cấu trúc
Việc tạo đầu ra có cấu trúc (chẳng hạn như JSON và enum) được hỗ trợ cho suy luận bằng cả mô hình được lưu trữ trên đám mây và mô hình trên thiết bị.
Đối với suy luận kết hợp, hãy sử dụng cả inCloudParams
và onDeviceParams
để định cấu hình mô hình nhằm phản hồi bằng đầu ra có cấu trúc. Đối với các chế độ khác, chỉ sử dụng cấu hình có thể áp dụng.
Đối với
inCloudParams
: Chỉ địnhresponseMimeType
thích hợp (trong ví dụ này làapplication/json
) cũng nhưresponseSchema
mà bạn muốn mô hình sử dụng.Đối với
onDeviceParams
: Chỉ địnhresponseConstraint
mà bạn muốn mô hình sử dụng.
Đầu ra JSON
Ví dụ sau đây điều chỉnh ví dụ về đầu ra JSON chung cho suy luận kết hợp:
import {
getAI,
getGenerativeModel,
Schema
} from "firebase/ai";
const jsonSchema = Schema.object({
properties: {
characters: Schema.array({
items: Schema.object({
properties: {
name: Schema.string(),
accessory: Schema.string(),
age: Schema.number(),
species: Schema.string(),
},
optionalProperties: ["accessory"],
}),
}),
}
});
const model = getGenerativeModel(ai, {
mode: InferenceMode.PREFER_ON_DEVICE,
inCloudParams: {
model: "gemini-2.5-flash"
generationConfig: {
responseMimeType: "application/json",
responseSchema: jsonSchema
},
}
onDeviceParams: {
promptOptions: {
responseConstraint: jsonSchema
}
}
});
Đầu ra enum
Như trên, nhưng điều chỉnh tài liệu về đầu ra enum cho suy luận kết hợp:
// ...
const enumSchema = Schema.enumString({
enum: ["drama", "comedy", "documentary"],
});
const model = getGenerativeModel(ai, {
// ...
generationConfig: {
responseMimeType: "text/x.enum",
responseSchema: enumSchema
},
// ...
});
// ...
Các tính năng chưa có cho suy luận trên thiết bị
Vì là một bản phát hành thử nghiệm, nên không phải tất cả các chức năng của Web SDK đều có sẵn cho suy luận trên thiết bị. Các tính năng sau đây chưa được hỗ trợ cho suy luận trên thiết bị (nhưng thường có sẵn cho suy luận dựa trên đám mây).
Tạo văn bản từ các loại tệp hình ảnh đầu vào khác ngoài JPEG và PNG
- Có thể dự phòng cho mô hình được lưu trữ trên đám mây; tuy nhiên, chế độ
ONLY_ON_DEVICE
sẽ gặp lỗi.
- Có thể dự phòng cho mô hình được lưu trữ trên đám mây; tuy nhiên, chế độ
Tạo văn bản từ nội dung đầu vào là âm thanh, video và tài liệu (chẳng hạn như tệp PDF)
- Có thể dự phòng cho mô hình được lưu trữ trên đám mây; tuy nhiên, chế độ
ONLY_ON_DEVICE
sẽ gặp lỗi.
- Có thể dự phòng cho mô hình được lưu trữ trên đám mây; tuy nhiên, chế độ
Tạo hình ảnh bằng các mô hình Gemini hoặc Imagen
- Có thể dự phòng cho mô hình được lưu trữ trên đám mây; tuy nhiên, chế độ
ONLY_ON_DEVICE
sẽ gặp lỗi.
- Có thể dự phòng cho mô hình được lưu trữ trên đám mây; tuy nhiên, chế độ
Cung cấp tệp bằng URL trong các yêu cầu đa phương thức. Bạn phải cung cấp các tệp dưới dạng dữ liệu nội tuyến cho các mô hình trên thiết bị.
Cuộc trò chuyện nhiều lượt
- Có thể dự phòng cho mô hình được lưu trữ trên đám mây; tuy nhiên, chế độ
ONLY_ON_DEVICE
sẽ gặp lỗi.
- Có thể dự phòng cho mô hình được lưu trữ trên đám mây; tuy nhiên, chế độ
Phát trực tiếp hai chiều bằng Gemini Live API
- Xin lưu ý rằng SDK ứng dụng Firebase AI Logic cho Web không hỗ trợ tính năng này ngay cả đối với các mô hình được lưu trữ trên đám mây.
Sử dụng "công cụ", bao gồm cả tính năng gọi hàm và căn cứ vào thông tin trên Google Tìm kiếm
- Sắp có!
Đếm mã thông báo
- Luôn báo lỗi. Số lượng sẽ khác nhau giữa các mô hình được lưu trữ trên đám mây và mô hình trên thiết bị, vì vậy, không có giải pháp dự phòng trực quan.
Tính năng giám sát AI trong bảng điều khiển Firebase để suy luận trên thiết bị.
- Xin lưu ý rằng mọi suy luận bằng các mô hình được lưu trữ trên đám mây đều có thể được giám sát giống như các suy luận khác bằng SDK ứng dụng Firebase AI Logic cho Web.
Gửi ý kiến phản hồi về trải nghiệm của bạn với Firebase AI Logic