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


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

Зачем переходить на использование 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 для включения больших файлов в ваши мультимодальные запросы (если вы используете Vertex AI Gemini API ). Клиентские 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 в вашем проекте.

  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 — v11.13.0 или более поздней версии.

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

  2. При появлении соответствующего запроса добавьте репозиторий Firebase Apple platform 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:33.13.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:33.13.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 && flutter pub add 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.0-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.0-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.0-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.0-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.0-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 ): 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

Обратите внимание, что Google AI client SDK для JavaScript претерпел множество изменений с тех пор, как от него отделились Firebase AI Logic client SDK. Ниже приведен список некоторых потенциальных изменений, которые вам, возможно, придется учесть при переходе на Firebase AI Logic client SDK.

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

    • Удалены значения из следующих перечислений: 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 переименовано в citations в CitationMetadata . Тип 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