Tạo ứng dụng và tính năng dựa trên AI bằng suy luận kết hợp bằng cách sử dụ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 về các mô hình được lưu trữ trên đám mây một cách liền mạch nếu không.
Với bản phát hành này, bạn có thể sử dụng tính năng suy luận kết hợp bằng SDK ứng dụng Firebase AI Logic cho Web, đồng thời hỗ trợ tính năng 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 tính 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ị cho các ưu đãi suy luận:
- Cải thiện quyền riêng tư
- Bối cảnh cục bộ
- Suy luận miễn phí
- Chức năng ngoại tuyến
Sử dụng ưu đãi chức năng kết hợp:
- Tiếp cận 100% đối tượng, bất kể mẫu thiết bị có sẵn hay không
Các tính năng và chức năng được hỗ trợ để 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ỉ văn bản
- Tạo văn bản từ dữ liệu đầu vào 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.
Dự đoán bằng mô hình trên thiết bị sử dụng Prompt API của Chrome; trong khi dự đoá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 Dev mới nhất.
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 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 máy chủ cục bộ trong tài liệu của Chrome. Bạn có thể tham gia Chương trình dùng thử sớm của Chrome (EPP) để 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 máy:
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 kết quả 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 để dự đoá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 dự án Firebase và kết nối ứng dụng 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 để bắt đầu quy trình làm việc 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 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 – không bắt buộc phải thanh toán (có trong gói giá Spark không tính phí)
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. Bạn có thể thiết lập thông tin thanh toán sau nếu muốn nâng cấp gói giá.Vertex AI Gemini API – bắt buộc phải 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 hệ thống thanh toán và bật các API bắt buộc trong dự án.
Nếu được nhắc trong quy trình làm việc 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 bước tiếp theo trong hướng dẫn này để thêm SDK vào ứng dụng.
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 mô hình tạo sinh. Thư viện này được đưa vào SDK JavaScript Firebase cho web.
Cài đặt SDK JS Firebase 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ớ đưa tính năng này vào lệnh cài đặt.
npm install firebase@eap-ai-hybridinference
Khởi động Firebase trong ứng dụng:
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 chạy dịch vụ và tạo một thực thể 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 lời nhắc đế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 thực thể 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 gửi 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 lời nhắc đến một mô hình
Phần này cung cấp các ví dụ về cách gửi nhiều loại dữ liệu đầu vào để tạo 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ỉ chứa 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 (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à ngoài ra, hãy định cấu hình mô hình để phản hồi theo giản đồ được cung cấp.
Tạo văn bản từ dữ liệu đầu vào chỉ văn bản
Trước khi thử mẫu này, hãy đảm bảo bạn đã hoàn tất phần Bắt đầu của hướng dẫn này. |
Bạn có thể sử dụng generateContent()
để tạo văn bản từ một câu lệnh 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 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 bạn đã hoàn tất phần Bắt đầu của hướng dẫn này. |
Bạn có thể sử 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, cung cấp mimeType
của mỗi tệp đầu vào và chính tệp đó.
Các loại hình ảnh đầu vào được hỗ trợ để 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ô 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 cung cấp hai 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ô 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ô 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 sử dụng 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 tuỳ 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.0-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 phản hồi
Trong mỗi yêu cầu gửi đến một mô hình, bạn có thể gửi kèm một cấu hình mô hình để kiểm soát cách mô hình tạo phản hồi. Mô hình được lưu trữ trên đám mây và mô hình trên thiết bị cung cấp nhiều tuỳ chọn cấu hình.
Cấu hình được duy trì trong suốt thời gian hoạt động của thực thể. Nếu bạn muốn sử dụng một cấu hình khác, hãy tạo một thực thể GenerativeModel
mới bằng cấu hình đó.
Đặt cấu hình cho mô hình được lưu trữ trên đám mây
Sử dụng tuỳ chọn inCloudParams
để định cấu hình 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.0-flash"
temperature: 0.8,
topK: 10
}
});
Thiết lập cấu hình cho mô hình trên thiết bị
Xin lưu ý rằng hoạt động suy luận bằng mô hình trên thiết bị sử dụng Prompt API của Chrome.
Sử dụng tuỳ chọn onDeviceParams
để định cấu hình 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
}
}
});
Thiết lập cấu hình cho đầu ra có cấu trúc
Hoạt động tạo đầu ra có cấu trúc (như JSON và enum) được hỗ trợ cho suy luận bằng cách sử dụ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 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 hiện hành.
Đố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.
Kết quả 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.0-flash"
generationConfig: {
responseMimeType: "application/json",
responseSchema: jsonSchema
},
}
onDeviceParams: {
promptOptions: {
responseConstraint: jsonSchema
}
}
});
Đầu ra enum
Giống 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 hoạt động suy luận trên thiết bị
Là một bản phát hành thử nghiệm, không phải tất cả tính năng của SDK web đều có sẵn cho hoạt động 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 hỗ trợ cho suy luận dựa trên đám mây).
Tạo văn bản từ các loại dữ liệu đầu vào tệp hình ảnh khác ngoài JPEG và PNG
- Có thể sử dụng mô hình được lưu trữ trên đám mây; tuy nhiên, chế độ
only_on_device
sẽ gửi lỗi.
- Có thể sử dụng mô hình được lưu trữ trên đám mây; tuy nhiên, chế độ
Tạo văn bản từ dữ liệu đầu vào âm thanh, video và tài liệu (như PDF)
- Có thể sử dụng mô hình được lưu trữ trên đám mây; tuy nhiên, chế độ
only_on_device
sẽ gửi lỗi.
- Có thể sử dụng mô hình được lưu trữ trên đám mây; tuy nhiên, chế độ
Tạo hình ảnh bằng mô hình Gemini hoặc Imagen
- Có thể sử dụng mô hình được lưu trữ trên đám mây; tuy nhiên, chế độ
only_on_device
sẽ gửi lỗi.
- Có thể sử dụng 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 tệp dưới dạng dữ liệu cùng dòng cho các mô hình trên thiết bị.
Cuộc trò chuyện nhiều lượt
- Có thể sử dụng mô hình được lưu trữ trên đám mây; tuy nhiên, chế độ
only_on_device
sẽ gửi lỗi.
- Có thể sử dụng mô hình được lưu trữ trên đám mây; tuy nhiên, chế độ
Truyền trực tuyến 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.
Lệnh 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à trên thiết bị, vì vậy, không có phương án 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 bạn có thể giám sát mọi hoạt động suy luận bằng các mô hình được lưu trữ trên đám mây giống như các hoạt động 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