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


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

Зачем переходить на использование 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 и подключите свое приложение

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

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

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

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

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

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

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

Шаг 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 или более поздняя.

  1. В Xcode откройте проект приложения, перейдите в Файл > Добавить зависимости пакета .

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

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

  4. Выберите библиотеку 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.

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.

Web

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

  1. Установите Firebase JS SDK для Web с помощью 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 : Обновите импорт и инициализацию в вашем приложении.

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

Быстрый

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

// 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: для охвата неизвестных или необработанных значений, включая новые значения, которые будут добавлены в 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