Перейти к инструкциям по переносу
Зачем переходить на 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 выберите Сервисы ИИ > Логика ИИ.
Нажмите Get started (Начать), чтобы запустить пошаговый процесс настройки необходимых API и ресурсов для вашего проекта.
Нажмите на значок Gemini Developer API. Вы всегда можете настроить и использовать другого поставщика API позже.
Консоль включит необходимые API и создаст в вашем проекте новый специальный ключ API.Gemini
Не добавляйте новый ключ API Gemini в базу кода приложения. Подробнее…Если в консоли появится запрос, следуйте инструкциям на экране, чтобы зарегистрировать приложение и подключить его к Firebase.
Чтобы обновить библиотеку и инициализацию в приложении, следуйте инструкциям в этом руководстве по переносу.
Шаг 2. Добавьте SDK Firebase AI Logic в приложение
После того как вы настроили проект Firebase и подключили к нему приложение (см. предыдущий шаг), можно добавить в приложение Firebase AI Logic SDK.
Swift
Для установки зависимостей Firebase и управления ими используйте Swift Package Manager. При необходимости ознакомьтесь с другими вариантами установки.
Библиотека Firebase AI Logic предоставляет доступ к API для взаимодействия с моделями Gemini. Библиотека входит в состав Firebase SDK для платформ Apple (firebase-ios-sdk).
Если вы уже используете Firebase, убедитесь, что версия пакета 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.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.0.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 для сайта с помощью 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.
Подробнее о том, как начать работу с Firebase AI Logic SDK для 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.
Подробнее о том, как начать работу с Firebase AI Logic SDK для 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.
Подробнее о том, как начать работу с Firebase AI Logic SDK для Unity…
Оставить отзыв о работе Firebase AI Logic