Twórz hybrydowe rozwiązania z modelami na urządzeniu i hostowanymi w chmurze


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.

Przejdź do przykładów kodu

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:

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

  1. 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.

  2. Włącz model wielomodowy na urządzeniu, ustawiając ten flagę na Włączone:

    • chrome://flags/#prompt-api-for-gemini-nano-multimodal-input
  3. Uruchom ponownie Chrome.

  4. (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

  1. Zaloguj się w Firebasekonsoli, a potem wybierz projekt Firebase.

  2. W konsoli Firebase otwórz stronę Firebase AI Logic.

  3. Kliknij Rozpocznij, aby uruchomić procedurę, która pomoże Ci skonfigurować wymagane interfejsy API i zasoby w projekcie.

  4. 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 informacji

    • Vertex 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.

  5. 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.

  6. 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.

  1. Zainstaluj pakiet Firebase JS SDK na potrzeby internetu za pomocą npm:

    npm install firebase
    
  2. 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:

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.

  1. Zarejestruj się w testowaniu origin interfejsu Prompt API w Chrome. Otrzymasz token.

  2. 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_DEVICEONLY_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:inCloudParamsonDeviceParams, 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 odpowiedni responseMimeType (w tym przykładzie application/json) oraz responseSchema, którego ma używać model.

  • W przypadku onDeviceParams: określ responseConstraint, 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.
  • 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.
  • 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.
  • 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.
  • 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