Twórz aplikacje i funkcje oparte na AI z wykorzystaniem wnioskowania hybrydowego za pomocą Firebase AI Logic. Wnioskowanie hybrydowe umożliwia przeprowadzanie wnioskowania przy użyciu modeli na urządzeniu, gdy są one dostępne, i bezproblemowe przełączanie się na modele hostowane w chmurze w innych przypadkach.
W tej wersji dostępna jest wnioskowanie hybrydowe za pomocą Firebase AI Logicpakietu SDK klienta na potrzeby internetu z obsługą wnioskowania na urządzeniu w Chrome na komputerze.
Zalecane przypadki użycia i obsługiwane funkcje
Zalecane przypadki użycia:
Korzystanie z modelu na urządzeniu do wnioskowania zapewnia:
- Zwiększona prywatność
- Kontekst lokalny
- Wnioskowanie bez opłat
- Funkcje offline
Korzystanie z funkcji hybrydowych:
- Docieraj do 100% odbiorców niezależnie od dostępności modelu urządzenia
Obsługiwane funkcje wnioskowania na urządzeniu:
- Generowanie treści w jednej turze, strumieniowanie i niestrumieniowanie
- Generowanie tekstu na podstawie danych wejściowych zawierających tylko tekst
- generowanie tekstu na podstawie danych wejściowych w postaci tekstu i obrazu, w szczególności obrazów wejściowych w formatach JPEG i PNG;
- Generowanie uporządkowanych danych wyjściowych, w tym plików JSON i wyliczeń
Rozpocznij
Z tego przewodnika dowiesz się, jak zacząć korzystać z Firebase AI Logicpakietu SDK do internetu, aby przeprowadzać wnioskowanie hybrydowe.
Wnioskowanie z użyciem modelu na urządzeniu korzysta z interfejsu Prompt API w Chrome, natomiast wnioskowanie z użyciem modelu hostowanego w chmurze korzysta z wybranego przez Ciebie dostawcy Gemini API (Gemini Developer API lub Vertex AI Gemini API).
Rozpocznij tworzenie aplikacji za pomocą hosta lokalnego zgodnie z opisem w tej sekcji (więcej informacji o korzystaniu z interfejsów API na hoście lokalnym znajdziesz w dokumentacji Chrome). Gdy wdrożysz funkcję, możesz opcjonalnie umożliwić użytkownikom jej wypróbowanie.
Krok 1. Skonfiguruj Chrome i interfejs Prompt API do wnioskowania na urządzeniu
Upewnij się, że używasz najnowszej wersji Chrome. Zaktualizuj w chrome://settings/help.
Wnioskowanie na urządzeniu jest dostępne w Chrome w wersji 139 i nowszych.Włącz model wielomodowy na urządzeniu, ustawiając ten flagę na Włączone:
chrome://flags/#prompt-api-for-gemini-nano-multimodal-input
Uruchom ponownie Chrome.
(Opcjonalnie) Pobierz model na urządzenie przed pierwszą prośbą.
Interfejs Prompt API jest wbudowany w Chrome, ale model na urządzeniu nie jest domyślnie dostępny. Jeśli przed pierwszym żądaniem wnioskowania na urządzeniu nie pobierzesz jeszcze modelu, żądanie automatycznie rozpocznie pobieranie modelu w tle.
Krok 2. Skonfiguruj projekt Firebase i połącz aplikację z Firebase
Zaloguj się w Firebasekonsoli, a potem wybierz projekt Firebase.
W konsoli Firebase otwórz stronę Firebase AI Logic.
Kliknij Rozpocznij, aby uruchomić procedurę, która pomoże Ci skonfigurować wymagane interfejsy API i zasoby w projekcie.
Wybierz dostawcę „Gemini API”, którego chcesz używać z pakietami SDK Firebase AI Logic. Gemini Developer API jest zalecany dla nowych użytkowników. Jeśli chcesz, możesz później dodać informacje rozliczeniowe lub skonfigurować Vertex AI Gemini API.
Gemini Developer API – rozliczenia opcjonalne (dostępne w bezpłatnym planie cenowym Spark, z możliwością późniejszego przejścia na wyższy poziom)
Konsola włączy wymagane interfejsy API i utworzy w projekcie Geminiklucz interfejsu API.
Nie dodawaj tego klucza interfejsu API Gemini do kodu aplikacji. Więcej informacjiVertex AI Gemini API – wymagane rozliczenia (wymaga planu cenowego Blaze z płatnością za wykorzystanie)
Konsola pomoże Ci skonfigurować rozliczenia i włączyć w projekcie wymagane interfejsy API.
Jeśli w procesie w konsoli pojawi się odpowiedni monit, postępuj zgodnie z instrukcjami wyświetlanymi na ekranie, aby zarejestrować aplikację i połączyć ją z Firebase.
Aby dodać pakiet SDK do aplikacji, przejdź do następnego kroku w tym przewodniku.
Krok 3. Dodaj pakiet SDK
Biblioteka Firebase zapewnia dostęp do interfejsów API do interakcji z modelami generatywnymi. Biblioteka jest częścią pakietu Firebase JavaScript SDK dla internetu.
Zainstaluj pakiet Firebase JS SDK na potrzeby internetu za pomocą npm:
npm install firebase
Zainicjuj Firebase w aplikacji:
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);
Krok 4. Zainicjuj usługę i utwórz instancję modelu
Kliknij Gemini API dostawcę, aby wyświetlić na tej stronie treści i kod specyficzne dla tego dostawcy. |
Przed wysłaniem promptu do modelu Gemini zainicjuj usługę dla wybranego dostawcy interfejsu API i utwórz instancję GenerativeModel
.
Ustaw wartość mode
na jedną z tych opcji:
PREFER_ON_DEVICE
: konfiguruje pakiet SDK tak, aby używał modelu na urządzeniu, jeśli jest dostępny, lub przełączał się na model hostowany w chmurze.ONLY_ON_DEVICE
: konfiguruje pakiet SDK tak, aby używał modelu na urządzeniu lub zgłaszał wyjątek.ONLY_IN_CLOUD
: konfiguruje pakiet SDK tak, aby nigdy nie używał modelu na urządzeniu.
Domyślnie, gdy używasz PREFER_ON_DEVICE
lub ONLY_IN_CLOUD
, model hostowany w chmurze to gemini-2.0-flash-lite
, ale możesz zastąpić ustawienie domyślne.
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 });
Wysyłanie do modelu żądania prompta
W tej sekcji znajdziesz przykłady wysyłania różnych typów danych wejściowych w celu generowania różnych typów danych wyjściowych, w tym:
- Generowanie tekstu na podstawie danych wejściowych zawierających tylko tekst
- Generowanie tekstu na podstawie danych wejściowych w postaci tekstu i obrazu (multimodalnych)
Jeśli chcesz generować dane wyjściowe o strukturze (np. JSON lub wyliczenia), użyj jednego z tych przykładów „generowania tekstu” i dodatkowo skonfiguruj model tak, aby odpowiadał zgodnie z podanym schematem.
Generowanie tekstu na podstawie danych wejściowych zawierających tylko tekst
Zanim wypróbujesz ten przykład, zapoznaj się z sekcją Pierwsze kroki w tym przewodniku. |
Możesz użyć
generateContent()
do wygenerowania tekstu na podstawie prompta zawierającego tekst:
// 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();
Pamiętaj, że Firebase AI Logic obsługuje też strumieniowanie odpowiedzi tekstowych za pomocą generateContentStream
(zamiast generateContent
).
Generowanie tekstu na podstawie danych wejściowych w postaci tekstu i obrazu (multimodalnych)
Zanim wypróbujesz ten przykład, zapoznaj się z sekcją Pierwsze kroki w tym przewodniku. |
Możesz użyć generateContent()
, aby wygenerować tekst na podstawie prompta zawierającego pliki tekstowe i pliki z obrazem. W tym celu podaj mimeType
każdego pliku wejściowego i sam plik.
Obsługiwane typy obrazów wejściowych do wnioskowania na urządzeniu to PNG i 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();
Pamiętaj, że Firebase AI Logic obsługuje też strumieniowanie odpowiedzi tekstowych za pomocą generateContentStream
(zamiast generateContent
).
Co jeszcze możesz zrobić?
Oprócz powyższych przykładów możesz też umożliwić użytkownikom wypróbowanie Twojej funkcji, używać alternatywnych trybów wnioskowania, zastępować domyślny model rezerwowy i używać konfiguracji modelu do kontrolowania odpowiedzi.
Umożliwianie użytkownikom wypróbowania funkcji
Aby umożliwić użytkownikom wypróbowanie Twojej funkcji, możesz zarejestrować się w programie Chrome Origin Trials. Pamiętaj, że okres próbny ma ograniczony czas trwania i zakres wykorzystania.
Zarejestruj się w testowaniu origin interfejsu Prompt API w Chrome. Otrzymasz token.
Podaj token na każdej stronie internetowej, na której chcesz włączyć funkcję próbną. Użyj jednej z tych opcji:
Podaj token jako metatag w tagu
<head>
:<meta http-equiv="origin-trial" content="TOKEN">
Podaj token jako nagłówek HTTP:
Origin-Trial: TOKEN
Podaj token automatycznie.
Korzystanie z alternatywnych trybów wnioskowania
W przykładach powyżej użyto trybu PREFER_ON_DEVICE
, aby skonfigurować pakiet SDK do korzystania z modelu na urządzeniu, jeśli jest dostępny, lub do przełączania się na model hostowany w chmurze. Pakiet SDK oferuje 2 alternatywne tryby wnioskowania: ONLY_ON_DEVICE
i ONLY_IN_CLOUD
.
Użyj trybu
ONLY_ON_DEVICE
, aby pakiet SDK mógł korzystać tylko z modelu na urządzeniu. W tej konfiguracji interfejs API zgłosi błąd, jeśli model na urządzeniu nie będzie dostępny.const model = getGenerativeModel(ai, { mode: InferenceMode.ONLY_ON_DEVICE });
Użyj trybu
ONLY_IN_CLOUD
, aby pakiet SDK mógł korzystać tylko z modelu hostowanego w chmurze.const model = getGenerativeModel(ai, { mode: InferenceMode.ONLY_IN_CLOUD });
Zastępowanie domyślnego modelu rezerwowego
Jeśli używasz trybu PREFER_ON_DEVICE
, pakiet SDK przełączy się na model hostowany w chmurze, jeśli model na urządzeniu będzie niedostępny. Domyślny model rezerwowy hostowany w chmurze to gemini-2.0-flash-lite
. Ten model hostowany w chmurze jest też domyślnym, gdy używasz trybuONLY_IN_CLOUD
.
Aby określić alternatywny domyślny model hostowany w chmurze, możesz użyć opcji konfiguracji inCloudParams
:
const model = getGenerativeModel(ai, {
mode: InferenceMode.PREFER_ON_DEVICE,
inCloudParams: {
model: "gemini-2.5-flash"
}
});
Znajdź nazwy wszystkich obsługiwanych modeli Gemini.
Kontrolowanie odpowiedzi za pomocą konfiguracji modelu
W każdym żądaniu wysyłanym do modelu możesz przesłać konfigurację modelu, aby określić, jak ma on generować odpowiedź. Modele hostowane w chmurze i modele na urządzeniu oferują różne opcje konfiguracji.
Konfiguracja jest utrzymywana przez cały okres istnienia instancji. Jeśli chcesz użyć innej konfiguracji, utwórz nową instancję GenerativeModel
z tą konfiguracją.
Ustawianie konfiguracji modelu hostowanego w chmurze
Użyj opcji
inCloudParams
, aby skonfigurować model Gemini hostowany w chmurze. Dowiedz się więcej o dostępnych parametrach.
const model = getGenerativeModel(ai, {
mode: InferenceMode.PREFER_ON_DEVICE,
inCloudParams: {
model: "gemini-2.5-flash"
temperature: 0.8,
topK: 10
}
});
Ustawianie konfiguracji modelu na urządzeniu
Pamiętaj, że wnioskowanie z użyciem modelu na urządzeniu korzysta z interfejsu Prompt API w Chrome.
Użyj opcji
onDeviceParams
, aby skonfigurować model na urządzeniu. Dowiedz się więcej o dostępnych parametrach.
const model = getGenerativeModel(ai, {
mode: InferenceMode.PREFER_ON_DEVICE,
onDeviceParams: {
createOptions: {
temperature: 0.8,
topK: 8
}
}
});
Ustawianie konfiguracji danych wyjściowych o strukturze (np. JSON)
Generowanie danych wyjściowych o strukturze (np. JSON i wyliczenia) jest obsługiwane w przypadku wnioskowania z użyciem modeli hostowanych w chmurze i na urządzeniu.
W przypadku wnioskowania hybrydowego użyj obu tych elementów:inCloudParams
i onDeviceParams
, aby skonfigurować model tak, aby odpowiadał w formacie strukturalnym. W przypadku pozostałych trybów używaj tylko odpowiedniej konfiguracji.
W przypadku
inCloudParams
: określ odpowiedniresponseMimeType
(w tym przykładzieapplication/json
) orazresponseSchema
, którego ma używać model.W przypadku
onDeviceParams
: określresponseConstraint
, którego ma używać model.
Dane wyjściowe JSON
W tym przykładzie dostosowano ogólny przykład danych wyjściowych w formacie JSON do wnioskowania hybrydowego:
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
}
}
});
Wynik w formie wyliczenia
Jak wyżej, ale z dostosowaniem dokumentacji dotyczącej danych wyjściowych typu wyliczeniowego do wnioskowania hybrydowego:
// ...
const enumSchema = Schema.enumString({
enum: ["drama", "comedy", "documentary"],
});
const model = getGenerativeModel(ai, {
// ...
generationConfig: {
responseMimeType: "text/x.enum",
responseSchema: enumSchema
},
// ...
});
// ...
Funkcje, które nie są jeszcze dostępne w przypadku wnioskowania na urządzeniu
W wersji eksperymentalnej nie wszystkie funkcje pakietu Web SDK są dostępne w przypadku wnioskowania na urządzeniu. Te funkcje nie są jeszcze obsługiwane w przypadku wnioskowania na urządzeniu (ale zwykle są dostępne w przypadku wnioskowania w chmurze).
Generowanie tekstu z plików graficznych w formatach innych niż JPEG i PNG
- Może przełączyć się na model hostowany w chmurze, ale w trybie
ONLY_ON_DEVICE
wystąpi błąd.
- Może przełączyć się na model hostowany w chmurze, ale w trybie
generowanie tekstu na podstawie danych wejściowych audio, wideo i dokumentów (np. plików PDF);
- Może przełączyć się na model hostowany w chmurze, ale w trybie
ONLY_ON_DEVICE
wystąpi błąd.
- Może przełączyć się na model hostowany w chmurze, ale w trybie
Generowanie obrazów za pomocą modeli Gemini lub Imagen
- Może przełączyć się na model hostowany w chmurze, ale w trybie
ONLY_ON_DEVICE
wystąpi błąd.
- Może przełączyć się na model hostowany w chmurze, ale w trybie
Przesyłanie plików za pomocą adresów URL w żądaniach multimodalnych. Pliki musisz przekazywać jako dane wbudowane do modeli na urządzeniu.
Czat wieloetapowy
- Może przełączyć się na model hostowany w chmurze, ale w trybie
ONLY_ON_DEVICE
wystąpi błąd.
- Może przełączyć się na model hostowany w chmurze, ale w trybie
Dwukierunkowe przesyłanie strumieniowe za pomocą Gemini Live API
- Pamiętaj, że nie jest to obsługiwane przez Firebase AI Logicpakiet SDK klienta na potrzeby internetu, nawet w przypadku modeli hostowanych w chmurze.
Korzystanie z „narzędzi”, w tym wywoływanie funkcji i grounding w wyszukiwarce Google
- Już wkrótce!
Liczba tokenów
- Zawsze zwraca błąd. Liczba będzie się różnić w przypadku modeli hostowanych w chmurze i modeli na urządzeniu, więc nie ma intuicyjnego rozwiązania rezerwowego.
Monitorowanie AI w konsoli Firebase na potrzeby wnioskowania na urządzeniu.
- Pamiętaj, że wszelkie wnioskowanie z użyciem modeli hostowanych w chmurze można monitorować tak samo jak inne wnioskowanie z użyciem Firebase AI Logicpakietu SDK klienta na potrzeby internetu.
Prześlij opinię o korzystaniu z usługi Firebase AI Logic