Перейти к инструкциям по переносу
Зачем переходить на SDK Firebase AI Logic?
Возможно, вы попробовали альтернативный набор SDK для мобильных или веб-клиентов, который предоставил вам доступ к Gemini Developer API.
Эти клиентские SDK не были интегрированы в надежную экосистему Firebase, которая предлагает критически важные сервисы для мобильных и веб-приложений. Теперь вместо них рекомендуется использовать клиентские SDK Firebase AI Logic, которые позволяют получить доступ к Gemini Developer API.
Функции безопасности для мобильных и веб-приложений
Для мобильных и веб-приложений безопасность имеет критическое значение и требует особого внимания, поскольку ваш код, включая вызовы Gemini API, выполняется в незащищенной среде. Firebase App Check позволяет защитить API от злоупотреблений со стороны неавторизованных клиентов.
Если вы используете Firebase App Check с Firebase AI Logic, то никогда не добавляете ключ API Gemini для Gemini Developer API непосредственно в базу кода мобильного или веб-приложения. Ключ API Gemini остается на сервере и недоступен злоумышленникам.
Экосистема для мобильных и веб-приложений
Firebase – это платформа Google для разработки мобильных и веб-приложений. Используя Firebase AI Logic, вы получаете доступ к экосистеме, ориентированной на потребности разработчиков и приложений полного цикла. Пример:
Динамически задавайте конфигурации времени выполнения или меняйте значения в приложении (например, название и версию модели), не выпуская новую версию приложения, с помощью Firebase Remote Config.
Используйте Cloud Storage for Firebase, чтобы добавлять большие файлы в мультимодальные запросы (если вы используете Agent Platform Gemini API (formerly Vertex AI)). Клиентские SDK Cloud Storage помогают обрабатывать загрузки и скачивания файлов (даже при плохом подключении к сети) и обеспечивают дополнительную безопасность данных конечных пользователей. Подробную информацию вы найдете в руководстве по использованию Cloud Storage for Firebase.
Управляйте структурированными данными с помощью SDK баз данных, созданных для мобильных и веб-приложений (например, Cloud Firestore).
Перейдите на SDK Firebase AI Logic
Обзор шагов по переходу на SDK Firebase AI Logic:
Шаг 1. Настройте новый или существующий проект Firebase и подключите к нему приложение.
Шаг 2. Добавьте SDK Firebase AI Logic в приложение.
Шаг 3. Обновите импорт и инициализацию в приложении.
Шаг 4. Обновите код в зависимости от используемых функций.
Шаг 1. Настройте проект Firebase и подключите приложение
Войдите в консоль Firebase и выберите проект Firebase.
В консоли Firebase выберите AI Services (Сервисы ИИ) > AI Logic (Логика ИИ).
Нажмите Начать, чтобы запустить пошаговый процесс настройки необходимых API и ресурсов для проекта.
Нажмите на значок Gemini Developer API. При желании вы всегда можете настроить и использовать другого поставщика API позже.
Консоль включит необходимые API и создаст в вашем проекте новый ключ API Gemini.
Не добавляйте новый ключ API Gemini в базу кода приложения. Подробнее…Если в консоли появится запрос, следуйте инструкциям на экране, чтобы зарегистрировать приложение и подключить его к Firebase.
Продолжайте следовать этому руководству по переносу данных, чтобы обновить библиотеку и инициализацию в приложении.
Шаг 2. Добавьте SDK Firebase AI Logic в приложение
После того как вы настроили проект Firebase и подключили к нему приложение (см. предыдущий шаг), вы можете добавить в приложение SDK Firebase AI Logic.
Swift
Для установки зависимостей Firebase и управления ими используйте Swift Package Manager. При необходимости ознакомьтесь с другими вариантами установки.
Библиотека Firebase AI Logic предоставляет доступ к API для взаимодействия с моделями Gemini. Библиотека входит в состав Firebase SDK для платформ Apple (firebase-ios-sdk).
Если вы уже используете Firebase, убедитесь, что у вас установлена версия 12.5.0 или более поздняя.
Откройте проект приложения в Xcode и перейдите в меню File (Файл) > Add Package Dependencies (Добавить зависимости пакетов).
Когда появится запрос, добавьте хранилище Firebase SDK для платформ Apple:
https://github.com/firebase/firebase-ios-sdkВыберите последнюю версию SDK.
Выберите библиотеки
FirebaseAILogicиFirebaseAppCheck.
После этого Xcode автоматически начнет распознавать и скачивать зависимости в фоновом режиме.
Kotlin
Firebase AI Logic SDK для Android (firebase-ai) предоставляет доступ к API для взаимодействия с моделями Gemini.
В файл Gradle на уровне модуля (приложения) (например, <project>/<app-module>/build.gradle.kts) добавьте зависимости для библиотек Firebase AI Logic и App Check для Android. Для управления версиями библиотек рекомендуем использовать Firebase Android BoM.
dependencies { // ... other androidx dependencies // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:35.1.0")) // Add the dependencies for the Firebase AI Logic and App Check libraries // When using the BoM, you don't specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-ai") implementation("com.google.firebase:firebase-appcheck-debug") }
Благодаря Firebase Android BoM в вашем приложении всегда будут использоваться совместимые версии библиотек Firebase Android.
Java
Firebase AI Logic SDK для Android (firebase-ai) предоставляет доступ к API для взаимодействия с моделями Gemini.
В файле Gradle на уровне модуля (приложения) (например, <project>/<app-module>/build.gradle.kts) добавьте зависимости для библиотек Firebase AI Logic и App Check для Android. Для управления версиями библиотек рекомендуем использовать Firebase Android BoM.
Для Java необходимо добавить две дополнительные библиотеки.
dependencies { // ... other androidx dependencies // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:35.1.0")) // Add the dependencies for the Firebase AI Logic and App Check libraries // When using the BoM, you don't specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-ai") implementation("com.google.firebase:firebase-appcheck-debug") // 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.
Web
Библиотека Firebase AI Logic предоставляет доступ к API для взаимодействия с моделями Gemini. Библиотека входит в состав Firebase JavaScript SDK для веб-приложений.
Установите Firebase JS SDK для Web с помощью npm:
npm install firebaseИнициализируйте Firebase в приложении:
import { initializeApp } from "firebase/app"; import { initializeAppCheck, DebugProvider } from "firebase/app-check"; // 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.
Чтобы установить плагины Firebase AI Logic и App Check, выполните в каталоге проекта Flutter следующую команду:
flutter pub add firebase_ai firebase_app_checkВ файле
lib/main.dartимпортируйте плагины Firebase AI Logic и App Check:import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_ai/firebase_ai.dart'; import 'package:firebase_app_check/firebase_app_check.dart'; import 'firebase_options.dart';Также в файле
lib/main.dartубедитесь, что вы инициализировали Firebase с помощью объектаDefaultFirebaseOptions, экспортированного файлом конфигурации:await Firebase.initializeApp( options: DefaultFirebaseOptions.currentPlatform, );Пересоберите приложение Flutter:
flutter run
Unity
Поддержка Unity не была доступна в клиентских SDK Google AI.
Узнайте, как начать работу с SDK Firebase AI Logic для Unity.
Удалите старый SDK из приложения.
После завершения переноса приложения (см. остальные разделы этого руководства) обязательно удалите старую библиотеку.
Swift
Удалите старую библиотеку:
Откройте проект приложения в Xcode и перейдите на панель Packages Dependencies (Зависимости пакетов).
Выберите пакет
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
Поддержка Unity не была доступна в клиентских SDK Google AI.
Узнайте, как начать работу с SDK Firebase AI Logic для Unity.
Шаг 3. Обновите импорт и инициализацию в приложении
Обновите импорт и инициализацию бэкенд-службы Gemini Developer API, а также создайте экземпляр GenerativeModel.
Swift
// BEFOREimport GoogleGenerativeAI let model = GenerativeModel(name: "MODEL_NAME", apiKey: APIKey.default)// AFTER 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-3.8-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-3.8-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-3.8-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-3.8-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-3.8-flash');
Unity
Поддержка Unity не была доступна в клиентских SDK Google AI.
Узнайте, как начать работу с SDK Firebase AI Logic для Unity.
Обратите внимание, что в зависимости от используемой функции вы не всегда можете создать экземпляр GenerativeModel. Чтобы передавать входные и выходные данные в потоковом режиме с помощью Gemini Live API, создайте экземпляр LiveModel.
Шаг 4. Обновите код в зависимости от используемых функций
В этом разделе описаны изменения, которые могут потребоваться в зависимости от того, какие функции вы используете.
Клиентские SDK Firebase AI Logic не поддерживают выполнение кода. Если вы используете эту функцию, убедитесь, что она поддерживается в вашем приложении.
Ознакомьтесь с приведенными ниже списками, чтобы узнать, какие изменения вам может потребоваться внести в код при переходе на клиентские SDK Firebase AI Logic.
Обязательно для всех языков и платформ.
Вызов функций
Если вы используете эту функцию, вам нужно будет изменить способ определения схемы. Рекомендуем ознакомиться с обновленным руководством по вызову функций, чтобы узнать, как писать объявления функций.Генерация структурированных выходных данных (например, JSON) с помощью
responseSchema
Если вы реализовали эту функцию, вам нужно будет обновить определение схемы. Рекомендуем ознакомиться с новым руководством по структурированным выходным данным, чтобы узнать, как писать схемы JSON.Время ожидания
- Время ожидания по умолчанию для запросов изменено на 180 секунд.
Обязательно в зависимости от платформы или языка
Swift
Перечисления
Большинство типов
enumзаменены наstructсо статическими переменными. Это изменение позволяет более гибко развивать API с сохранением обратной совместимости. При использовании операторовswitchтеперь необходимо включать вариантdefault:, чтобы охватить неизвестные или необработанные значения, в том числе новые значения, которые будут добавлены в SDK в будущем.Перечисление
BlockThresholdпереименовано вHarmBlockThreshold. Теперь этот тип являетсяstruct.Из следующих перечислений (теперь
struct) удалены вариантыunknownиunspecified: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переименовано вcitationsвCitationMetadata.
- Свойство
Общее количество оплачиваемых символов
- Свойство
totalBillableCharactersвCountTokensResponseстало необязательным, чтобы отразить ситуации, когда символы не отправляются.
- Свойство
Ответ кандидата
- Параметр
CandidateResponseпереименован вCandidateдля соответствия другим платформам.
- Параметр
Конфигурация генерации
- Общедоступные свойства изменены с "
GenerationConfig" на "internal". Все они по-прежнему настраиваются в инициализаторе.
- Общедоступные свойства изменены с "
Kotlin
Перечисления
Заменено
enumзанятий иsealedзанятий обычными занятиями. Это изменение позволяет более гибко развивать API с сохранением обратной совместимости.Перечисление
BlockThresholdпереименовано вHarmBlockThreshold.Удалены значения из следующих перечислений:
HarmBlockThreshold,HarmProbability,HarmSeverity,BlockReasonиFinishReason.
Методы Blob
- Все методы, в названии которых использовалось
Blob, переименованы. Теперь в их названиях используетсяInlineData.
- Все методы, в названии которых использовалось
Настройки безопасности
- Поле
methodтеперь может иметь значение NULL.
- Поле
Класс Duration
- Удалены все случаи использования класса
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
- Удалены все случаи использования класса
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" теперь необязательное.
- Поле "
Обоснование в Поиске
- Удалены все случаи использования этой функции, поскольку она пока не поддерживается в SDK Firebase AI Logic.
Ошибки
- Удалите все экземпляры
GoogleGenerativeAIErrorи при необходимости перейдите наAIError.
- Удалите все экземпляры
Dart
Перечисления
- Удалены значения из следующих перечислений:
HarmCategory,HarmProbability,BlockReasonиFinishReason.
- Удалены значения из следующих перечислений:
Часть данных
DataPartпереименован вInlineDataPart, а функцияstaticdata– в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
Поддержка Unity не была доступна в клиентских SDK Google AI.
Узнайте, как начать работу с SDK Firebase AI Logic для Unity.
Оставить отзыв о работе с Firebase AI Logic