Перейти к инструкциям по переносу
Зачем переходить на 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).
Переход на Firebase AI Logic SDK
Обзор шагов по переходу на SDK Firebase AI Logic:
Шаг 1. Настройте новый или существующий проект Firebase и подключите к нему приложение.
Шаг 2. Добавьте SDK Firebase AI Logic в приложение.
Шаг 3. Обновите импорт и инициализацию в приложении.
Шаг 4. Обновите код в зависимости от используемых функций.
Шаг 1. Настройте проект Firebase и подключите приложение
Войдите в консоль Firebase и выберите проект Firebase.
В консоли Firebase выберите AI Services (Сервисы ИИ) > AI Logic (Логика ИИ).
Нажмите Get started (Начать), чтобы запустить пошаговый процесс настройки необходимых 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.0.2")) // 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.0.2")) // 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.
В каталоге проекта Flutter выполните следующую команду, чтобы установить плагины Firebase AI Logic и App Check:
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.
Подробнее о том, как начать работу с Firebase AI Logic SDK для 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.Из следующих перечислений удалены варианты
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переименовано вcitationsвCitationMetadata.
- Свойство
Общее количество оплачиваемых символов
- Свойство
totalBillableCharactersвCountTokensResponseтеперь необязательное, чтобы отражать ситуации, когда символы не отправляются.
- Свойство
Ответ кандидата
- Переименован
CandidateResponseвCandidateдля соответствия другим платформам.
- Переименован
Конфигурация генерации
- Изменены общедоступные свойства
GenerationConfigнаinternal. Все эти параметры можно настроить в инициализаторе.
- Изменены общедоступные свойства
Kotlin
Перечисления
Классы
enumиsealedзаменены на обычные классы. Это изменение позволяет более гибко развивать API, сохраняя обратную совместимость.Переименовано перечисление
BlockThresholdвHarmBlockThreshold.Удалены значения из следующих перечислений:
HarmBlockThreshold,HarmProbability,HarmSeverity,BlockReasonиFinishReason.
Методы Blob
- Все методы, в названии которых использовалось
Blob, переименованы. Теперь в них используетсяInlineData.
- Все методы, в названии которых использовалось
Настройки безопасности
- Поле
methodтеперь может быть пустым.
- Поле
Класс Duration
- Удалены все случаи использования класса
DurationKotlin и заменены наlong. Это изменение обеспечивает лучшую совместимость с Java.
- Удалены все случаи использования класса
Метаданные цитирования
- Все поля, ранее объявленные в
CitationMetadata, теперь объединены в новый классCitation. Цитаты можно найти в спискеcitationsвCitationMetadata. Это изменение позволит лучше согласовать типы на разных платформах.
- Все поля, ранее объявленные в
Как подсчитать токены
- Поле
totalBillableCharactersтеперь может иметь нулевое значение.
- Поле
Общее количество оплачиваемых символов
- Свойство
totalBillableCharactersвCountTokensResponseстало необязательным, чтобы отразить ситуации, когда символы не отправляются.
- Свойство
Создание экземпляра модели
- Параметр
requestOptionsперемещен в конец списка параметров, чтобы обеспечить соответствие другим платформам.
- Параметр
Java
Перечисления
Классы
enumиsealedзаменены на обычные классы. Это изменение позволяет более гибко развивать API, сохраняя обратную совместимость.Переименовано перечисление
BlockThresholdвHarmBlockThreshold.Удалены значения из следующих перечислений:
HarmBlockThreshold,HarmProbability,HarmSeverity,BlockReasonиFinishReason.
Методы Blob
- Все методы, в названии которых использовалось
Blob, переименованы. Теперь в них используетсяInlineData.
- Все методы, в названии которых использовалось
Настройки безопасности
- Поле
methodтеперь может быть пустым.
- Поле
Класс Duration
- Удалены все случаи использования класса
DurationKotlin и заменены наlong. Это изменение обеспечивает лучшую совместимость с Java.
- Удалены все случаи использования класса
Метаданные цитирования
- Все поля, ранее объявленные в
CitationMetadata, теперь объединены в новый классCitation. Цитаты можно найти в спискеcitationsвCitationMetadata. Это изменение позволит лучше согласовать типы на разных платформах.
- Все поля, ранее объявленные в
Как подсчитать токены
- Поле
totalBillableCharactersтеперь может иметь нулевое значение.
- Поле
Общее количество оплачиваемых символов
- Свойство
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