Перейти непосредственно к инструкциям по миграции
Зачем переходить на использование Firebase AI Logic SDK?
Возможно, вы пробовали альтернативный набор мобильных или веб-клиентских SDK, которые предоставляли вам доступ к API разработчика Gemini .
Эти клиентские SDK не были интегрированы в надежную экосистему Firebase, которая предлагает критически важные сервисы для мобильных и веб-приложений. Теперь они устарели в пользу клиентских SDK Firebase AI Logic , которые могут предоставить вам доступ к Gemini Developer API .
Функции безопасности для мобильных и веб-приложений
Для мобильных и веб-приложений безопасность имеет решающее значение и требует особых мер, поскольку ваш код, включая вызовы API Gemini , выполняется в незащищенной среде. Вы можете использовать Firebase App Check для защиты API от злоупотреблений со стороны неавторизованных клиентов.
При использовании Firebase App Check с Firebase AI Logic вы никогда не добавляете свой ключ Gemini API для Gemini Developer API непосредственно в кодовую базу вашего мобильного или веб-приложения. Вместо этого ключ Gemini API остается на сервере, недоступном для злоумышленников.
Экосистема, созданная для мобильных и веб-приложений
Firebase — это платформа Google для разработки мобильных и веб-приложений. Использование Firebase AI Logic означает, что ваши приложения находятся в экосистеме, ориентированной на потребности полнофункциональных приложений и разработчиков. Например:
Динамически устанавливайте конфигурации времени выполнения или меняйте значения в своем приложении (например, имя и версию модели) без выпуска новой версии приложения с помощью Firebase Remote Config .
Используйте Cloud Storage for Firebase для включения больших файлов в ваши мультимодальные запросы (если вы используете Vertex AI Gemini API ). Клиентские SDK Cloud Storage помогают вам обрабатывать загрузку и скачивание файлов (даже в условиях плохой сети) и обеспечивают большую безопасность для данных ваших конечных пользователей. Узнайте больше в нашем руководстве по решению об использовании Cloud Storage for Firebase .
Управляйте структурированными данными с помощью SDK баз данных, созданных для мобильных и веб-приложений (например, Cloud Firestore ).
Переход на Firebase AI Logic SDK
Обзор шагов по переходу на Firebase AI Logic SDK:
Шаг 1 : Создайте новый или существующий проект Firebase и подключите свое приложение к Firebase.
Шаг 2 : Добавьте Firebase AI Logic SDK в свое приложение.
Шаг 3 : Обновите импорты и инициализацию в вашем приложении.
Шаг 4 : Обновите свой код в зависимости от используемых вами функций.
Шаг 1 : Настройте проект Firebase и подключите свое приложение
Войдите в консоль Firebase , а затем выберите свой проект Firebase.
Если у вас еще нет проекта Firebase, нажмите «Создать проект» , а затем воспользуйтесь одним из следующих вариантов:
Вариант 1 : создайте совершенно новый проект Firebase (и его базовый проект Google Cloud автоматически), введя новое имя проекта на первом шаге рабочего процесса «Создание проекта».
Вариант 2 : «Добавить Firebase» в существующий проект Google Cloud , выбрав имя проекта Google Cloud из раскрывающегося меню на первом шаге рабочего процесса «Создание проекта».
При желании вы можете добавить Firebase в проект, который был создан в фоновом режиме при создании ключа API Gemini в Google AI Studio .
Обратите внимание, что при появлении соответствующего запроса вам не нужно настраивать Google Analytics для использования Firebase AI Logic SDK.
В консоли Firebase перейдите на страницу Firebase AI Logic .
Нажмите «Начать» , чтобы запустить пошаговый рабочий процесс, который поможет вам настроить необходимые API и ресурсы для вашего проекта.
Выберите API разработчика Gemini . Вы всегда сможете настроить и использовать другого поставщика API позже, если захотите.
Консоль включит необходимые API и создаст новый выделенный ключ API Gemini в вашем проекте.
Если в рабочем процессе консоли появится соответствующий запрос, следуйте инструкциям на экране, чтобы зарегистрировать свое приложение и подключить его к Firebase.
Продолжайте следовать этому руководству по миграции, чтобы обновить библиотеку и инициализацию в вашем приложении.
Шаг 2 : Добавьте Firebase AI Logic SDK в свое приложение
После настройки проекта Firebase и подключения приложения к Firebase (см. предыдущий шаг) вы можете добавить Firebase AI Logic SDK в свое приложение.
Быстрый
Используйте Swift Package Manager для установки и управления зависимостями Firebase.
Библиотека Firebase AI Logic обеспечивает доступ к API для взаимодействия с моделями Gemini и Imagen . Библиотека включена в состав Firebase SDK для платформ Apple ( firebase-ios-sdk
).
Если вы уже используете Firebase, убедитесь, что ваш пакет Firebase — v11.13.0 или более поздней версии.
В Xcode откройте проект приложения и перейдите в меню Файл > Добавить зависимости пакета .
При появлении соответствующего запроса добавьте репозиторий Firebase Apple platform SDK:
https://github.com/firebase/firebase-ios-sdk
Выберите последнюю версию SDK.
Выберите библиотеку
FirebaseAI
.
По завершении Xcode автоматически начнет разрешать и загружать ваши зависимости в фоновом режиме.
Kotlin
Firebase AI Logic SDK для Android ( firebase-ai
) предоставляет доступ к API для взаимодействия с моделями Gemini и Imagen .
В файле Gradle вашего модуля (уровня приложения) (например, <project>/<app-module>/build.gradle.kts
) добавьте зависимость для библиотеки Firebase AI Logic для Android. Мы рекомендуем использовать Firebase Android BoM для управления версиями библиотеки.
dependencies { // ... other androidx dependencies // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:33.13.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") }
Благодаря использованию Firebase Android BoM ваше приложение всегда будет использовать совместимые версии библиотек Firebase Android.
Если вы решите не использовать Firebase BoM , вам необходимо указать каждую версию библиотеки Firebase в строке ее зависимостей.
Обратите внимание: если вы используете в своем приложении несколько библиотек Firebase, мы настоятельно рекомендуем использовать BoM для управления версиями библиотек, что гарантирует совместимость всех версий.
dependencies { // Add the dependency for the Firebase AI Logic library // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-ai:16.0.0") }
Java
Firebase AI Logic SDK для Android ( firebase-ai
) предоставляет доступ к API для взаимодействия с моделями Gemini и Imagen .
В файле Gradle вашего модуля (уровня приложения) (например, <project>/<app-module>/build.gradle.kts
) добавьте зависимость для библиотеки Firebase AI Logic для Android. Мы рекомендуем использовать Firebase Android BoM для управления версиями библиотеки.
Для Java вам необходимо добавить две дополнительные библиотеки.
dependencies { // ... other androidx dependencies // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:33.13.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") // Required for one-shot operations (to use `ListenableFuture` from Guava Android) implementation("com.google.guava:guava:31.0.1-android") // Required for streaming operations (to use `Publisher` from Reactive Streams) implementation("org.reactivestreams:reactive-streams:1.0.4") }
Благодаря использованию Firebase Android BoM ваше приложение всегда будет использовать совместимые версии библиотек Firebase Android.
Если вы решите не использовать Firebase BoM , вам необходимо указать каждую версию библиотеки Firebase в строке ее зависимостей.
Обратите внимание: если вы используете в своем приложении несколько библиотек Firebase, мы настоятельно рекомендуем использовать BoM для управления версиями библиотек, что гарантирует совместимость всех версий.
dependencies { // Add the dependency for the Firebase AI Logic library // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-ai:16.0.0") }
Web
Библиотека Firebase AI Logic обеспечивает доступ к API для взаимодействия с моделями Gemini и Imagen . Библиотека включена в состав Firebase JavaScript SDK for Web.
Установите Firebase JS SDK для Web с помощью npm:
npm install firebase
Инициализируйте Firebase в вашем приложении:
import { initializeApp } from "firebase/app"; // 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);
Dart
Плагин Firebase AI Logic для Flutter ( firebase_ai
) обеспечивает доступ к API для взаимодействия с моделями Gemini и Imagen .
Из каталога проекта Flutter выполните следующую команду, чтобы установить основной плагин и плагин Firebase AI Logic :
flutter pub add firebase_core && flutter pub add firebase_ai
В файле
lib/main.dart
импортируйте основной плагин Firebase, плагин Firebase AI Logic и файл конфигурации, который вы сгенерировали ранее:import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_ai/firebase_ai.dart'; import 'firebase_options.dart';
Также в файле
lib/main.dart
инициализируйте Firebase с помощью объектаDefaultFirebaseOptions
, экспортированного файлом конфигурации:await Firebase.initializeApp( options: DefaultFirebaseOptions.currentPlatform, );
Перестройте свое приложение Flutter:
flutter run
Единство
Поддержка Unity не была доступна в клиентских SDK Google AI .
Узнайте, как начать работу с Firebase AI Logic SDK для Unity .
Удалите старый SDK из вашего приложения.
После завершения миграции приложения (см. оставшиеся разделы этого руководства) обязательно удалите старую библиотеку.
Быстрый
Удалить старую библиотеку:
В Xcode откройте проект приложения и перейдите на панель «Зависимости пакетов» .
Выберите пакет
generative-ai-swift
из списка зависимостей пакетов.Нажмите кнопку
-
в нижней части списка и нажмите «Удалить» для подтверждения.
Kotlin
dependencies {
implementation("com.google.ai.client.generativeai:generativeai:VERSION")
}
Java
dependencies {
implementation("com.google.ai.client.generativeai:generativeai:VERSION")
}
Web
// BEFORE
import { initializeApp } from "firebase/app";
import { GoogleGenerativeAI } from "@google/generative-ai";
Dart
Удалить старый пакет:
flutter pub remove google_generative_ai
Единство
Поддержка Unity не была доступна в клиентских SDK Google AI .
Узнайте, как начать работу с Firebase AI Logic SDK для Unity .
Шаг 3 : Обновите импорты и инициализацию в вашем приложении.
Обновите импорты и способ инициализации внутренней службы API Gemini Developer , а также создайте экземпляр GenerativeModel
.
Быстрый
// BEFOREimport GoogleGenerativeAI let model = GenerativeModel(name: "MODEL_NAME", apiKey: APIKey.default)// AFTER 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
// BEFOREimport com.google.ai.client.generativeai.Chat import com.google.ai.client.generativeai.type.Content import com.google.ai.client.generativeai.java.GenerativeModuleFutures...val generativeModel = GenerativeModel(modelName = "MODEL_NAME", // Access your API key as a Build Configuration variable apiKey = BuildConfig.apiKey )// AFTER import com.google.firebase.Firebase import com.google.firebase.ai.ai import com.google.firebase.ai.type.GenerativeBackend ... // 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
// BEFOREimport com.google.ai.client.generativeai.Chat; import com.google.ai.client.generativeai.type.Content; import com.google.ai.client.generativeai.java.GenerativeModuleFutures;...GenerativeModel gm = new GenerativeModel("MODEL_NAME", // Access your API key as a Build Configuration variable BuildConfig.apiKey ); GenerativeModelFutures model = GenerativeModelFutures.from(gm);// AFTER import com.google.firebase.ai.FirebaseAI; import com.google.firebase.ai.GenerativeModel; import com.google.firebase.ai.java.GenerativeModelFutures; import com.google.firebase.ai.type.GenerativeBackend; ... // 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
// BEFOREimport { GoogleGenerativeAI } from "@google/generative-ai"; // Fetch your API_KEY and access your API const API_KEY = "..."; const genAI = new GoogleGenerativeAI(API_KEY);...const model = genAI.getGenerativeModel({ model: "MODEL_NAME"});// AFTER 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
// BEFOREimport 'package:google_generative_ai/google_generative_ai.dart'; final apiKey = Platform.environment['API_KEY']; if (apiKey == null) { print('No \$API_KEY environment variable'); exit(1); } final model = GenerativeModel(model: 'MODEL_NAME', apiKey: apiKey);// AFTER 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 не была доступна в клиентских SDK Google AI .
Узнайте, как начать работу с Firebase AI Logic SDK для Unity .
Обратите внимание, что в зависимости от используемой возможности вы не всегда можете создать экземпляр GenerativeModel
.
- Чтобы получить доступ к модели Imagen , создайте экземпляр
ImagenModel
.
Шаг 4 : Обновите код в зависимости от используемых вами функций.
На этом этапе описываются изменения, которые могут потребоваться в зависимости от используемых вами функций.
Клиентские SDK Firebase AI Logic не поддерживают выполнение кода. Если вы используете эту функцию, обязательно учтите это в своем приложении.
Просмотрите следующие списки на предмет изменений, которые вам может потребоваться внести в свой код для перехода на клиентские SDK Firebase AI Logic .
Требуется для всех языков и платформ
Вызов функции
Если вы реализовали эту функцию, вам нужно будет обновить то, как вы определяете свою схему. Мы рекомендуем просмотреть обновленное руководство по вызову функций , чтобы узнать, как писать объявления функций.Генерация структурированного вывода (типа JSON) с использованием
responseSchema
Если вы реализовали эту функцию, вам нужно будет обновить то, как вы определяете свою схему. Мы рекомендуем просмотреть новое руководство по структурированному выводу , чтобы узнать, как писать схемы 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
перенесен в конец списка параметров для соответствия другим платформам.
- Параметр
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
перенесен в конец списка параметров для соответствия другим платформам.
- Параметр
Web
Обратите внимание, что Google AI client SDK для JavaScript претерпел множество изменений с тех пор, как от него отделились Firebase AI Logic client SDK. Ниже приведен список некоторых потенциальных изменений, которые вам, возможно, придется учесть при переходе на Firebase AI Logic client SDK.
Перечисления
- Удалены значения из следующих перечислений:
HarmCategory
,BlockThreshold
,HarmProbability
,HarmSeverity
,BlockReason
иFinishReason
.
- Удалены значения из следующих перечислений:
Причина блокировки
- Изменено
blockReason
вPromptFeedback
на необязательное.
- Изменено
Поиск заземления
- Удалены все использования этой функции, поскольку она пока не поддерживается в Firebase AI Logic SDK.
Ошибки
- Удалены все использования
GoogleGenerativeAIError
и при необходимости перемещены вAIError
.
- Удалены все использования
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 не была доступна в клиентских SDK Google AI .
Узнайте, как начать работу с Firebase AI Logic SDK для Unity .
Оставьте отзыв о своем опыте использования Firebase AI Logic