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 suy luận trên thiết bị để cung cấp:
- 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ước 1: Thiết lập Chrome và Prompt API để suy luận trên thiết bị
Tải bản dựng Chrome Beta mới nhất xuống.
Tính năng suy luận trên thiết bị có trong Chrome phiên bản 138 trở lên.
Bật Prompt API cho phiên bản Chrome của bạn bằng cách đặt các cờ sau:
chrome://flags/#optimization-guide-on-device-model
: Đặt thành Đã bật.chrome://flags/#prompt-api-for-gemini-nano
: Đặt thành Đã bật.
Tìm hiểu thêm về cách sử dụng API trên localhost trong tài liệu của Chrome. Bạn có thể tham gia Chương trình dùng thử sớm (EPP) của Chrome để gửi ý kiến phản hồi.
Bật mô hình đa phương thức trên thiết bị bằng cách đặt cờ sau:
chrome://flags/#prompt-api-for-gemini-nano-multimodal-input
: Đặt thành Đã bật.
Xác minh API trên thiết bị:
Khởi động lại Chrome.
Mở Công cụ cho nhà phát triển > Bảng điều khiển.
Chạy lệnh sau:
await LanguageModel.availability();
Đảm bảo rằng đầu ra là
available
,downloading
hoặcdownloadable
. .Nếu đầu ra là
downloadable
, bạn có thể bắt đầu tải mô hình xuống bằng cách chạyawait LanguageModel.create();
. Nếu không, yêu cầu đầu tiên về suy luận trên thiết bị sẽ bắt đầu tải mô hình xuống ở chế độ nền. Quá trình này có thể mất vài phút.
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. Bạn luôn có thể thiết lập và sử dụng nhà cung cấp API khác sau này 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.
Tính năng kết hợp được phát hành theo một thẻ npm khác, vì vậy, hãy nhớ thêm thẻ này vào lệnh cài đặt.
npm install firebase@eap-ai-hybridinference
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 } 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: "prefer_on_device" });
Gửi yêu cầu cho 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 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 là văn bản và hình ảnh (đa phương thức)
Trước khi 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 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ể 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.
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: "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: "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: '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 câu trả lờ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 tham số có sẵn.
const model = getGenerativeModel(ai, {
mode: '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 tham số có sẵn.
const model = getGenerativeModel(ai, {
mode: '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: '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ó sẵn 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.
Gọi hà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