Firebase AI Logic и его клиентские SDK ранее назывались Vertex AI in Firebase. Чтобы лучше отразить расширение наших сервисов и функций (например, теперь мы поддерживаем Gemini Developer API!), мы переименовали и переупаковали наши сервисы в Firebase AI Logic.
Чтобы безопасно получать доступ к моделям генеративного ИИ от Google прямо из мобильных или веб-приложений, вы можете выбрать поставщика Gemini API – давно доступный Agent Platform Gemini API (formerly Vertex AI) или новый 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 могли использовать только Agent Platform Gemini API (formerly Vertex AI).
Новые SDK Firebase AI Logic позволяют выбрать, к какому поставщику Gemini API вы хотите обращаться напрямую из мобильного или веб-приложения – Gemini Developer API или Agent Platform Gemini API (formerly Vertex AI).
Изучите различия между двумя поставщиками Gemini API, особенно в отношении поддерживаемых функций, цен и ограничений частоты запросов. Например, Gemini Developer API не поддерживает предоставление файлов с помощью URL Cloud Storage, но может быть хорошим выбором, если вы хотите воспользоваться его бесплатным уровнем и разумной квотой.
Шаг 2. Включите необходимые API
Убедитесь, что в проекте Firebase включены все API, необходимые для использования выбранного поставщика (Gemini API).
Обратите внимание, что в проекте можно одновременно включить оба поставщика API.
Войдите в консоль Firebase и выберите проект Firebase.
В консоли Firebase выберите AI Services (Сервисы ИИ) > AI Logic (Логика ИИ).
Нажмите Начать, чтобы запустить пошаговый рабочий процесс, который поможет вам настроить необходимые API и ресурсы для проекта.
Выберите поставщика Gemini API, которого вы хотите использовать с SDK Firebase AI Logic. При желании вы всегда сможете настроить и использовать другого поставщика API.
Gemini Developer API – оплата необязательна (доступно в бесплатном тарифном плане Spark).
Рабочий процесс консоли включит необходимые API и создаст ключ API Gemini в вашем проекте.
Не добавляйте этот ключ API Gemini в базу кода приложения. Подробнее…Agent Platform Gemini API (formerly Vertex AI) – требуется оплата (необходим тарифный план Blaze с оплатой по мере использования).
Рабочий процесс консоли включит необходимые API в вашем проекте.
Продолжайте следовать этому руководству по переносу данных, чтобы обновить библиотеку и инициализацию в приложении.
Шаг 3. Обновите библиотеку, используемую в приложении
Обновите базу кода приложения, чтобы использовать библиотеку Firebase AI Logic.
Swift
Откройте проект приложения в Xcode и обновите пакет Firebase до версии 12.5.0 или более поздней, используя один из следующих вариантов:
Вариант 1. Обновите все пакеты. Для этого выберите File (Файл) > Packages (Пакеты) > Update to Latest Package Versions (Обновить до последних версий пакетов).
Вариант 2. Обновите Firebase отдельно. Для этого перейдите к пакету Firebase в разделе Package Dependencies (Зависимости пакетов). Нажмите правой кнопкой мыши на пакет Firebase и выберите Update Package (Обновить пакет).
Убедитесь, что теперь у вас пакет Firebase версии 12.5.0 или более поздней. Если нет, убедитесь, что указанные вами требования к пакету позволяют выполнить обновление до версии 12.5.0 или более поздней.
В редакторе проектов выберите цель приложения и перейдите в раздел Frameworks, Libraries, and Embedded Content (Фреймворки, библиотеки и встроенный контент).
Добавьте новую библиотеку: нажмите кнопку + и выберите FirebaseAILogic из пакета Firebase.
После переноса приложения (см. остальные разделы этого руководства) удалите старую библиотеку:
Выберите FirebaseVertexAI-Preview и нажмите кнопку —.
Kotlin
В файле 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:35.2.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") }Синхронизируйте проект для Android с файлами Gradle.
Если вы не хотите использовать Firebase Android BoM, просто добавьте зависимость для библиотеки firebase-ai и примите последнюю версию, предложенную Android Studio.
Java
В файле 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:35.2.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") }Синхронизируйте проект для Android с файлами Gradle.
Если вы не хотите использовать Firebase Android BoM, просто добавьте зависимость для библиотеки firebase-ai и примите последнюю версию, предложенную Android Studio.
Web
Получите последнюю версию Firebase JS SDK для Web с помощью npm:
npm i firebase@latest
ИЛИ
yarn add firebase@latest
Везде, где вы импортировали библиотеку, обновите операторы импорта, чтобы использовать
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
Чтобы использовать пакет
firebase_aiв файлеpubspec.yaml, выполните следующую команду в каталоге проекта Flutter:flutter pub add firebase_ai
Перезапустите проект Flutter.
flutter run
После переноса приложения (см. остальные разделы этого руководства) удалите старый пакет:
flutter pub remove firebase_vertexai
Unity
Поддержка Unity не предоставлялась компанией Vertex AI in Firebase.
Узнайте, как начать работу с SDK Firebase AI Logic для Unity.
Шаг 4. Обновите инициализацию в приложении
|
Нажмите на название своего поставщика Gemini API, чтобы посмотреть контент и код, относящиеся к нему. |
Обновите способ инициализации сервиса для выбранного поставщика API и создайте экземпляр GenerativeModel.
Swift
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-3.8-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-3.8-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-3.8-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-3.8-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-3.8-flash');
Unity
Поддержка Unity недоступна в Vertex AI in Firebase.
Узнайте, как начать работу с SDK Firebase AI Logic для Unity.
Обратите внимание, что в зависимости от используемой функции вы не всегда можете создать экземпляр GenerativeModel. Чтобы передавать входные и выходные данные в потоковом режиме с помощью Gemini Live API, создайте экземпляр LiveModel.
Шаг 5. Обновите код в зависимости от используемых функций
В этом разделе описаны изменения, которые могут потребоваться в зависимости от того, какие функции вы используете.
Если вы используете URL Cloud Storage и перешли на Gemini Developer API, то вам нужно обновить мультимодальные запросы, чтобы включать файлы как встроенные данные (или использовать URL YouTube для видео).
В общедоступные версии SDK Vertex AI in Firebase было внесено несколько изменений. Эти же изменения необходимы для использования SDK Firebase AI Logic. Ознакомьтесь со списками ниже, чтобы узнать, какие изменения вам может потребоваться внести в код для перехода на Firebase AI Logic SDK.
Обязательно для всех языков и платформ.
Вызов функций
Если вы реализовали эту функцию до общей доступности, вам нужно будет изменить способ определения схемы. Рекомендуем ознакомиться с обновленным руководством по вызову функций, чтобы узнать, как писать объявления функций.Генерирование структурированных выходных данных (например, JSON) с помощью
responseSchema
Если вы реализовали эту функцию до выпуска в общую доступность, вам нужно будет изменить способ определения схемы. Рекомендуем ознакомиться с новым руководством по структурированным выходным данным, чтобы узнать, как писать схемы JSON.Время ожидания
- Время ожидания по умолчанию для запросов изменено на 180 секунд.
Обязательно в зависимости от платформы или языка
Swift
Перечисления
Большинство типов
enumзаменены наstructсо статическими переменными. Это изменение позволяет более гибко развивать API с сохранением обратной совместимости. При использовании операторовswitchтеперь необходимо включать вариантdefault:, чтобы охватить неизвестные или необработанные значения, в том числе новые значения, которые будут добавлены в SDK в будущем.Перечисление
BlockThresholdпереименовано вHarmBlockThreshold. Теперь этот тип являетсяstruct.Из следующих перечислений (теперь
struct) удалены вариантыunknownиunspecified: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переименовано вcitationsвCitationMetadata.
- Свойство
Общее количество оплачиваемых символов
- Свойство
totalBillableCharactersвCountTokensResponseстало необязательным, чтобы отразить ситуации, когда символы не отправляются.
- Свойство
Ответ кандидата
- Параметр
CandidateResponseпереименован вCandidate, чтобы соответствовать другим платформам.
- Параметр
Generation configuration
- Общедоступные свойства изменены с "
GenerationConfig" на "internal". Все они по-прежнему настраиваются в инициализаторе.
- Общедоступные свойства изменены с "
Kotlin
Перечисления
Заменено
enumзанятий иsealedзанятий обычными занятиями. Это изменение позволяет более гибко развивать API с сохранением обратной совместимости.Перечисление
BlockThresholdпереименовано вHarmBlockThreshold.Удалены значения из следующих перечислений:
HarmBlockThreshold,HarmProbability,HarmSeverity,BlockReasonиFinishReason.
Методы Blob
- Все методы, в названии которых использовалось
Blob, переименованы. Теперь в них используетсяInlineData.
- Все методы, в названии которых использовалось
Настройки безопасности
- Поле
methodтеперь может иметь значение NULL.
- Поле
Класс Duration
- Удалены все случаи использования класса
DurationKotlin. Вместо него используется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
- Удалены все случаи использования класса
DurationKotlin. Вместо него используется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 builder, чтобы теперь правильно возвращать экземпляр своего класса вместо
void.
Web
Перечисления
- Удалены значения из следующих перечислений:
HarmCategory,BlockThreshold,HarmProbability,HarmSeverity,BlockReasonиFinishReason.
- Удалены значения из следующих перечислений:
Причина блокировки
- Поле "
blockReason" вPromptFeedbackтеперь необязательное.
- Поле "
Изменения требуются, только если вы начинаете использовать Gemini Developer API (вместо Agent Platform Gemini API (formerly Vertex AI)):
Настройки безопасности
- Удалены случаи использования неподдерживаемого метода
SafetySetting.method.
- Удалены случаи использования неподдерживаемого метода
Встроенные данные
- Удалены случаи использования неподдерживаемого атрибута
InlineDataPart.videoMetadata.
- Удалены случаи использования неподдерживаемого атрибута
Dart
Перечисления
- Удалены значения из следующих перечислений:
HarmCategory,HarmProbability,BlockReasonиFinishReason.
- Удалены значения из следующих перечислений:
Часть данных
- Функция
DataPartпереименована вInlineDataPart, а функцияstaticdata– вinlineData, чтобы обеспечить соответствие другим платформам.
- Функция
Варианты запросов
- Удален параметр
RequestOptions, так как параметрtimeoutне работал. В ближайшем будущем мы добавим его снова, но уже в типGenerativeModel, чтобы он соответствовал другим платформам.
- Удален параметр
Как остановить последовательность
- Параметр
stopSequencesвGenerationConfigтеперь необязательный. По умолчанию используется значениеnullвместо пустого массива.
- Параметр
Citations
- Свойство
citationSourcesпереименовано вcitationsвCitationMetadata. ТипCitationSourceбыл переименован вCitation, чтобы соответствовать другим платформам.
- Свойство
Ненужные общедоступные типы, методы и свойства
- Удалены следующие типы, методы и свойства, которые были случайно раскрыты:
defaultTimeout,CountTokensResponseFields,parseCountTokensResponse,parseEmbedContentResponse,parseGenerateContentResponse,parseContent,BatchEmbedContentsResponse,ContentEmbedding,EmbedContentRequestиEmbedContentResponse.
- Удалены следующие типы, методы и свойства, которые были случайно раскрыты:
Подсчет токенов
- Из функции
countTokensудалены лишние поля, которые больше не нужны. Достаточно всегоcontents.
- Из функции
Создание экземпляра модели
- Параметр
systemInstructionперемещен в конец списка параметров, чтобы обеспечить соответствие другим платформам.
- Параметр
Функция встраивания
- Из модели удалены неподдерживаемые функции встраивания (
embedContentиbatchEmbedContents).
- Из модели удалены неподдерживаемые функции встраивания (
Unity
Поддержка Unity не предоставлялась компанией Vertex AI in Firebase.
Узнайте, как начать работу с SDK Firebase AI Logic для Unity.
Возможные ошибки, связанные с переносом
Если вы не выполните все необходимые изменения, описанные в этом руководстве, то при переходе на общедоступную версию Firebase AI Logic могут возникнуть ошибки.
Ошибка 403: Requests to this API firebasevertexai.googleapis.com ... are blocked.
Если вы получаете ошибку 403 с сообщением Requests to this API firebasevertexai.googleapis.com ... are blocked., это обычно означает, что в белом списке ключа Firebase API в файле или объекте конфигурации Firebase нет нужного API для продукта, который вы пытаетесь использовать.
Убедитесь, что в белый список ограничений ключа API Firebase, используемого вашим приложением, включены все необходимые API. Для Firebase AI Logic, ключ API Firebase должен иметь как минимум Firebase AI Logic API в своем белом списке. Этот API должен был автоматически добавиться в белый список ключа API, когда вы включили необходимые API в консоли Firebase.
Все ключи API можно посмотреть на панели APIs & Services (API и сервисы) > Credentials (Учетные данные) в консоли Google Cloud.
Оставьте отзыв о работе с Firebase AI Logic