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


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

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

Обзор шагов по переходу на Firebase AI Logic SDK

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

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

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

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

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

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

При этой миграции у вас есть выбор поставщика « Gemini API »:

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

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

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

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

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

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

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

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

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

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

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

    • Vertex AI Gemini APIтребуется выставление счетов (требуется тарифный план 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.0.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.0.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 для Web с помощью 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. Обновите файл pubspec.yaml , выполнив следующую команду из каталога проекта Flutter, чтобы использовать пакет firebase_ai :

    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 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.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 » для GA было внесено несколько изменений. Эти же изменения необходимы для использования SDK Firebase AI Logic . Ознакомьтесь со следующими списками, чтобы узнать, какие изменения, возможно, потребуется внести в код для использования SDK Firebase AI Logic .

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

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

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

  • Тайм-аут

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

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

Быстрый

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

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

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

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

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

  • Части контента

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

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

      • .text в TextPart
      • .data в InlineDataPart
      • .fileData в FileDataPart
      • .functionCall в FunctionCallPart
      • .functionResponse на 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 для класса enum 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 для класса enum 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 на необязательное.

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

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

    • Удалены случаи использования неподдерживаемого метода 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 GA вы можете столкнуться с ошибками, если вы не выполнили все требуемые изменения, описанные в этом руководстве по миграции.

Ошибка 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» ключа . Для Firebase AI Logic ваш ключ API Firebase должен включать как минимум API Firebase AI Logic в своём разрешённом списке. Этот API должен был быть автоматически добавлен в разрешённый список вашего ключа API при включении необходимых API в консоли Firebase .

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


Оставьте отзыв о своем опыте работы с Firebase AI Logic