Propozycje hybrydowych AI za pomocą Firebase AI Logic

Data publikacji: 20 maja 2025 r.

Wbudowany interfejs Prompt API jest dostępny dla rozszerzeń Chrome w systemach Windows, macOS i Linux od wersji 138 stabilnej. Interfejs API będzie wkrótce dostępny w ramach wersji próbnej origin w Chrome.

Interfejs API nie jest obsługiwany przez inne przeglądarki, ChromeOS ani systemy operacyjne mobilne (takie jak Android czy iOS). Nawet jeśli przeglądarka obsługuje ten interfejs API, może się on nie uruchomić z powodu braku spełnienia wymagań sprzętowych.

Aby zaspokoić potrzeby użytkowników, niezależnie od używanej przez nich platformy lub sprzętu, możesz skonfigurować przełączenie na chmurę za pomocą Firebase AI Logic.

Tworzenie hybrydowych rozwiązań AI

Wbudowana AI zapewnia wiele korzyści, w tym:

  • Lokalne przetwarzanie danych wrażliwych: jeśli pracujesz z danymi wrażliwymi, możesz oferować użytkownikom funkcje AI z szyfrowaniem end-to-end.
  • Używanie AI offline: użytkownicy mogą korzystać z funkcji AI nawet wtedy, gdy są offline lub mają przerwane połączenie z internetem.

Te korzyści nie dotyczą aplikacji w chmurze, ale możesz zapewnić płynne działanie osobom, które nie mają dostępu do wbudowanej AI.

Pierwsze kroki z Firebase

Najpierw utwórz projekt Firebase i zarejestruj aplikację internetową. Następnie kontynuuj konfigurowanie pakietu SDK Firebase JavaScript zgodnie z dokumentacją Firebase.

Instalowanie pakietu SDK

Ten proces wykorzystuje npm i wymaga użycia narzędzi do tworzenia pakietów modułów lub narzędzia do tworzenia frameworków JavaScript. Firebase AI Logic jest zoptymalizowany pod kątem współpracy z modułami zbiorczymi, aby eliminować nieużywany kod (usuwanie nieużywanych fragmentów kodu) i zmniejszać rozmiar pakietu SDK.

npm install firebase@eap-ai-hybridinference

Korzystanie z Firebase AI Logic

Po zainstalowaniu Firebase zainicjuj pakiet SDK, aby zacząć korzystać z usług Firebase.

Konfigurowanie i inicjowanie aplikacji Firebase

Projekt Firebase może zawierać kilka aplikacji Firebase. Aplikacja Firebase to obiekt podobny do kontenera, który przechowuje wspólną konfigurację i udostępnia uwierzytelnianie w różnych usługach Firebase.

Aplikacja Firebase stanowi część chmurową hybrydowej funkcji AI.

import { initializeApp } from 'firebase/app';
import { getAI, getGenerativeModel } from 'firebase/vertexai';

// TODO: Replace the following with your app's Firebase project configuration.
const firebaseConfig = {
  apiKey: '',
  authDomain: '',
  projectId: '',
  storageBucket: '',
  messagingSenderId: '',
  appId: '',
};

// Initialize `FirebaseApp`.
const firebaseApp = initializeApp(firebaseConfig);

Prośba o model

Po zainicjowaniu możesz zapytać model za pomocą tekstu lub danych multimodalnych.

Prompty tekstowe

Instrukcje dla modelu możesz podać w zwykłym tekście. Możesz na przykład poprosić model o opowiedzenie dowcipu.

Aby mieć pewność, że wbudowana AI jest używana, gdy jest dostępna w funkcji getGenerativeModel, ustaw wartość mode na prefer_on_device.

// Initialize the Google AI service.
const googleAI = getAI(firebaseApp);

// Create a `GenerativeModel` instance with a model that supports your use case.
const model = getGenerativeModel(googleAI, { mode: 'prefer_on_device' });

const prompt = 'Tell me a joke';

const result = await model.generateContentStream(prompt);

for await (const chunk of result.stream) {
  const chunkText = chunk.text();
  console.log(chunkText);
}
console.log('Complete response', await result.response);

Prompty multimodalne

Oprócz tekstu możesz też używać obrazów lub dźwięku. Możesz poprosić model o opisanie zawartości obrazu lub transkrypcję pliku audio.

Obrazy muszą być przekazywane jako ciąg tekstowy z kodowaniem Base64 w postaci obiektu FileDataPart w Firebase. Można to zrobić za pomocą funkcji pomocniczej fileToGenerativePart().

// Converts a File object to a `FileDataPart` object.
// https://firebase.google.com/docs/reference/js/vertexai.filedatapart
async function fileToGenerativePart(file) {
    const base64EncodedDataPromise = new Promise((resolve) => {
      const reader = new FileReader();
      reader.onload = () => resolve(reader.result.split(',')[1]);
      reader.readAsDataURL(file);
    });

    return {
      inlineData: { data: await base64EncodedDataPromise, mimeType: file.type },
    };
  }

  const fileInputEl = document.querySelector('input[type=file]');

  fileInputEl.addEventListener('change', async () => {
    const prompt = 'Describe the contents of this image.';

    const imagePart = await fileToGenerativePart(fileInputEl.files[0]);

    // To generate text output, call generateContent with the text and image
    const result = await model.generateContentStream([prompt, imagePart]);

    for await (const chunk of result.stream) {
      const chunkText = chunk.text();
      console.log(chunkText);
    }
    console.log(Complete response: ', await result.response);
  });

Prezentacja

Wypróbuj demo Firebase AI Logic na różnych urządzeniach i w różnych przeglądarkach. Możesz sprawdzić, czy odpowiedź modelu pochodzi z wbudowanego modelu AI, czy z chmury.

Na obsługiwanym sprzęcie w Chrome demo korzysta z Prompt API i Gemini Nano. Wystąpiły tylko 3 żądania dotyczące dokumentu głównego, pliku JavaScript i pliku CSS.

Logika sztucznej inteligencji Firebase działająca w Chrome przy użyciu wbudowanych interfejsów API AI.

W innej przeglądarce lub systemie operacyjnym bez wbudowanego wsparcia dla AI wysyłana jest dodatkowa prośba do punktu końcowego Firebase:https://firebasevertexai.googleapis.com.

Logika sztucznej inteligencji Firebase działająca w Safari wysyłająca żądanie do serwerów Firebase.

Udział w badaniu i przesyłanie opinii

Firebase AI Logic może być świetnym rozwiązaniem do integracji funkcji AI z aplikacjami internetowymi. Dzięki możliwości korzystania z chmury, gdy interfejs Prompt API jest niedostępny, SDK zapewnia większą dostępność i większą niezawodność funkcji AI.

Pamiętaj, że aplikacje w chmurze stwarzają nowe oczekiwania dotyczące prywatności i funkcjonalności, dlatego ważne jest, aby poinformować użytkowników, gdzie są przetwarzane ich dane.