Переход на Firebase AI Logic SDKs из предварительной версии Vertex AI в Firebase SDKs


Firebase AI Logic и его клиентские SDK ранее назывались " Vertex AI in Firebase ". Чтобы лучше отразить расширение наших сервисов и функций (например, теперь мы поддерживаем API для разработчиков Gemini !), мы переименовали и переупаковали наши сервисы в Firebase AI Logic .

Для безопасного доступа к генеративным моделям искусственного интеллекта Google непосредственно из ваших мобильных или веб-приложений теперь можно выбрать поставщика « Gemini API » — либо давно доступный Vertex AI Gemini API , либо Gemini Developer API . Это означает, что теперь у вас есть возможность использовать Gemini Developer API , который предоставляет бесплатный уровень с разумными ограничениями скорости и квотами.

Обзор шагов по миграции на SDK Firebase AI Logic .

  • Шаг 1 : Выберите лучшего поставщика "Gemini API" для вашего приложения и сценариев использования.

  • Шаг 2 : Включите необходимые API.

  • Шаг 3 : Обновите библиотеку, используемую в вашем приложении.

  • Шаг 4 : Обновите параметры инициализации в вашем приложении.

  • Шаг 5 : Обновите свой код в зависимости от используемых вами функций.

Шаг 1 : Выберите лучшего поставщика "Gemini API" для вашего приложения.

В результате этой миграции у вас есть выбор поставщика " Gemini API ":

  • Старые SDK " Vertex AI in Firebase " могли использовать только API Vertex AI Gemini .

  • Новые SDK Firebase AI Logic позволяют выбирать, к какому поставщику " Gemini API " вы хотите обращаться напрямую из своего мобильного или веб-приложения — либо к Gemini Developer API , либо к Vertex AI Gemini API .

Ознакомьтесь с различиями между использованием двух API-провайдеров Gemini , особенно в отношении поддерживаемых функций, ценообразования и ограничений скорости. Например, API для разработчиков Gemini не поддерживает предоставление файлов с использованием URL-адресов Cloud Storage , но это может быть хорошим выбором, если вы хотите воспользоваться его бесплатным уровнем и разумным лимитом трафика.

Шаг 2 : Включите необходимые API.

Убедитесь, что в вашем проекте Firebase включены все необходимые API для использования выбранного вами поставщика " Gemini API ".

Обратите внимание, что в вашем проекте можно одновременно включить оба поставщика API.

  1. Войдите в консоль Firebase , а затем выберите свой проект Firebase.

  2. В консоли Firebase перейдите на страницу Firebase AI Logic .

  3. Нажмите « Начать» , чтобы запустить пошаговый рабочий процесс, который поможет вам настроить необходимые API и ресурсы для вашего проекта.

  4. Выберите поставщика "Gemini API", которого вы хотите использовать с SDK Firebase AI Logic . При желании вы всегда можете настроить и использовать другого поставщика API позже.

    • API для разработчиков Geminiоплата необязательна (доступно в бесплатном тарифном плане Spark).
      В процессе работы консоли будут активированы необходимые API и создан ключ API Gemini в вашем проекте.
      Не добавляйте этот API-ключ Gemini в код вашего приложения. Узнайте больше.

    • API Vertex AI Geminiтребуется оплата (требуется тарифный план Blaze с оплатой по факту использования)
      Рабочий процесс консоли активирует необходимые API в вашем проекте.

  5. Продолжите выполнение инструкций в этом руководстве по миграции, чтобы обновить библиотеку и выполнить инициализацию в вашем приложении.

Шаг 3 : Обновите библиотеку, используемую в вашем приложении.

Обновите код своего приложения, чтобы использовать библиотеку Firebase AI Logic .

Быстрый

  1. В Xcode, открыв проект приложения, обновите пакет Firebase до версии 11.13.0 или более поздней, используя один из следующих вариантов:

    • Вариант 1 : Обновить все пакеты: Перейдите в меню Файл > Пакеты > Обновить до последних версий пакетов .

    • Вариант 2 : Обновите Firebase по отдельности: Перейдите к пакету Firebase в разделе « Зависимости пакета» . Щелкните правой кнопкой мыши по пакету Firebase и выберите «Обновить пакет» .

  2. Убедитесь, что в списке необходимых пакетов Firebase отображается версия 11.13.0 или более поздняя. Если это не так, проверьте, позволяют ли указанные вами требования к пакету обновить его до версии 11.13.0 или более поздней.

  3. В редакторе проектов выберите целевой объект вашего приложения, а затем перейдите в раздел «Фреймворки, библиотеки и встроенный контент» .

  4. Добавьте новую библиотеку: выберите кнопку «+» , а затем добавьте FirebaseAI из пакета Firebase.

  5. После завершения миграции вашего приложения (см. остальные разделы этого руководства) обязательно удалите старую библиотеку:
    Выберите FirebaseVertexAI-Preview , а затем нажмите кнопку .

Kotlin

  1. В файле Gradle вашего модуля (уровня приложения) (обычно <project>/<app-module>/build.gradle.kts или <project>/<app-module>/build.gradle ) замените старые зависимости (если применимо) следующими.

    Обратите внимание, что, возможно, будет проще перенести кодовую базу вашего приложения (см. остальные разделы этого руководства) до удаления старой зависимости.

    // 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:34.7.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. Синхронизируйте свой Android-проект с файлами Gradle.

Обратите внимание, что если вы решите не использовать Firebase Android BoM , просто добавьте зависимость для библиотеки firebase-ai и примите последнюю версию, предложенную Android Studio.

Java

  1. В файле Gradle вашего модуля (уровня приложения) (обычно <project>/<app-module>/build.gradle.kts или <project>/<app-module>/build.gradle ) замените старые зависимости (если применимо) следующими.

    Обратите внимание, что, возможно, будет проще перенести кодовую базу вашего приложения (см. остальные разделы этого руководства) до удаления старой зависимости.

    // 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:34.7.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. Синхронизируйте свой Android-проект с файлами Gradle.

Обратите внимание, что если вы решите не использовать Firebase Android BoM , просто добавьте зависимость для библиотеки firebase-ai и примите последнюю версию, предложенную Android Studio.

Web

  1. Получите последнюю версию Firebase JS SDK для веб-разработки с помощью npm:

    npm i firebase@latest

    ИЛИ

    yarn add firebase@latest
  2. Везде, где вы импортировали библиотеку, обновите операторы импорта, используя firebase/ai вместо этого.

    Обратите внимание, что, возможно, будет проще перенести кодовую базу вашего приложения (см. остальные разделы этого руководства) до удаления старых импортов.

    // 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. Для обновления и добавления пакета firebase_ai в файл pubspec.yaml выполните следующую команду из каталога вашего проекта Flutter:

    flutter pub add firebase_ai
  2. Пересоберите свой проект Flutter:

    flutter run
  3. После завершения миграции вашего приложения (см. остальные разделы этого руководства) обязательно удалите старый пакет:

    flutter pub remove firebase_vertexai

Единство

Поддержка Unity в " Vertex AI in Firebase " отсутствовала.

Узнайте, как начать работу с Firebase AI Logic SDK для Unity .

Шаг 4 : Обновите инициализацию в вашем приложении.

Чтобы просмотреть контент и код, относящиеся к вашему поставщику API Gemini , нажмите на него.

Обновите способ инициализации сервиса для выбранного вами API-провайдера и создайте экземпляр GenerativeModel .

Быстрый


import FirebaseAILogic

// 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.5-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.5-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.5-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.5-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.5-flash');

Единство

Поддержка Unity в " Vertex AI in Firebase " отсутствовала.

Узнайте, как начать работу с Firebase AI Logic SDK для Unity .

Обратите внимание, что в зависимости от используемых вами возможностей, вы не всегда можете создать экземпляр GenerativeModel .

Шаг 5 : Обновите свой код в зависимости от используемых вами функций.

На этом шаге описываются изменения, которые могут потребоваться в зависимости от используемых вами функций.

  • Если вы используете URL-адреса Cloud Storage и в ходе миграции перешли на использование API разработчика Gemini , вам необходимо обновить ваши мультимодальные запросы, чтобы включать файлы в качестве встроенных данных (или использовать URL-адреса YouTube для видео).

  • В общедоступные версии SDK " Vertex AI in Firebase " были внесены некоторые изменения. Эти же изменения необходимы для использования SDK Firebase AI Logic . Ознакомьтесь со следующими списками изменений, которые могут потребоваться внести в ваш код для работы с SDK Firebase AI Logic .

Требуется для всех языков и платформ.

  • Вызов функции
    Если вы реализовали эту функцию до выхода в общий доступ, вам потребуется внести изменения в определение схемы. Мы рекомендуем ознакомиться с обновленным руководством по вызову функций, чтобы узнать, как правильно писать объявления функций.

  • Генерация структурированного вывода (например, в формате JSON) с использованием responseSchema
    Если вы внедрили эту функцию до официального релиза, вам потребуется внести изменения в определение схемы. Мы рекомендуем ознакомиться с новым руководством по структурированному выводу, чтобы узнать, как писать JSON-схемы.

  • Тайм-аут

    • Изменено значение тайм-аута по умолчанию для запросов на 180 секунд.

Требуется в зависимости от платформы или языка.

Быстрый

  • Перечисления

    • Большинство типов enum заменены struct со статическими переменными. Это изменение обеспечивает большую гибкость при развитии API с сохранением обратной совместимости. При использовании операторов switch теперь необходимо указывать значение default: case) для обработки неизвестных или необработанных значений, включая новые значения, которые будут добавлены в SDK в будущем.

    • Переименование перечисления BlockThreshold в HarmBlockThreshold ; теперь этот тип является struct .

    • Из следующих перечислений (теперь struct ) удалены unknown и unspecified случаи: HarmCategory , HarmBlockThreshold , HarmProbability , BlockReason и FinishReason .

    • Заменено перечисление ModelContent.Part протоколом с именем Part , позволяющим добавлять новые типы с сохранением обратной совместимости. Это изменение более подробно описано в разделе «Части контента» .

  • Содержание

    • Удалён протокол ThrowingPartsRepresentable , а инициализаторы для ModelContent упрощены, чтобы избежать случайных ошибок компиляции. Изображения, которые некорректно кодируются, по-прежнему будут вызывать ошибки при использовании в generateContent .

    • Заменены экземпляры ModelContent.Part следующими struct типами, соответствующими протоколу Part :

      • .text to TextPart
      • .data to InlineDataPart
      • .fileData to FileDataPart
      • .functionCall to FunctionCallPart
      • .functionResponse to FunctionResponsePart
  • Категория вреда

    • Изменено представление HarmCategory таким образом, чтобы оно больше не было вложено в тип SafetySetting . Если вы имеете в виду SafetySetting.HarmCategory , то это можно заменить на HarmCategory .
  • Обратная связь по вопросам безопасности

    • Удалён тип SafetyFeedback , поскольку он не использовался ни в одном из ответов.
  • Метаданные цитирования

    • Свойство citationSources в CitationMetadata переименовано в citations .
  • Общее количество персонажей, за которых можно платить

    • Изменено свойство totalBillableCharacters в CountTokensResponse на необязательное, чтобы отражать ситуации, когда символы не отправляются.
  • Ответ кандидата

    • Название CandidateResponse было переименовано в Candidate , чтобы соответствовать другим платформам.
  • Конфигурация поколения

    • Изменены общедоступные свойства GenerationConfig на internal . Все они по-прежнему доступны для настройки в инициализаторе.

Kotlin

  • Перечисления

    • Заменены классы- enum и sealed классы на обычные классы. Это изменение обеспечивает большую гибкость при развитии API с сохранением обратной совместимости.

    • Переименовано перечисление BlockThreshold в HarmBlockThreshold .

    • Удалены значения из следующих перечислений: HarmBlockThreshold , HarmProbability , HarmSeverity , BlockReason и FinishReason .

  • Методы Blob

    • Все методы, в названии которых присутствовало слово Blob были переименованы с использованием InlineData .
  • Настройки безопасности

    • Изменен method поля, теперь оно допускает значение NULL.
  • Класс продолжительности

    • Удалены все упоминания класса Duration из Kotlin и заменены на long . Это изменение обеспечивает лучшую совместимость с Java.
  • Метаданные цитирования

    • Все поля, ранее объявленные в CitationMetadata были объединены в новый класс под названием Citation . Цитаты можно найти в списке под названием citations в CitationMetadata . Это изменение позволяет лучше согласовывать типы данных на разных платформах.
  • Подсчет токенов

    • Изменено поле totalBillableCharacters таким образом, чтобы оно могло принимать значение null.
  • Общее количество персонажей, за которых можно платить

    • Изменено свойство totalBillableCharacters в CountTokensResponse на необязательное, чтобы отражать ситуации, когда символы не отправляются.
  • Создание экземпляра модели

    • Параметр requestOptions перемещен в конец списка параметров для соответствия требованиям других платформ.
  • Live API

    • Удалено значение UNSPECIFIED для класса перечисления ResponseModality . Вместо него используйте null .

    • Переименована LiveGenerationConfig.setResponseModalities в LiveGenerationConfig.setResponseModality .

    • Класс LiveContentResponse.Status был удалён, и вместо него поля статуса вложены в свойства класса LiveContentResponse .

    • Класс LiveContentResponse был удален, и вместо него предоставлены подклассы LiveServerMessage , которые соответствуют ответам от модели.

    • Изменено значение в LiveModelFutures.connect : теперь он возвращает ListenableFuture<LiveSessionFutures> вместо ListenableFuture<LiveSession> .

Java

  • Перечисления

    • Заменены классы- enum и sealed классы на обычные классы. Это изменение обеспечивает большую гибкость при развитии API с сохранением обратной совместимости.

    • Переименовано перечисление BlockThreshold в HarmBlockThreshold .

    • Удалены значения из следующих перечислений: HarmBlockThreshold , HarmProbability , HarmSeverity , BlockReason и FinishReason .

  • Методы Blob

    • Все методы, в названии которых присутствовало слово Blob были переименованы с использованием InlineData .
  • Настройки безопасности

    • Изменен method поля, теперь оно допускает значение NULL.
  • Класс продолжительности

    • Удалены все упоминания класса Duration из Kotlin и заменены на long . Это изменение обеспечивает лучшую совместимость с Java.
  • Метаданные цитирования

    • Все поля, ранее объявленные в CitationMetadata были объединены в новый класс под названием Citation . Цитаты можно найти в списке под названием citations в CitationMetadata . Это изменение позволяет лучше согласовывать типы данных на разных платформах.
  • Подсчет токенов

    • Изменено поле totalBillableCharacters таким образом, чтобы оно могло принимать значение null.
  • Общее количество персонажей, за которых можно платить

    • Изменено свойство totalBillableCharacters в CountTokensResponse на необязательное, чтобы отражать ситуации, когда символы не отправляются.
  • Создание экземпляра модели

    • Параметр requestOptions перемещен в конец списка параметров для соответствия требованиям других платформ.
  • Live API

    • Удалено значение UNSPECIFIED для класса перечисления ResponseModality . Вместо него используйте null .

    • Переименована LiveGenerationConfig.setResponseModalities в LiveGenerationConfig.setResponseModality .

    • Класс LiveContentResponse.Status был удалён, и вместо него поля статуса вложены в свойства класса LiveContentResponse .

    • Класс LiveContentResponse был удален, и вместо него предоставлены подклассы LiveServerMessage , которые соответствуют ответам от модели.

    • Изменено значение в LiveModelFutures.connect : теперь он возвращает ListenableFuture<LiveSessionFutures> вместо ListenableFuture<LiveSession> .

  • Изменены различные методы Java-конструктора, теперь они корректно возвращают экземпляр своего класса, а не void .

Web

  • Перечисления

    • Удалены значения из следующих перечислений: HarmCategory , BlockThreshold , HarmProbability , HarmSeverity , BlockReason и FinishReason .
  • Причина блокировки

    • Изменено blockReason в PromptFeedback , теперь он является необязательным.

Изменения необходимы только в том случае, если вы начинаете использовать API разработчика Gemini (вместо API Vertex AI Gemini ):

  • Настройки безопасности

    • Удалены случаи использования неподдерживаемого метода SafetySetting.method .
  • Встроенные данные

    • Удалены случаи использования неподдерживаемого объекта InlineDataPart.videoMetadata .

Dart

  • Перечисления

    • Удалены значения из следующих перечислений: HarmCategory , HarmProbability , BlockReason и FinishReason .
  • Часть данных

    • Переименовали DataPart в InlineDataPart , а функцию static data — в inlineData для соответствия другим платформам.
  • Варианты запроса

    • Удалён RequestOptions поскольку timeout не работал. Он будет добавлен обратно в ближайшем будущем, но будет перенесён в тип GenerativeModel , чтобы соответствовать другим платформам.
  • Стоп-последовательности

    • Изменен параметр stopSequences в GenerationConfig теперь он необязателен и по умолчанию принимает значение null вместо пустого массива.
  • Цитаты

    • Свойство citationSources в CitationMetadata переименовано в citations . Тип CitationSource переименован в Citation , чтобы соответствовать другим платформам.
  • Ненужные общедоступные типы, методы и свойства

    • Удалены следующие типы, методы и свойства, которые были непреднамеренно раскрыты: defaultTimeout , CountTokensResponseFields , parseCountTokensResponse , parseEmbedContentResponse , parseGenerateContentResponse , parseContent , BatchEmbedContentsResponse , ContentEmbedding , EmbedContentRequest и EmbedContentResponse .
  • Подсчет токенов

    • Из функции countTokens удалены лишние поля, которые больше не нужны. Требуется только contents .
  • Создание экземпляра модели

    • Параметр systemInstruction перемещен в конец списка параметров для согласования с другими платформами.
  • Функциональность встраивания

    • Из модели удалены неподдерживаемые функции встраивания ( embedContent и batchEmbedContents ).

Единство

Поддержка Unity в " Vertex AI in Firebase " отсутствовала.

Узнайте, как начать работу с Firebase AI Logic SDK для Unity .

Возможные ошибки, связанные с миграцией.

При переходе на общедоступную версию Firebase AI Logic вы можете столкнуться с ошибками, если не внесли все необходимые изменения, описанные в этом руководстве по миграции.

Ошибка 403: Requests to this API firebasevertexai.googleapis.com ... are blocked.

Если вы получаете ошибку 403 с сообщением « Requests to this API firebasevertexai.googleapis.com ... are blocked. , это обычно означает, что ключ API Firebase в вашем файле конфигурации Firebase или объекте не содержит требуемый API в списке разрешенных для продукта, который вы пытаетесь использовать.

Убедитесь, что ключ API Firebase, используемый вашим приложением, содержит все необходимые API, включенные в список разрешенных API в разделе «Ограничения API» . Для Firebase AI Logic ваш ключ API Firebase должен содержать как минимум API Firebase AI Logic в списке разрешенных API. Этот API должен был быть автоматически добавлен в список разрешенных API вашего ключа API при включении необходимых API в консоли Firebase .

Все ваши API-ключи можно просмотреть на панели «API и сервисы» > «Учетные данные» в консоли Google Cloud .


Оставьте отзыв о вашем опыте использования Firebase AI Logic.