Mit Firebase AI Logic können Sie KI-gestützte Apps und Funktionen mit hybrider Inferenz erstellen. Mit der hybriden Inferenz können Sie die Inferenz mit On-Device-Modellen ausführen, wenn diese verfügbar sind, und andernfalls nahtlos auf in der Cloud gehostete Modelle umstellen.
Mit dieser Version ist die hybride Inferenz mit dem Firebase AI Logic-Client-SDK für das Web verfügbar. Außerdem wird die On-Device-Inferenz für Chrome auf dem Computer unterstützt.
Zu den Codebeispielen springen
Empfohlene Anwendungsfälle und unterstützte Funktionen
Empfohlene Anwendungsfälle:
Die Verwendung eines On-Device-Modells für die Inferenz bietet folgende Vorteile:
- Erweiterter Datenschutz
- Lokaler Kontext
- Kostenlose Inferenz
- Offlinefunktionen
Die Verwendung hybrider Funktionen bietet folgende Vorteile:
- 100% Ihrer Zielgruppe erreichen, unabhängig von der Verfügbarkeit des Gerätemodells
Unterstützte Funktionen für die On-Device-Inferenz:
- Inhaltserstellung für einzelne Aufrufe, Streaming und Nicht-Streaming
- Text aus reiner Texteingabe generieren
- Generieren von Text aus Text- und Bildeingaben, insbesondere JPEG- und PNG-Bildern
- Strukturierte Ausgabe generieren, einschließlich JSON und Enumerationen
Jetzt starten
In dieser Anleitung erfahren Sie, wie Sie mit dem Firebase AI Logic SDK für das Web hybride Inferenzen ausführen.
Für die Inferenz mit einem On-Device-Modell wird die Prompt API von Chrome verwendet. Bei der Inferenz mit einem in der Cloud gehosteten Modell wird der von Ihnen ausgewählte Gemini API-Anbieter (Gemini Developer API oder Vertex AI Gemini API) verwendet.
Schritt 1: Chrome und die Prompt API für On-Device-Inferenzen einrichten
Laden Sie die aktuelle Chrome Dev-Version herunter.
On-Device-Inferenzen sind ab Chrome 138 verfügbar.
Aktivieren Sie die Prompt API für Ihre Chrome-Instanz, indem Sie die folgenden Flags festlegen:
chrome://flags/#optimization-guide-on-device-model
: Legen Sie Aktiviert fest.chrome://flags/#prompt-api-for-gemini-nano
: Legen Sie Aktiviert fest.
Weitere Informationen zur Verwendung von APIs auf localhost finden Sie in der Chrome-Dokumentation. Sie können sich optional für das Early Preview Program (EPP) von Chrome registrieren, um Feedback zu geben.
Aktivieren Sie das On-Device-Multimodal-Modell, indem Sie das folgende Flag festlegen:
chrome://flags/#prompt-api-for-gemini-nano-multimodal-input
: Wählen Sie Aktiviert aus.
API lokal prüfen:
Starten Sie Chrome neu.
Öffnen Sie Entwicklertools > Konsole.
Führen Sie den folgenden Befehl aus:
await LanguageModel.availability();
Die Ausgabe muss
available
,downloading
oderdownloadable
sein. .Wenn die Ausgabe
downloadable
ist, können Sie den Modelldownload starten, indem Sieawait LanguageModel.create();
ausführen. Andernfalls wird bei der ersten Anfrage für die On-Device-Inferenz ein Modelldownload im Hintergrund gestartet, der einige Minuten dauern kann.
Schritt 2: Firebase-Projekt einrichten und App mit Firebase verknüpfen
Melden Sie sich in der Firebase Console an und wählen Sie Ihr Firebase-Projekt aus.
Rufen Sie in der Firebase Console die Seite Firebase AI Logic auf.
Klicken Sie auf Jetzt starten, um einen interaktiven Workflow zu starten, mit dem Sie die erforderlichen APIs und Ressourcen für Ihr Projekt einrichten können.
Wähle den Gemini API-Anbieter aus, den du mit den Firebase AI Logic-SDKs verwenden möchtest. Sie können den anderen API-Anbieter jederzeit einrichten und verwenden.
Gemini Developer API – optionale Abrechnung (verfügbar im kostenlosen Spark-Preisplan)
In der Console werden die erforderlichen APIs aktiviert und ein Gemini API-Schlüssel in Ihrem Projekt erstellt.
Fügen Sie diesen Gemini API-Schlüssel nicht der Codebasis Ihrer App hinzu. Weitere InformationenSie können die Abrechnung später einrichten, wenn Sie Ihren Preisplan ändern möchten.
Vertex AI Gemini API – Abrechnung erforderlich (erfordert den Blaze-Preisplan „Pay as you go“)
In der Console können Sie die Abrechnung einrichten und die erforderlichen APIs in Ihrem Projekt aktivieren.
Wenn Sie im Workflow der Console dazu aufgefordert werden, folgen Sie der Anleitung auf dem Bildschirm, um Ihre App zu registrieren und mit Firebase zu verbinden.
Fahren Sie mit dem nächsten Schritt in dieser Anleitung fort, um das SDK Ihrer App hinzuzufügen.
Schritt 3: SDK hinzufügen
Die Firebase-Bibliothek bietet Zugriff auf die APIs für die Interaktion mit generativen Modellen. Die Bibliothek ist im Firebase JavaScript SDK für das Web enthalten.
Installieren Sie das Firebase JS SDK für das Web mit npm.
Die Hybridfunktion wird unter einem anderen npm-Tag veröffentlicht. Fügen Sie es daher in Ihren Installationsbefehl ein.
npm install firebase@eap-ai-hybridinference
Firebase in Ihrer App initialisieren:
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);
Schritt 4: Dienst initialisieren und Modellinstanz erstellen
Klicke auf deinen Gemini API-Anbieter, um dir anbieterspezifische Inhalte und Code auf dieser Seite anzusehen. |
Bevor Sie einen Prompt an ein Gemini-Modell senden, müssen Sie den Dienst für den ausgewählten API-Anbieter initialisieren und eine Gemini-Instanz erstellen.GenerativeModel
Legen Sie für mode
einen der folgenden Werte fest:
prefer_on_device
: Konfiguriert das SDK so, dass das On-Device-Modell verwendet wird, falls verfügbar, oder auf das in der Cloud gehostete Modell zurückgegriffen wird.only_on_device
: Konfiguriert das SDK so, dass das On-Device-Modell verwendet oder eine Ausnahme ausgelöst wird.only_in_cloud
: Das SDK wird so konfiguriert, dass es das On-Device-Modell nie verwendet.
Wenn Sie prefer_on_device
oder only_in_cloud
verwenden, ist standardmäßig das in der Cloud gehostete Modell gemini-2.0-flash-lite
. Sie können den Standardwert jedoch überschreiben.
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" });
Prompt-Anfrage an ein Modell senden
In diesem Abschnitt finden Sie Beispiele dafür, wie Sie verschiedene Arten von Eingaben senden, um verschiedene Arten von Ausgabe zu generieren, darunter:
Wenn Sie strukturierte Ausgabe (z. B. JSON oder Enumerationen) generieren möchten, verwenden Sie eines der folgenden Beispiele für „Text generieren“ und konfigurieren Sie das Modell so, dass es gemäß einem bereitgestellten Schema antwortet.
Text aus reiner Texteingabe generieren
Bevor Sie dieses Beispiel ausprobieren, müssen Sie den Abschnitt Einstieg in dieser Anleitung durchgearbeitet haben. |
Mit generateContent()
können Sie Text aus einem Prompt generieren, der Text enthält:
// 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();
Text aus multimodaler Eingabe (Text und Bild) generieren
Bevor Sie dieses Beispiel ausprobieren, müssen Sie den Abschnitt Einstieg in dieser Anleitung durchgearbeitet haben. |
Mit generateContent()
können Sie Text aus einem Prompt generieren, der Text- und Bilddateien enthält. Geben Sie dazu die mimeType
der einzelnen Eingabedateien und die Datei selbst an.
Die unterstützten Eingabebildtypen für die On-Device-Inferenz sind PNG und 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();
Was können Sie sonst noch tun?
Zusätzlich zu den oben genannten Beispielen können Sie auch alternative Inferenzmodi verwenden, das Standard-Fallback-Modell überschreiben und die Modellkonfiguration zum Steuern von Antworten verwenden.
Alternative Inferenzmodi verwenden
In den Beispielen oben wurde der Modus prefer_on_device
verwendet, um das SDK so zu konfigurieren, dass ein On-Device-Modell verwendet wird, falls verfügbar, oder ein cloudbasiertes Modell als Ausweichoption verwendet wird. Das SDK bietet zwei alternative Inferenzmodi: only_on_device
und only_in_cloud
.
Verwenden Sie den Modus
only_on_device
, damit das SDK nur ein On-Device-Modell verwenden kann. Bei dieser Konfiguration gibt die API einen Fehler zurück, wenn kein On-Device-Modell verfügbar ist.const model = getGenerativeModel(ai, { mode: "only_on_device" });
Verwenden Sie den Modus
only_in_cloud
, damit das SDK nur ein in der Cloud gehostetes Modell verwenden kann.const model = getGenerativeModel(ai, { mode: "only_in_cloud" });
Standard-Fallback-Modell überschreiben
Wenn Sie den Modus prefer_on_device
verwenden, greift das SDK auf ein in der Cloud gehostetes Modell zurück, wenn kein Modell auf dem Gerät verfügbar ist. Das standardmäßige cloudbasierte Fallback-Modell ist gemini-2.0-flash-lite
. Dieses in der Cloud gehostete Modell ist auch die Standardeinstellung, wenn Sie den Modusonly_in_cloud
verwenden.
Mit der Konfigurationsoption inCloudParams
können Sie ein alternatives cloudbasiertes Standardmodell angeben:
const model = getGenerativeModel(ai, {
mode: 'prefer_on_device',
inCloudParams: {
model: "gemini-2.0-flash"
}
});
Hier finden Sie die Modellnamen aller unterstützten Gemini-Modelle.
Antworten mithilfe der Modellkonfiguration steuern
Sie können in jeder Anfrage an ein Modell eine Modellkonfiguration senden, um zu steuern, wie das Modell eine Antwort generiert. Cloud-gehostete Modelle und Modelle auf dem Gerät bieten unterschiedliche Konfigurationsoptionen.
Die Konfiguration bleibt während der gesamten Lebensdauer der Instanz erhalten. Wenn Sie eine andere Konfiguration verwenden möchten, erstellen Sie eine neue GenerativeModel
-Instanz mit dieser Konfiguration.
Konfiguration für ein in der Cloud gehostetes Modell festlegen
Verwenden Sie die Option inCloudParams
, um ein in der Cloud gehostetes Gemini-Modell zu konfigurieren. Weitere Informationen zu verfügbaren Parametern
const model = getGenerativeModel(ai, {
mode: 'prefer_on_device',
inCloudParams: {
model: "gemini-2.0-flash"
temperature: 0.8,
topK: 10
}
});
Konfiguration für ein On-Device-Modell festlegen
Für die Inferenz mit einem On-Device-Modell wird die Prompt API von Chrome verwendet.
Verwenden Sie die Option onDeviceParams
, um ein On-Device-Modell zu konfigurieren. Weitere Informationen zu verfügbaren Parametern
const model = getGenerativeModel(ai, {
mode: 'prefer_on_device',
onDeviceParams: {
createOptions: {
temperature: 0.8,
topK: 8
}
}
});
Konfiguration für strukturierte Ausgabe festlegen
Das Generieren strukturierter Ausgabe (z. B. JSON und Enumerationen) wird sowohl für die Inferenz mit cloudbasierten als auch mit On-Device-Modellen unterstützt.
Verwenden Sie für die hybride Inferenz sowohl inCloudParams
als auch onDeviceParams
, um das Modell so zu konfigurieren, dass es mit strukturierter Ausgabe antwortet. Verwenden Sie für die anderen Modi nur die entsprechende Konfiguration.
Für
inCloudParams
: Geben Sie die entsprechenderesponseMimeType
(in diesem Beispielapplication/json
) sowie dieresponseSchema
an, die vom Modell verwendet werden soll.Für
onDeviceParams
: Geben Sie dieresponseConstraint
an, die das Modell verwenden soll.
JSON-Ausgabe
Im folgenden Beispiel wird das allgemeine JSON-Ausgabebeispiel für die hybride Inferenz angepasst:
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
}
}
});
Enum-Ausgabe
Wie oben, aber mit Anpassung der Dokumentation zur Aufzählungsausgabe für die hybride Inferenz:
// ...
const enumSchema = Schema.enumString({
enum: ["drama", "comedy", "documentary"],
});
const model = getGenerativeModel(ai, {
// ...
generationConfig: {
responseMimeType: "text/x.enum",
responseSchema: enumSchema
},
// ...
Funktionen, die für die On-Device-Inferenz noch nicht verfügbar sind
Da es sich um eine experimentelle Version handelt, sind nicht alle Funktionen des Web SDK für die On-Device-Inferenz verfügbar. Die folgenden Funktionen werden noch nicht für die On-Device-Inferenz unterstützt, sind aber in der Regel für die cloudbasierte Inferenz verfügbar.
Text aus anderen Bilddateitypen als JPEG und PNG generieren
- Es kann auf das in der Cloud gehostete Modell zurückgegriffen werden. Im
only_on_device
-Modus wird jedoch ein Fehler ausgegeben.
- Es kann auf das in der Cloud gehostete Modell zurückgegriffen werden. Im
Text aus Audio-, Video- und Dokumenten (z. B. PDFs) generieren
- Es kann auf das in der Cloud gehostete Modell zurückgegriffen werden. Im
only_on_device
-Modus wird jedoch ein Fehler ausgegeben.
- Es kann auf das in der Cloud gehostete Modell zurückgegriffen werden. Im
Bilder mit Gemini- oder Imagen-Modellen generieren
- Es kann auf das in der Cloud gehostete Modell zurückgegriffen werden. Im
only_on_device
-Modus wird jedoch ein Fehler ausgegeben.
- Es kann auf das in der Cloud gehostete Modell zurückgegriffen werden. Im
Dateien über URLs in multimodalen Anfragen bereitstellen Sie müssen Dateien als Inline-Daten für Modelle auf dem Gerät bereitstellen.
Wechselseitiger Chat
- Es kann auf das in der Cloud gehostete Modell zurückgegriffen werden. Im
only_on_device
-Modus wird jedoch ein Fehler ausgegeben.
- Es kann auf das in der Cloud gehostete Modell zurückgegriffen werden. Im
Bidirektionales Streaming mit der Gemini Live API
- Das ist vom Firebase AI Logic-Client-SDK für das Web auch für in der Cloud gehostete Modelle nicht unterstützt.
Funktionsaufrufe
- Bald verfügbar!
Tokens zählen
- Erzeugt immer einen Fehler. Die Anzahl unterscheidet sich zwischen cloudbasierten und On-Device-Modellen. Es gibt also keinen intuitiven Fallback.
KI-Monitoring in der Firebase Console für On-Device-Inferenzen
- Alle Inferenzen mit den in der Cloud gehosteten Modellen können genau wie andere Inferenzen mit dem Firebase AI Logic-Client-SDK für das Web überwacht werden.
Feedback zu Firebase AI Logic geben