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.
Войдите в консоль Firebase , а затем выберите свой проект Firebase.
В консоли Firebase перейдите на страницу Firebase AI Logic .
Нажмите « Начать» , чтобы запустить пошаговый рабочий процесс, который поможет вам настроить необходимые API и ресурсы для вашего проекта.
Выберите поставщика "Gemini API", которого вы хотите использовать с SDK Firebase AI Logic . При желании вы всегда можете настроить и использовать другого поставщика API позже.
API для разработчиков Gemini — оплата необязательна (доступно в бесплатном тарифном плане Spark).
В процессе работы консоли будут активированы необходимые API и создан ключ API Gemini в вашем проекте.
Не добавляйте этот API-ключ Gemini в код вашего приложения. Узнайте больше.API Vertex AI Gemini — требуется оплата (требуется тарифный план Blaze с оплатой по факту использования)
Рабочий процесс консоли активирует необходимые API в вашем проекте.
Продолжите выполнение инструкций в этом руководстве по миграции, чтобы обновить библиотеку и выполнить инициализацию в вашем приложении.
Шаг 3 : Обновите библиотеку, используемую в вашем приложении.
Обновите код своего приложения, чтобы использовать библиотеку Firebase AI Logic .
Быстрый
В Xcode, открыв проект приложения, обновите пакет Firebase до версии 11.13.0 или более поздней, используя один из следующих вариантов:
Вариант 1 : Обновить все пакеты: Перейдите в меню Файл > Пакеты > Обновить до последних версий пакетов .
Вариант 2 : Обновите Firebase по отдельности: Перейдите к пакету Firebase в разделе « Зависимости пакета» . Щелкните правой кнопкой мыши по пакету Firebase и выберите «Обновить пакет» .
Убедитесь, что в списке необходимых пакетов Firebase отображается версия 11.13.0 или более поздняя. Если это не так, проверьте, позволяют ли указанные вами требования к пакету обновить его до версии 11.13.0 или более поздней.
В редакторе проектов выберите целевой объект вашего приложения, а затем перейдите в раздел «Фреймворки, библиотеки и встроенный контент» .
Добавьте новую библиотеку: выберите кнопку «+» , а затем добавьте FirebaseAI из пакета 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: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") }Синхронизируйте свой 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: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") }Синхронизируйте свой Android-проект с файлами Gradle.
Обратите внимание, что если вы решите не использовать Firebase Android BoM , просто добавьте зависимость для библиотеки firebase-ai и примите последнюю версию, предложенную Android Studio.
Web
Получите последнюю версию Firebase JS SDK для веб-разработки с помощью 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 в " 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 .
- Для доступа к модели Imagen создайте экземпляр
ImagenModel.
Шаг 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:-
.texttoTextPart -
.datatoInlineDataPart -
.fileDatatoFileDataPart -
.functionCalltoFunctionCallPart -
.functionResponsetoFunctionResponsePart
-
Категория вреда
- Изменено представление
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, а функциюstaticdata— в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.