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 одновременно.
Войдите в консоль Firebase и выберите свой проект Firebase.
В консоли Firebase перейдите на страницу Firebase AI Logic .
Нажмите «Начать» , чтобы запустить пошаговый рабочий процесс, который поможет вам настроить необходимые API и ресурсы для вашего проекта.
Выберите поставщика API Gemini, который вы хотите использовать с SDK Firebase AI Logic . При желании вы всегда сможете настроить и использовать другого поставщика API позже.
API разработчика Gemini — оплата необязательна (доступно в бесплатном тарифном плане 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 в разделе « Зависимости пакетов ». Щёлкните правой кнопкой мыши по пакету 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.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") }Синхронизируйте свой проект 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.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") }Синхронизируйте свой проект 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
, выполнив следующую команду из каталога проекта Flutter, чтобы использовать пакетfirebase_ai
: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.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 » для 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
для класса 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
в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