Переход на Firebase AI Logic SDKs с клиентских AI SDK Google


Перейдите непосредственно к инструкциям по миграции.

Почему стоит перейти на использование SDK Firebase AI Logic ?

Возможно, вы уже пробовали альтернативный набор SDK для мобильных или веб-приложений, который предоставлял вам доступ к API разработчика Gemini .

Эти клиентские SDK не были интегрированы в мощную экосистему Firebase, предоставляющую критически важные сервисы для мобильных и веб-приложений. Теперь они устарели в пользу клиентских SDK Firebase AI Logic , которые предоставляют доступ к API разработчика Gemini .

Функции безопасности для мобильных и веб-приложений

Для мобильных и веб-приложений безопасность имеет решающее значение и требует особого внимания, поскольку ваш код, включая вызовы к API Gemini , выполняется в незащищенной среде. Вы можете использовать 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 для включения больших файлов в ваши мультимодальные запросы (если вы используете API Vertex AI Gemini ). Клиентские SDK Cloud Storage помогут вам обрабатывать загрузку и скачивание файлов (даже в условиях плохой сети) и обеспечат более высокую безопасность данных ваших конечных пользователей. Подробнее см. в нашем руководстве по использованию Cloud Storage for Firebase .

  • Управляйте структурированными данными с помощью SDK для баз данных, разработанных для мобильных и веб-приложений (например, Cloud Firestore ).

Переход на SDK Firebase AI Logic

Обзор шагов по миграции на SDK Firebase AI Logic :

  • Шаг 1 : Создайте новый или подключите существующий проект Firebase к Firebase.

  • Шаг 2 : Добавьте SDK Firebase AI Logic в ваше приложение.

  • Шаг 3 : Обновите импорт и инициализацию в вашем приложении.

  • Шаг 4 : Обновите свой код в зависимости от используемых вами функций.

Шаг 1 : Создайте проект Firebase и подключите к нему ваше приложение.

  1. Войдите в консоль Firebase , а затем выберите свой проект Firebase.

  2. В консоли Firebase перейдите на страницу Firebase AI Logic .

  3. Нажмите « Начать» , чтобы запустить пошаговый рабочий процесс, который поможет вам настроить необходимые API и ресурсы для вашего проекта.

  4. Выберите API разработчика Gemini . При желании вы всегда сможете настроить и использовать другой поставщик API позже.

    Консоль активирует необходимые API и создаст новый, выделенный ключ API Gemini в вашем проекте.
    Не добавляйте этот новый ключ API Gemini в код вашего приложения. Узнайте больше.

  5. Если в процессе работы консоли появится соответствующее сообщение, следуйте инструкциям на экране, чтобы зарегистрировать ваше приложение и подключить его к Firebase.

  6. Продолжите выполнение инструкций в этом руководстве по миграции, чтобы обновить библиотеку и выполнить инициализацию в вашем приложении.

Шаг 2 : Добавьте SDK Firebase AI Logic в ваше приложение.

После настройки проекта Firebase и подключения приложения к Firebase (см. предыдущий шаг) вы можете добавить SDK Firebase AI Logic в свое приложение.

Быстрый

Используйте Swift Package Manager для установки и управления зависимостями Firebase.

Библиотека Firebase AI Logic предоставляет доступ к API для взаимодействия с моделями Gemini и Imagen . Библиотека входит в состав Firebase SDK для платформ Apple ( firebase-ios-sdk ).

Если вы уже используете Firebase, убедитесь, что версия вашего пакета Firebase — 12.5.0 или более поздняя.

  1. В Xcode, открыв проект приложения, перейдите в меню File > Add Package Dependencies .

  2. При появлении запроса добавьте репозиторий Firebase Apple Platforms SDK:

    https://github.com/firebase/firebase-ios-sdk
    
  3. Выберите последнюю версию SDK.

  4. Выберите библиотеку FirebaseAILogic .

После завершения 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.7.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.

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.7.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.

Web

Библиотека Firebase AI Logic предоставляет доступ к API для взаимодействия с моделями Gemini и Imagen . Библиотека входит в состав Firebase JavaScript SDK для веб-приложений.

  1. Установите Firebase JS SDK для веб-разработки с помощью npm:

    npm install firebase
    
  2. Инициализируйте 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 .

  1. В каталоге вашего проекта Flutter выполните следующую команду для установки основного плагина и плагина Firebase AI Logic :

    flutter pub add firebase_core firebase_ai
    
  2. В файле 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';
    
  3. Также в файле lib/main.dart инициализируйте Firebase, используя объект DefaultFirebaseOptions , экспортируемый из файла конфигурации:

    await Firebase.initializeApp(
      options: DefaultFirebaseOptions.currentPlatform,
    );
    
  4. Пересоберите ваше Flutter-приложение:

    flutter run
    

Единство

Поддержка Unity отсутствовала в SDK клиента Google AI .

Узнайте, как начать работу с Firebase AI Logic SDK для Unity .

Удалите старый SDK из вашего приложения.

После завершения миграции приложения (см. остальные разделы этого руководства) обязательно удалите старую библиотеку.

Быстрый

Удалите старую библиотеку:

  1. В Xcode, открыв проект приложения, перейдите в панель «Пакеты и зависимости» .

  2. Выберите пакет generative-ai-swift из списка зависимостей пакетов.

  3. Нажмите кнопку - внизу списка и нажмите «Удалить» для подтверждения.

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 : Обновите импорт и инициализацию в вашем приложении.

Обновите импорт и способ инициализации бэкэнд-сервиса Gemini Developer API , а также создайте экземпляр GenerativeModel .

Быстрый

// BEFORE
import 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-2.5-flash")

Kotlin

// BEFORE
import 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

// BEFORE
import 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

// BEFORE
import { 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

// BEFORE
import '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 .

Шаг 4 : Обновите код в зависимости от используемых вами функций.

На этом шаге описываются изменения, которые могут потребоваться в зависимости от используемых вами функций.

  • SDK клиента Firebase AI Logic не поддерживают выполнение кода. Если вы используете эту функцию, убедитесь, что она учтена в вашем приложении.

  • Ознакомьтесь со следующими списками, чтобы узнать, какие изменения вам, возможно, потребуется внести в свой код для перехода на клиентские SDK Firebase AI Logic .

Требуется для всех языков и платформ.

  • Вызов функции
    Если вы реализовали эту функцию, вам потребуется внести изменения в определение схемы. Мы рекомендуем ознакомиться с обновленным руководством по вызову функций , чтобы узнать, как правильно писать объявления функций.

  • Генерация структурированного вывода (например, в формате JSON) с использованием responseSchema
    Если вы внедрили эту функцию, вам потребуется внести изменения в определение схемы. Мы рекомендуем ознакомиться с новым руководством по структурированному выводу, чтобы узнать, как писать JSON-схемы.

  • Тайм-аут

    • Изменено значение тайм-аута по умолчанию для запросов на 180 секунд.

Требуется в зависимости от платформы или языка.

Быстрый

  • Перечисления

    • Большинство типов enum заменены struct со статическими переменными. Это изменение обеспечивает большую гибкость при развитии API с сохранением обратной совместимости. При использовании операторов switch теперь необходимо указывать значение default: case) для обработки неизвестных или необработанных значений, включая новые значения, которые будут добавлены в SDK в будущем.

    • Переименование перечисления BlockThreshold в HarmBlockThreshold ; теперь этот тип является struct .

    • Из следующих перечислений (теперь struct ) удалены unknown и unspecified случаи: HarmCategory , HarmBlockThreshold , HarmProbability , BlockReason и FinishReason .

    • Заменено перечисление ModelContent.Part протоколом с именем Part , позволяющим добавлять новые типы с сохранением обратной совместимости. Это изменение более подробно описано в разделе «Части контента» .

  • Содержание

    • Удалён протокол ThrowingPartsRepresentable , а инициализаторы для ModelContent упрощены, чтобы избежать случайных ошибок компиляции. Изображения, которые некорректно кодируются, по-прежнему будут вызывать ошибки при использовании в generateContent .

    • Заменены экземпляры ModelContent.Part следующими struct типами, соответствующими протоколу Part :

      • .text to TextPart
      • .data to InlineDataPart
      • .fileData to FileDataPart
      • .functionCall to FunctionCallPart
      • .functionResponse to 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 , теперь он является необязательным.
  • Поиск заземления

    • Удалено все упоминания этой функции, поскольку она пока не поддерживается в SDK Firebase AI Logic .
  • Ошибки

    • Удалены все упоминания 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.