Как перейти с клиентских SDK Google AI на SDK Firebase AI Logic


Перейти к инструкциям по переносу

Зачем переходить на 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).

Перейдите на SDK Firebase AI Logic

Обзор шагов по переходу на SDK Firebase AI Logic:

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

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

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

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

Шаг 1. Настройте проект Firebase и подключите приложение

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

  2. В консоли Firebase выберите AI Services (Сервисы ИИ) > AI Logic (Логика ИИ).

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

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

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

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

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

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

  1. Откройте проект приложения в Xcode и перейдите в меню File (Файл) > Add Package Dependencies (Добавить зависимости пакетов).

  2. Когда появится запрос, добавьте хранилище Firebase SDK для платформ Apple:

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

  4. Выберите библиотеки 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.1.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.1.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 для веб-приложений.

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

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

  1. Чтобы установить плагины Firebase AI Logic и App Check, выполните в каталоге проекта Flutter следующую команду:

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

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

    flutter run
    

Unity

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

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

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

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

Swift

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

  1. Откройте проект приложения в Xcode и перейдите на панель Packages Dependencies (Зависимости пакетов).

  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

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

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

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

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

Swift

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

    • Из следующих перечислений (теперь struct) удалены варианты unknown и unspecified: 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 теперь может иметь значение NULL.
  • Класс Duration

    • Удалены все случаи использования класса 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

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