Как перейти с клиентских 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).

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

Общая информация о переходе на SDK Firebase AI Logic:

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

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

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

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

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

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

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

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

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

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

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

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

Шаг 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.

  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.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 для веб-сайтов.

  1. Установите Firebase JS SDK для сайта с помощью 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. В каталоге проекта Flutter выполните следующую команду, чтобы установить плагины Firebase AI Logic и App Check:

    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.

Подробнее о том, как начать работу с Firebase AI Logic SDK для 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.

Подробнее о том, как начать работу с Firebase AI Logic SDK для 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.

Подробнее о том, как начать работу с 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

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

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

Подробнее о том, как начать работу с Firebase AI Logic SDK для Unity…


Оставить отзыв о работе Firebase AI Logic