Przejście z wersji wstępnej pakietu SDK Vertex AI w Firebase na pakiety SDK Firebase Logic AI


Firebase AI Logic i jego pakiety SDK dla klienta nazywały się wcześniej „Vertex AI in Firebase”. Aby lepiej odzwierciedlać rozszerzone usługi i funkcje (np. teraz obsługujemy Gemini Developer API!), zmieniliśmy nazwę naszych usług i pakietów na Firebase AI Logic.

Aby uzyskać bezpieczny dostęp do generatywnych modeli AI od Google bezpośrednio z aplikacji mobilnych lub internetowych, możesz teraz wybrać dostawcę „Gemini API” – może to być dostępny od dawna model Vertex AI Gemini API lub nowy model Gemini Developer API. Oznacza to, że możesz teraz korzystać z opcji Gemini Developer API, która zapewnia poziom bezpłatny z rozsądnymi limitami stawek i limitami.

Omówienie kroków, które należy wykonać, aby przejść na Firebase AI Logic SDK

  • Krok 1. Wybierz najlepszego dostawcę „Gemini API” do swojej aplikacji i przypadków użycia.

  • Krok 2. Włącz wymagane interfejsy API.

  • Krok 3. Zaktualizuj bibliotekę używaną w aplikacji.

  • Krok 4. Zaktualizuj inicjalizację w aplikacji.

  • Krok 5. Zaktualizuj kod w zależności od używanych funkcji.

Krok 1. Wybierz dla swojej aplikacji najlepszego dostawcę interfejsu „Gemini API”

Podczas migracji możesz wybrać dostawcę „Gemini API”:

  • Stare pakiety SDK „Vertex AI in Firebase” mogły używać tylko interfejsu Vertex AI Gemini API.

  • Nowe pakiety SDK Firebase AI Logic umożliwiają wybranie dostawcy usługi „Gemini API”, do której chcesz się bezpośrednio odwoływać z aplikacji mobilnej lub internetowej – może to być usługa Gemini Developer API lub Vertex AI Gemini API.

Zapoznaj się z różnicami między tymi dwoma usługami Gemini API, zwłaszcza w zakresie obsługiwanych funkcji, cen i limitów stawek. Na przykład usługa Gemini Developer API nie obsługuje przesyłania plików za pomocą adresów URL Cloud Storage, ale może być dobrym wyborem, jeśli chcesz skorzystać z bezpłatnego poziomu i rozsądnej kwoty.

Krok 2. Włącz wymagane interfejsy API

Aby korzystać z wybranego dostawcy „Gemini API”, upewnij się, że w projekcie Firebase są włączone wszystkie wymagane interfejsy API.

Pamiętaj, że w projekcie możesz mieć włączonych jednocześnie obu dostawców interfejsu API.

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

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

  3. Kliknij Rozpocznij, aby uruchomić skonfigurowany przepływ pracy, który pomoże Ci skonfigurować wymagane interfejsy API i zasoby dla projektu.

  4. Wybierz dostawcę interfejsu Gemini API, którego chcesz używać z pakietami SDK Firebase AI Logic. W każdej chwili możesz skonfigurować innego dostawcę interfejsu API i z niego korzystać.

    • Gemini Developer API – płatność opcjonalna (dostępna w bezpłatnym planie cennika Spark)
      : w ramach procesu w konsoli zostaną włączone wymagane interfejsy API i utworzony w Twoim projekcie klucz interfejsu API Gemini.
      Nie dodawaj tego klucza interfejsu API Gemini do kodu aplikacji. Więcej informacji

    • Vertex AI Gemini API – wymagane jest rozliczenie (wymaga abonamentu Blaze z płatnościami według wykorzystania)
      W ramach procesu w konsoli zostaną włączone wymagane interfejsy API w Twoim projekcie.

  5. Aby zaktualizować bibliotekę i inicjowanie w aplikacji, przejdź do dalszej części tego przewodnika.

Krok 3. Zaktualizuj bibliotekę używaną w aplikacji

Zaktualizuj kod aplikacji, aby używać biblioteki Firebase AI Logic.

Swift

  1. Po otwarciu projektu aplikacji w Xcode zaktualizuj pakiet Firebase do wersji 11.13.0 lub nowszej, korzystając z jednej z tych opcji:

    • Opcja 1: zaktualizuj wszystkie pakiety: kliknij Plik > Pakiety > Zaktualizuj do najnowszych wersji pakietów.

    • Opcja 2. Aktualizuj Firebase osobno: przejdź do pakietu Firebase w sekcji Zależności pakietu. Kliknij prawym przyciskiem myszy pakiet Firebase, a następnie wybierz Zaktualizuj pakiet.

  2. Upewnij się, że pakiet Firebase ma teraz wersję 11.13.0 lub nowszą. Jeśli tak nie jest, sprawdź, czy określone wymagania dotyczące pakietu umożliwiają aktualizację do wersji 11.13.0 lub nowszej.

  3. W Edytorze projektu wybierz ustawienia docelowe aplikacji, a potem przejdź do sekcji Frameworki, biblioteki i osadzone treści.

  4. Dodaj nową bibliotekę: kliknij przycisk + i dodaj FirebaseAI z pakietu Firebase.

  5. Po zakończeniu migracji aplikacji (patrz pozostałe sekcje tego przewodnika) usuń starą bibliotekę:
    wybierz FirebaseVertexAI-Preview, a potem naciśnij przycisk .

Kotlin

  1. pliku Gradle modułu (na poziomie aplikacji) (zwykle <project>/<app-module>/build.gradle.kts lub <project>/<app-module>/build.gradle) zastąp stare zależności (w odpowiednich przypadkach) podanymi niżej.

    Pamiętaj, że przed usunięciem starej zależności może być łatwiej przenieść kod źródłowy aplikacji (patrz pozostałe sekcje tego przewodnika).

    // BEFORE
    dependencies {
      implementation("com.google.firebase:firebase-vertexai:16.0.0-betaXX")
    }
    
    
    // AFTER
    dependencies {
      // Import the BoM for the Firebase platform
      implementation(platform("com.google.firebase:firebase-bom:33.14.0"))
    
      // Add the dependency for the Firebase AI Logic library
      // When using the BoM, you don't specify versions in Firebase library dependencies
      implementation("com.google.firebase:firebase-ai")
    }
  2. Zsynchronizuj projekt Androida z plikami Gradle.

Jeśli zdecydujesz się nie używać pakietu Firebase Android BoM, po prostu dodaj zależność do biblioteki firebase-ai i zaakceptuj najnowszą wersję sugerowaną przez Android Studio.

Java

  1. pliku Gradle modułu (na poziomie aplikacji) (zwykle <project>/<app-module>/build.gradle.kts lub <project>/<app-module>/build.gradle) zastąp stare zależności (w odpowiednich przypadkach) podanymi niżej.

    Pamiętaj, że przed usunięciem starej zależności może być łatwiej przenieść kod źródłowy aplikacji (patrz pozostałe sekcje tego przewodnika).

    // BEFORE
    dependencies {
      implementation("com.google.firebase:firebase-vertexai:16.0.0-betaXX")
    }
    
    
    // AFTER
    dependencies {
      // Import the BoM for the Firebase platform
      implementation(platform("com.google.firebase:firebase-bom:33.14.0"))
    
      // Add the dependency for the Firebase AI Logic library
      // When using the BoM, you don't specify versions in Firebase library dependencies
      implementation("com.google.firebase:firebase-ai")
    }
  2. Zsynchronizuj projekt Androida z plikami Gradle.

Jeśli zdecydujesz się nie używać pakietu Firebase Android BoM, po prostu dodaj zależność do biblioteki firebase-ai i zaakceptuj najnowszą wersję sugerowaną przez Android Studio.

Web

  1. Pobierz najnowszą wersję pakietu Firebase JS SDK na potrzeby internetu za pomocą npm:

    npm i firebase@latest

    LUB

    yarn add firebase@latest
  2. W miejscach, w których biblioteka została zaimportowana, zaktualizuj instrukcje importowania, aby zamiast tego używać funkcji firebase/ai.

    Pamiętaj, że przed usunięciem starych importów może być łatwiej przenieść kod źródłowy aplikacji (patrz pozostałe sekcje tego przewodnika).

    // BEFORE
    import { initializeApp } from "firebase/app";
    import { getVertexAI, getGenerativeModel } from "firebase/vertexai-preview";
    
    
    // AFTER
    import { initializeApp } from "firebase/app";
    import { getAI, getGenerativeModel } from "firebase/ai";

Dart

  1. Zaktualizuj plik pubspec.yaml, aby używać pakietu firebase_ai, uruchamiając to polecenie w katalogu projektu Flutter:

    flutter pub add firebase_ai
  2. Zbuduj ponownie projekt Fluttera:

    flutter run
  3. Po zakończeniu migracji aplikacji (patrz pozostałe sekcje tego przewodnika) usuń stary pakiet:

    flutter pub remove firebase_vertexai

Unity

Pomoc dotycząca Unity nie była dostępna w przypadku „Vertex AI in Firebase”.

Dowiedz się, jak rozpocząć korzystanie z pakietu SDK Firebase AI Logic dla Unity.

Krok 4. Zaktualizuj inicjalizację w aplikacji

Kliknij dostawcę Gemini API, aby wyświetlić na tej stronie treści i kod związane z tym dostawcą.

Zaktualizuj sposób inicjowania usługi dla wybranego dostawcy interfejsu API i utwórz instancję GenerativeModel.

Swift


import FirebaseAI

// Initialize the Gemini Developer API backend service
let ai = FirebaseAI.firebaseAI(backend: .googleAI())

// Create a `GenerativeModel` instance with a model that supports your use case
let model = ai.generativeModel(modelName: "gemini-2.0-flash")

Kotlin


// Initialize the Gemini Developer API backend service
// Create a `GenerativeModel` instance with a model that supports your use case
val model = Firebase.ai(backend = GenerativeBackend.googleAI())
                        .generativeModel("gemini-2.0-flash")

Java


// Initialize the Gemini Developer API backend service
// Create a `GenerativeModel` instance with a model that supports your use case
GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI())
        .generativeModel("gemini-2.0-flash");

// Use the GenerativeModelFutures Java compatibility layer which offers
// support for ListenableFuture and Publisher APIs
GenerativeModelFutures model = GenerativeModelFutures.from(ai);

Web


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 with a model that supports your use case
const model = getGenerativeModel(ai, { model: "gemini-2.0-flash" });

Dart


import 'package:firebase_ai/firebase_ai.dart';
import 'package:firebase_core/firebase_core.dart';
import 'firebase_options.dart';

// Initialize FirebaseApp
await Firebase.initializeApp(
  options: DefaultFirebaseOptions.currentPlatform,
);

// Initialize the Gemini Developer API backend service
// Create a `GenerativeModel` instance with a model that supports your use case
final model =
      FirebaseAI.googleAI().generativeModel(model: 'gemini-2.0-flash');

Unity

Pomoc dotycząca Unity nie była dostępna w ramach „Vertex AI in Firebase”.

Dowiedz się, jak rozpocząć korzystanie z pakietu SDK Firebase AI Logic dla Unity.

Pamiętaj, że w zależności od używanej funkcji możesz nie zawsze tworzyć instancję GenerativeModel.

Krok 5. Zaktualizuj kod w zależności od używanych funkcji

Ten krok opisuje zmiany, które mogą być wymagane w zależności od tego, z których funkcji korzystasz.

  • Jeśli używasz adresów URL Cloud Storage i, które zostały zastąpione, aby używać adresów Gemini Developer API w ramach tej migracji, musisz zaktualizować swoje multimodalne żądania, aby uwzględniać pliki jako dane wbudowane (lub używać adresów URL filmów w YouTube).

  • Wprowadziliśmy kilka zmian w wersjach GA pakietów SDK „Vertex AI in Firebase”. Te same zmiany są wymagane do korzystania z bibliotek Firebase AI Logic SDK. Sprawdź te listy, aby dowiedzieć się, jakie zmiany należy wprowadzić w kodzie, aby korzystać z pakietu SDK Firebase AI Logic.

Wymagany we wszystkich językach i na wszystkich platformach

  • Wywołania funkcji
    Jeśli ta funkcja została zaimplementowana przed GA, musisz zaktualizować sposób definiowania schematu. Aby dowiedzieć się, jak pisać deklaracje funkcji, przeczytaj zaktualizowany przewodnik po wywoływaniu funkcji.

  • Generowanie uporządkowanego wyjścia (np. w formacie JSON) za pomocą funkcji responseSchema
    Jeśli wdrożyłeś tę funkcję przed udostępnieniem wersji GA, musisz zaktualizować sposób definiowania schematu. Aby dowiedzieć się, jak pisać schematy JSON, zapoznaj się z nowym przewodnikiem dotyczącym danych wyjściowych w formacie uporządkowanym.

  • Limit czasu

    • Zmieniono domyślny limit czasu żądań na 180 sekund.

Wymagany na podstawie platformy lub języka

Swift

  • Wyliczenia

    • Zastąpiliśmy większość typów enum zmiennymi struct ze zmiennymi statycznymi. Ta zmiana daje nam większą elastyczność w rozwijaniu interfejsu API w sposób zapewniający zgodność wsteczną. Jeśli używasz instrukcji switch, musisz uwzględnić przypadek default:, aby uwzględnić nieznane lub nieobsługiwane wartości, w tym nowe wartości dodane do pakietu SDK w przyszłości.

    • Nazwa zbioru BlockThreshold została zmieniona na HarmBlockThreshold. Ten typ jest teraz typem struct.

    • Usunięto przypadki unknownunspecified z tych zbiorów: HarmCategory, HarmBlockThreshold, HarmProbability, BlockReasonFinishReason.struct

    • Wymieniliśmy enumerację ModelContent.Part na protokół o nazwie Part, aby umożliwić dodawanie nowych typów w sposób zgodny z wstecz. Ta zmiana jest opisana bardziej szczegółowo w sekcji Elementy treści.

  • Elementy treści

    • Usunięto protokół ThrowingPartsRepresentable i uproszczono inicjalizatory dla ModelContent, aby uniknąć sporadycznych błędów kompilatora. Obrazy, które nie są prawidłowo zakodowane, będą nadal generować błędy podczas używania w generateContent.

    • Zgodnie z protokołem Part zastąpiono przypadki ModelContent.Part tymi typami struct:

      • .text do TextPart
      • .data do InlineDataPart
      • .fileData do FileDataPart
      • .functionCall do FunctionCallPart
      • .functionResponse do FunctionResponsePart
  • Kategoria szkody

    • Element HarmCategory nie jest już zagnieżdżony w elemencie typu SafetySetting. Jeśli używasz nazwy SafetySetting.HarmCategory, możesz ją zastąpić nazwą HarmCategory.
  • Informacje dotyczące bezpieczeństwa

    • Usunięto typ SafetyFeedback, ponieważ nie był używany w żadnej z odpowiedzi.
  • Metadane cytowania

    • Nazwa właściwości citationSources została zmieniona na citations w pliku CitationMetadata.
  • Łączna liczba znaków podlegających rozliczeniu

    • Właściwość totalBillableCharacters w elementach CountTokensResponse została zmieniona na opcjonalną, aby uwzględnić sytuacje, w których nie są wysyłane żadne znaki.
  • Odpowiedź kandydata

    • Zmieniliśmy nazwę CandidateResponse na Candidate, aby była zgodna z innymi platformami.
  • Konfiguracja generowania

    • Zmieniono publiczne właściwości z GenerationConfig na internal. Wszystkie te parametry pozostają konfigurowalne w inicjalizowanym obiekcie.

Kotlin

  • Wyliczenia

    • Zastąpiono zajęcia enum i sealed zwykłymi zajęciami. Ta zmiana daje większą elastyczność w rozwijaniu interfejsu API w sposób zapewniający zgodność wsteczną.

    • Nazwa zbioru BlockThreshold została zmieniona na HarmBlockThreshold.

    • Usunięto wartości z tych typów danych: HarmBlockThreshold, HarmProbability, HarmSeverity, BlockReasonFinishReason.

  • Metody obiektów blob

    • W nazwach wszystkich metod, w których nazwie występuje znak Blob, zastąpiliśmy go znakiem InlineData.
  • Ustawienia bezpieczeństwa

    • Zmieniono pole method tak, aby mogło być puste.
  • Klasa czasu trwania

    • Usunięto wszystkie przypadki użycia klasy Duration w Kotlinie i zastąpiono ją klasą long. Ta zmiana zapewnia lepszą współpracę z językiem Java.
  • Metadane cytowania

    • Wszystkie pola zadeklarowane wcześniej w CitationMetadata zostały zapakowane do nowej klasy o nazwie Citation. Odwołania można znaleźć na liście citations w sekcji CitationMetadata. Ta zmiana pozwala lepiej dopasowywać typy na różnych platformach.
  • Liczba tokenów

    • Zmieniono pole totalBillableCharacters tak, aby mogło być puste.
  • Łączna liczba znaków podlegających rozliczeniu

    • Właściwość totalBillableCharacters w elementach CountTokensResponse została zmieniona na opcjonalną, aby uwzględnić sytuacje, w których nie są wysyłane żadne znaki.
  • Tworzenie wystąpienia modelu

    • Parametr requestOptions został przeniesiony na koniec listy parametrów, aby dostosować go do innych platform.
  • Live API

    • Usunięto wartość UNSPECIFIED dla klasy wyliczeń ResponseModality. Zamiast tego użyj null.

    • Nazwa LiveGenerationConfig.setResponseModalities została zmieniona na LiveGenerationConfig.setResponseModality.

    • Usunięto klasę LiveContentResponse.Status, a zamiast niej osadzono pola stanu jako właściwości klasy LiveContentResponse.

    • Usunięto klasę LiveContentResponse, a zamiast niej udostępniono podklasy LiveServerMessage, które odpowiadają odpowiedziom z modelu.

    • Zmieniono LiveModelFutures.connect, aby zwracało wartość ListenableFuture<LiveSessionFutures> zamiast ListenableFuture<LiveSession>.

Java

  • Wyliczenia

    • Zastąpiono zajęcia enum i sealed zwykłymi zajęciami. Ta zmiana daje większą elastyczność w rozwijaniu interfejsu API w sposób zapewniający zgodność wsteczną.

    • Nazwa zbioru BlockThreshold została zmieniona na HarmBlockThreshold.

    • Usunięto wartości z tych typów danych: HarmBlockThreshold, HarmProbability, HarmSeverity, BlockReasonFinishReason.

  • Metody obiektów blob

    • W nazwach wszystkich metod, w których nazwie występuje znak Blob, zastąpiliśmy go znakiem InlineData.
  • Ustawienia bezpieczeństwa

    • Zmieniono pole method tak, aby mogło być puste.
  • Klasa czasu trwania

    • Usunięto wszystkie przypadki użycia klasy Duration w Kotlinie i zastąpiono ją klasą long. Ta zmiana zapewnia lepszą współpracę z językiem Java.
  • Metadane cytowania

    • Wszystkie pola zadeklarowane wcześniej w CitationMetadata zostały zapakowane do nowej klasy o nazwie Citation. Odwołania można znaleźć na liście citations w sekcji CitationMetadata. Ta zmiana pozwala lepiej dopasowywać typy na różnych platformach.
  • Liczba tokenów

    • Zmieniono pole totalBillableCharacters tak, aby mogło być puste.
  • Łączna liczba znaków podlegających rozliczeniu

    • Właściwość totalBillableCharacters w elementach CountTokensResponse została zmieniona na opcjonalną, aby uwzględnić sytuacje, w których nie są wysyłane żadne znaki.
  • Tworzenie wystąpienia modelu

    • Parametr requestOptions został przeniesiony na koniec listy parametrów, aby dostosować go do innych platform.
  • Live API

    • Usunięto wartość UNSPECIFIED dla klasy wyliczeń ResponseModality. Zamiast tego użyj null.

    • Nazwa LiveGenerationConfig.setResponseModalities została zmieniona na LiveGenerationConfig.setResponseModality.

    • Usunięto klasę LiveContentResponse.Status, a zamiast niej osadzono pola stanu jako właściwości klasy LiveContentResponse.

    • Usunięto klasę LiveContentResponse, a zamiast niej udostępniono podklasy LiveServerMessage, które odpowiadają odpowiedziom z modelu.

    • Zmieniono LiveModelFutures.connect, aby zwracało wartość ListenableFuture<LiveSessionFutures> zamiast ListenableFuture<LiveSession>.

  • Zmieniono różne metody kreatora Java, aby zwracały instancję klasy zamiast void.

Web

  • Wyliczenia

    • Usunięto wartości z tych wyliczeń: HarmCategory, BlockThreshold, HarmProbability, HarmSeverity, BlockReason i FinishReason.
  • Powód blokady

    • Zmieniono blockReasonPromptFeedback na opcjonalne.

Zmiany wymagane tylko wtedy, gdy zaczynasz używać wersji Gemini Developer API (zamiast wersji Vertex AI Gemini API):

  • Ustawienia bezpieczeństwa

    • Usunięto użycie nieobsługiwanego znaku SafetySetting.method.
  • Dane w wierszu

    • Usunięto użycie nieobsługiwanego znaku InlineDataPart.videoMetadata.

Dart

  • Wyliczenia

    • Usunięto wartości z tych typów enumeracji: HarmCategory, HarmProbability, BlockReasonFinishReason.
  • Część dotycząca danych

    • Zmieniliśmy nazwę funkcji DataPart na InlineDataPart, a funkcję static data na inlineData, aby dostosować je do innych platform.
  • Opcje żądania

    • Usunięto RequestOptions, ponieważ timeout nie działa. W najbliższej przyszłości zostanie ona ponownie dodana, ale zostanie przeniesiona do typu GenerativeModel, aby była zgodna z innymi platformami.
  • sekwencje zatrzymania,

    • Zmieniono parametr stopSequences w pliku GenerationConfig, tak aby był opcjonalny i domyślnie ustawiony na null zamiast pustej tablicy.
  • Cytowania

    • Nazwa właściwości citationSources została zmieniona na citations w pliku CitationMetadata. Typ CitationSource został zmieniony na Citation, aby był zgodny z innymi platformami.
  • Niepotrzebne publiczne typy, metody i właściwości

    • Usunięto te typy, metody i właściwości, które zostały niezamierzenie udostępnione: defaultTimeout, CountTokensResponseFields, parseCountTokensResponse, parseEmbedContentResponse, parseGenerateContentResponse, parseContent, BatchEmbedContentsResponse, ContentEmbedding, EmbedContentRequestEmbedContentResponse.
  • Liczba tokenów

    • Usunięto z funkcji countTokens dodatkowe pola, które nie są już potrzebne. Wystarczy podać tylko contents.
  • Tworzenie wystąpienia modelu

    • Parametr systemInstruction został przeniesiony na koniec listy parametrów, aby dostosować go do innych platform.
  • Funkcja umieszczania

    • Usunięto z modelu nieobsługiwaną funkcję umieszczania (embedContentbatchEmbedContents).

Unity

Pomoc dotycząca Unity nie była dostępna w przypadku „Vertex AI in Firebase”.

Dowiedz się, jak rozpocząć korzystanie z pakietu SDK Firebase AI Logic dla Unity.

Możliwe błędy związane z migracją

Podczas migracji do wersji GA usługi Firebase AI Logic możesz napotkać błędy, jeśli nie wprowadzisz wszystkich wymaganych zmian opisanych w tym przewodniku.

Błąd 403: Requests to this API firebasevertexai.googleapis.com ... are blocked.

Jeśli widzisz błąd 403 z wiadomością Requests to this API firebasevertexai.googleapis.com ... are blocked., oznacza to zwykle, że klucz interfejsu API Firebase w pliku konfiguracyjnym lub obiekcie Firebase nie ma na liście dozwolonych interfejsów API dla usługi, której próbujesz użyć.

Upewnij się, że klucz interfejsu API Firebase używany przez Twoją aplikację zawiera wszystkie wymagane interfejsy API uwzględnione na liście dozwolonych interfejsów API w sekcji „Ograniczenia interfejsu API” klucza. W przypadku Firebase AI Logic klucz interfejsu API Firebase musi zawierać co najmniej interfejs API Firebase AI Logic na liście dozwolonych. Ten interfejs API powinien zostać automatycznie dodany do listy dozwolonych kluczy API po włączeniu wymaganych interfejsów API w konsoli Firebase.

Wszystkie klucze interfejsu API znajdziesz w konsoli Google Cloud w panelu Interfejsy API i usługi > Dane logowania.


Przesyłanie opinii o usługachFirebase AI Logic