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 : Выберите лучшего поставщика «Gemini API» для вашего приложения
При этой миграции у вас есть выбор поставщика « 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 не поддерживает предоставление файлов с использованием URL-адресов Cloud Storage , но это может быть хорошим выбором, если вы хотите воспользоваться его бесплатным уровнем и разумной квотой.
Шаг 2 : Включите необходимые API
Убедитесь, что в вашем проекте Firebase включены все необходимые API для использования выбранного вами поставщика « Gemini API ».
Обратите внимание, что в вашем проекте могут быть одновременно включены оба поставщика API.
Войдите в консоль Firebase , а затем выберите свой проект Firebase.
В консоли Firebase перейдите на страницу Firebase AI Logic .
Нажмите «Начать» , чтобы запустить пошаговый рабочий процесс, который поможет вам настроить необходимые API и ресурсы для вашего проекта.
Выберите поставщика "Gemini API", который вы хотите использовать с Firebase AI Logic SDK. Вы всегда можете настроить и использовать другого поставщика API позже, если захотите.
Gemini Developer API — оплата необязательна (доступно в бесплатном тарифном плане Spark)
Рабочий процесс консоли включит необходимые API и создаст ключ API Gemini в вашем проекте.
Не добавляйте этот ключ API Gemini в кодовую базу вашего приложения. Узнать больше.Vertex AI Gemini API — требуется выставление счетов (требуется тарифный план Blaze с оплатой по факту использования)
Рабочий процесс консоли включит необходимые API в вашем проекте.
Продолжайте следовать этому руководству по миграции, чтобы обновить библиотеку и инициализацию в вашем приложении.
Шаг 3 : Обновите библиотеку, используемую в вашем приложении.
Обновите кодовую базу вашего приложения, чтобы использовать библиотеку Firebase AI Logic .
Быстрый
В Xcode, открыв проект приложения, обновите пакет Firebase до версии 11.13.0 или более поздней, используя один из следующих вариантов:
Вариант 1 : Обновить все пакеты: Перейдите в Файл > Пакеты > Обновить до последних версий пакетов .
Вариант 2 : Обновите Firebase по отдельности: Перейдите к пакету Firebase в разделе Package Dependencies . Щелкните правой кнопкой мыши по пакету Firebase, а затем выберите Update Package .
Убедитесь, что пакет Firebase теперь показывает v11.13.0 или более позднюю версию. Если это не так, проверьте, что указанные вами требования к пакету позволяют обновиться до v11.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: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") }Синхронизируйте свой проект 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: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") }Синхронизируйте свой проект 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
Обновите файл
pubspec.yaml
, чтобы использовать пакетfirebase_ai
, выполнив следующую команду из каталога проекта 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 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 не была доступна в « Vertex AI in Firebase ».
Узнайте, как начать работу с Firebase AI Logic SDK для Unity .
Обратите внимание, что в зависимости от используемой возможности вы не всегда можете создать экземпляр GenerativeModel
.
- Чтобы получить доступ к модели Imagen , создайте экземпляр
ImagenModel
.
Шаг 5 : Обновите свой код в зависимости от используемых вами функций.
На этом этапе описываются изменения, которые могут потребоваться в зависимости от используемых вами функций.
Если вы используете URL-адреса Cloud Storage и перешли на использование API разработчика Gemini при этой миграции, вам необходимо обновить мультимодальные запросы, чтобы включить файлы в качестве встроенных данных (или использовать URL-адреса YouTube для видео).
Несколько изменений были внесены для версий GA " Vertex AI in Firebase " SDK. Эти же изменения требуются для использования Firebase AI Logic SDK. Просмотрите следующие списки на предмет любых изменений, которые вам может потребоваться внести в свой код для адаптации к Firebase AI Logic SDK.
Требуется для всех языков и платформ
Вызов функции
Если вы реализовали эту функцию до GA, вам нужно будет обновить определение схемы. Мы рекомендуем просмотреть обновленное руководство по вызову функций, чтобы узнать, как писать объявления функций.Генерация структурированного вывода (типа JSON) с использованием
responseSchema
Если вы реализовали эту функцию до GA, вам нужно будет обновить то, как вы определяете свою схему. Мы рекомендуем просмотреть новое руководство по структурированному выводу, чтобы узнать, как писать схемы JSON.Тайм-аут
- Изменено время ожидания по умолчанию для запросов на 180 секунд.
Требуется в зависимости от платформы или языка
Быстрый
Перечисления
Заменено большинство типов
enum
наstruct
со статическими переменными. Это изменение обеспечивает большую гибкость для развития API в обратно совместимом виде. При использовании операторовswitch
теперь необходимо включать случайdefault:
для охвата неизвестных или необработанных значений, включая новые значения, которые будут добавлены в SDK в будущем.Перечисление
BlockThreshold
переименовано вHarmBlockThreshold
; теперь этот тип являетсяstruct
.Удалены
unknown
иunspecified
случаи из следующих перечислений (теперьstruct
):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
для класса enumResponseModality
. Вместо этого используйте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
для класса enumResponseModality
. Вместо этого используйте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
переименовано вcitations
вCitationMetadata
. Тип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 restrictions" ключа . Для Firebase AI Logic ваш ключ API Firebase должен иметь как минимум Firebase AI Logic API в своем списке разрешенных. Этот API должен был быть автоматически добавлен в список разрешенных API вашего ключа API, когда вы включили требуемые API в консоли Firebase .
Вы можете просмотреть все свои ключи API на панели API и службы > Учетные данные в консоли Google Cloud .
Оставьте отзыв о своем опыте использования Firebase AI Logic