Перейти непосредственно к инструкциям по миграции
Зачем переходить на использование 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 для включения больших файлов в мультимодальные запросы (при использовании API Vertex AI Gemini ). Клиентские 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, нажмите кнопку, чтобы создать новый проект Firebase, а затем воспользуйтесь одним из следующих вариантов:
Вариант 1 : создайте совершенно новый проект Firebase (и его базовый проект Google Cloud автоматически), введя новое имя проекта на первом этапе рабочего процесса.
Вариант 2 : «Добавить Firebase» к существующему проекту Google Cloud , нажав «Добавить Firebase в проект Google Cloud» (внизу страницы). На первом этапе рабочего процесса начните вводить название существующего проекта, а затем выберите его из отобразившегося списка.
При желании вы можете добавить Firebase в проект, который был создан в фоновом режиме при создании ключа API Gemini в Google AI Studio .
Выполните оставшиеся шаги экранного рабочего процесса для создания проекта Firebase. Обратите внимание: при появлении соответствующего запроса вам не нужно настраивать Google Analytics для использования Firebase AI Logic SDK.
В консоли Firebase перейдите на страницу Firebase AI Logic .
Нажмите «Начать» , чтобы запустить пошаговый рабочий процесс, который поможет вам настроить необходимые API и ресурсы для вашего проекта.
Выберите API разработчика Gemini . При желании вы всегда сможете настроить и использовать другого поставщика API позже.
Консоль включит необходимые API и создаст новый выделенный ключ API Gemini в вашем проекте.
Не добавляйте этот новый ключ 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 — версия 11.13.0 или более поздняя.
В Xcode откройте проект приложения, перейдите в Файл > Добавить зависимости пакета .
При появлении запроса добавьте репозиторий Firebase Apple Platforms 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:34.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") }
Используя 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:17.2.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:34.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") // 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:17.2.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 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.5-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.5-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.5-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.5-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.5-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
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
перенесен в конец списка параметров для соответствия другим платформам.
- Параметр
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
Обратите внимание, что клиентский SDK Google AI для JavaScript претерпел множество изменений с момента появления клиентских SDK Firebase AI Logic . Ниже представлен список возможных изменений, которые вам, возможно, стоит учесть при переходе на клиентские SDK Firebase AI Logic .
Перечисления
- Удалены значения из следующих перечислений:
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
вCitationMetadata
переименовано вcitations
. Тип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