Firebase AI Logic и его клиентские пакеты SDK раньше назывались Vertex AI in Firebase. Чтобы лучше отразить расширенные сервисы и функции (например, теперь мы поддерживаем Gemini Developer API!), мы переименовали и переупаковали наши сервисы в Firebase AI Logic.
Чтобы безопасно получать доступ к моделям генеративного ИИ от Google прямо из мобильных или веб-приложений, теперь можно выбрать поставщика Gemini API – Agent Platform Gemini API (formerly Vertex AI) или Gemini Developer API. Это означает, что теперь вы можете использовать Gemini Developer API, в котором есть бесплатный уровень с разумными ограничениями на количество запросов и квотами.
Обзор шагов по переносу на использование SDK Firebase AI Logic
Шаг 1. Выберите подходящего поставщика Gemini API для вашего приложения и вариантов использования.
Шаг 2. Включите необходимые API.
Шаг 3. Обновите библиотеку, используемую в приложении.
Шаг 4. Обновите инициализацию в приложении
Шаг 5. Обновите код в зависимости от используемых функций.
Шаг 1. Выберите подходящего поставщика Gemini API для вашего приложения
После перехода вы сможете выбрать поставщика услуг "Gemini API":
В старых SDK Vertex AI in Firebase можно было использовать только Agent Platform Gemini API (formerly Vertex AI).
Новые SDK Firebase AI Logic позволяют выбирать, какого поставщика Gemini API вы хотите вызывать напрямую из своего мобильного или веб-приложения: Gemini Developer API или Agent Platform Gemini API (formerly Vertex AI).
Ознакомьтесь с различиями между двумя поставщиками Gemini API, особенно в отношении поддерживаемых функций, цен и ограничений на количество запросов. Например, Gemini Developer API не поддерживает предоставление файлов с помощью URL Cloud Storage, но может быть хорошим вариантом, если вы хотите воспользоваться бесплатным уровнем и разумной квотой.
Шаг 2. Включите необходимые API
Чтобы использовать выбранного поставщика Gemini API, убедитесь, что в вашем проекте Firebase включены все необходимые API.
Обратите внимание, что в проекте можно одновременно включить обоих поставщиков API.
Войдите в консоль Firebase и выберите проект Firebase.
В консоли Firebase выберите Сервисы ИИ > Логика ИИ.
Нажмите Get started (Начать), чтобы запустить пошаговый процесс настройки необходимых API и ресурсов для вашего проекта.
Выберите поставщика Gemini API, которого вы хотите использовать с SDK Firebase AI Logic. Вы всегда можете настроить и использовать другого поставщика API позже.
Gemini Developer API – оплата не требуется (доступно в бесплатном тарифном плане Spark)
В процессе работы консоли будут включены необходимые API и создан ключ API Gemini в вашем проекте.
Не добавляйте этот ключ API Gemini в базу кода приложения. Подробнее…Agent Platform Gemini API (formerly Vertex AI) – требуется оплата (необходимо выбрать тарифный план Blaze с оплатой по мере использования)
Рабочий процесс консоли позволит включить необходимые API в вашем проекте.
Чтобы обновить библиотеку и инициализацию в приложении, следуйте инструкциям в этом руководстве по переносу.
Шаг 3. Обновите библиотеку, используемую в приложении
Обновите базу кода приложения, чтобы использовать библиотеку Firebase AI Logic.
Swift
Откройте проект приложения в Xcode и обновите пакет Firebase до версии 12.5.0 или более поздней, используя один из следующих вариантов:
Вариант 1. Обновите все пакеты, выбрав File (Файл) > Packages (Пакеты) > Update to Latest Package Versions (Обновить до последних версий пакетов).
Вариант 2. Обновите Firebase отдельно. Для этого перейдите к пакету Firebase в разделе Package Dependencies (Зависимости пакетов). Нажмите правой кнопкой мыши на пакет Firebase и выберите Update Package (Обновить пакет).
Убедитесь, что в пакете Firebase указана версия 12.5.0 или более поздняя. Если нет, убедитесь, что в разделе Требования к пакету указано, что можно установить версию 12.5.0 или более позднюю.
Выберите целевое приложение в редакторе проектов и перейдите в раздел Frameworks, Libraries, and Embedded Content (Фреймворки, библиотеки и встроенный контент).
Добавьте новую библиотеку. Нажмите кнопку + и добавьте FirebaseAILogic из пакета Firebase.
После того как вы перенесете приложение (см. оставшиеся разделы этого руководства), удалите старую библиотеку:
Выберите FirebaseVertexAI-Preview и нажмите кнопку –.
Kotlin
В файле Gradle модуля (на уровне приложения) (обычно
<project>/<app-module>/build.gradle.ktsили<project>/<app-module>/build.gradle) замените старые зависимости (если они есть) на следующие:Обратите внимание, что может быть проще перенести код приложения (см. оставшиеся разделы этого руководства), прежде чем удалять старую зависимость.
// BEFORE dependencies {
implementation("com.google.firebase:firebase-vertexai:16.0.0-betaXX")} // AFTER dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:35.0.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") }Синхронизируйте проект для Android с файлами Gradle.
Если вы не хотите использовать Firebase Android BoM, добавьте зависимость для библиотеки firebase-ai и примите последнюю версию, предложенную Android Studio.
Java
В файле Gradle модуля (на уровне приложения) (обычно
<project>/<app-module>/build.gradle.ktsили<project>/<app-module>/build.gradle) замените старые зависимости (если они есть) на следующие:Обратите внимание, что может быть проще перенести код приложения (см. оставшиеся разделы этого руководства), прежде чем удалять старую зависимость.
// BEFORE dependencies {
implementation("com.google.firebase:firebase-vertexai:16.0.0-betaXX")} // AFTER dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:35.0.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") }Синхронизируйте проект для Android с файлами Gradle.
Если вы не хотите использовать Firebase Android BoM, добавьте зависимость для библиотеки firebase-ai и примите последнюю версию, предложенную Android Studio.
Web
Чтобы получить последнюю версию Firebase JS SDK для сайта, используйте npm:
npm i firebase@latest
ИЛИ
yarn add firebase@latest
Везде, где вы импортировали библиотеку, обновите операторы импорта, чтобы вместо нее использовался
firebase/ai.Обратите внимание, что может быть проще перенести базу кода приложения (см. остальные разделы этого руководства), прежде чем удалять старые импорты.
// BEFORE import { initializeApp } from "firebase/app";
import { getVertexAI, getGenerativeModel } from "firebase/vertexai-preview";// AFTER import { initializeApp } from "firebase/app"; import { getAI, getGenerativeModel } from "firebase/ai";
Dart
Чтобы использовать пакет
firebase_aiв файлеpubspec.yaml, выполните следующую команду в каталоге проекта Flutter:flutter pub add firebase_ai
Пересоберите проект Flutter:
flutter run
После того как вы перенесете приложение (см. остальные разделы этого руководства), удалите старый пакет:
flutter pub remove firebase_vertexai
Unity
Поддержка Unity была недоступна в "Vertex AI in Firebase".
Подробнее о том, как начать работу с Firebase AI Logic SDK для Unity…
Шаг 4. Обновите инициализацию в приложении
|
Нажмите на поставщика Gemini API, чтобы посмотреть контент и код, относящиеся к нему. |
Измените способ инициализации сервиса для выбранного поставщика API и создайте экземпляр GenerativeModel.
Swift
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
// 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
// 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
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
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 была недоступна с "Vertex AI in Firebase".
Подробнее о том, как начать работу с Firebase AI Logic SDK для Unity…
Обратите внимание, что в зависимости от используемой функции вы можете не всегда создавать экземпляр GenerativeModel. Чтобы передавать входные и выходные данные с помощью Gemini Live API, создайте экземпляр LiveModel.
Шаг 5. Обновите код в зависимости от используемых функций
На этом шаге описаны изменения, которые могут потребоваться в зависимости от того, какие функции вы используете.
Если вы используете URL Cloud Storage и в ходе этого переноса перешли на Gemini Developer API, то вам необходимо обновить многомодальные запросы, чтобы включать файлы в виде встроенных данных (или использовать URL YouTube для видео).
В общедоступных версиях SDK "Vertex AI in Firebase" были внесены следующие изменения: Эти же изменения необходимы для использования Firebase AI LogicSDK. Проверьте приведенные ниже списки и внесите в код необходимые изменения, чтобы обеспечить поддержку 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
- Удалены все случаи использования класса
DurationKotlin и заменены наlong. Это изменение обеспечивает лучшую совместимость с Java.
- Удалены все случаи использования класса
Метаданные цитирования
- Все поля, ранее объявленные в
CitationMetadata, были обернуты в новый классCitation. Ссылки можно найти в спискеcitationsвCitationMetadata. Это изменение позволит лучше согласовать типы на разных платформах.
- Все поля, ранее объявленные в
Как подсчитать токены
- Поле
totalBillableCharactersтеперь может иметь нулевое значение.
- Поле
Общее количество оплачиваемых символов
- Свойство
totalBillableCharactersвCountTokensResponseтеперь необязательное, чтобы отражать ситуации, когда символы не отправляются.
- Свойство
Создание экземпляра модели
- Параметр
requestOptionsперемещен в конец списка параметров, чтобы соответствовать другим платформам.
- Параметр
Live API
Удалено значение
UNSPECIFIEDдля класса перечисленияResponseModality. Вместо этого используйтеnull.Название "
LiveGenerationConfig.setResponseModalities" изменено на "LiveGenerationConfig.setResponseModality".Удален класс
LiveContentResponse.Status, а поля статуса вложены в качестве свойств в классLiveContentResponse.Удален класс
LiveContentResponse. Вместо него добавлены подклассыLiveServerMessage, соответствующие ответам модели.Изменено значение
LiveModelFutures.connect, теперь возвращаетсяListenableFuture<LiveSessionFutures>вместоListenableFuture<LiveSession>.
Java
Перечисления
Классы
enumиsealedзаменены на обычные классы. Это изменение позволяет более гибко развивать API, сохраняя обратную совместимость.Переименовано перечисление
BlockThresholdвHarmBlockThreshold.Удалены значения из следующих перечислений:
HarmBlockThreshold,HarmProbability,HarmSeverity,BlockReasonиFinishReason.
Методы Blob
- Во всех названиях методов, содержащих
Blob, этот символ заменен наInlineData.
- Во всех названиях методов, содержащих
Настройки безопасности
- Поле
methodтеперь может иметь нулевое значение.
- Поле
Класс Duration
- Удалены все случаи использования класса
DurationKotlin и заменены наlong. Это изменение обеспечивает лучшую совместимость с Java.
- Удалены все случаи использования класса
Метаданные цитирования
- Все поля, ранее объявленные в
CitationMetadata, были обернуты в новый классCitation. Ссылки можно найти в спискеcitationsвCitationMetadata. Это изменение позволит лучше согласовать типы на разных платформах.
- Все поля, ранее объявленные в
Как подсчитать токены
- Поле
totalBillableCharactersтеперь может иметь нулевое значение.
- Поле
Общее количество оплачиваемых символов
- Свойство
totalBillableCharactersвCountTokensResponseтеперь необязательное, чтобы отражать ситуации, когда символы не отправляются.
- Свойство
Создание экземпляра модели
- Параметр
requestOptionsперемещен в конец списка параметров, чтобы соответствовать другим платформам.
- Параметр
Live API
Удалено значение
UNSPECIFIEDдля класса перечисленияResponseModality. Вместо этого используйтеnull.Название "
LiveGenerationConfig.setResponseModalities" изменено на "LiveGenerationConfig.setResponseModality".Удален класс
LiveContentResponse.Status, а поля статуса вложены в качестве свойств в классLiveContentResponse.Удален класс
LiveContentResponse. Вместо него добавлены подклассыLiveServerMessage, соответствующие ответам модели.Изменено значение
LiveModelFutures.connect, теперь возвращаетсяListenableFuture<LiveSessionFutures>вместоListenableFuture<LiveSession>.
Изменены различные методы создания объектов Java, чтобы они правильно возвращали экземпляр своего класса, а не
void.
Web
Перечисления
- Удалены значения из следующих перечислений:
HarmCategory,BlockThreshold,HarmProbability,HarmSeverity,BlockReasonиFinishReason.
- Удалены значения из следующих перечислений:
Причина блокировки
- Поле "
blockReason" вPromptFeedbackстало необязательным.
- Поле "
Изменения требуются, только если вы начинаете использовать Gemini Developer API (вместо Agent Platform Gemini API (formerly Vertex AI)):
Настройки безопасности
- Удалены случаи использования неподдерживаемого тега
SafetySetting.method.
- Удалены случаи использования неподдерживаемого тега
Встроенные данные
- Удалены случаи использования неподдерживаемого тега
InlineDataPart.videoMetadata.
- Удалены случаи использования неподдерживаемого тега
Dart
Перечисления
- Из следующих перечислений удалены значения:
HarmCategory,HarmProbability,BlockReasonиFinishReason.
- Из следующих перечислений удалены значения:
Часть данных
- Функция
DataPartпереименована вInlineDataPart, а функцияstaticdata– в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 была недоступна в "Vertex AI in Firebase".
Подробнее о том, как начать работу с Firebase AI Logic SDK для Unity…
Возможные ошибки, связанные с переносом
При переходе на общедоступную версию Firebase AI Logic могут возникать ошибки, если вы не выполнили все необходимые изменения, описанные в этом руководстве.
Ошибка 403: Requests to this API firebasevertexai.googleapis.com ... are blocked.
Если вы получили ошибку 403 с сообщением
Requests to this API firebasevertexai.googleapis.com ... are blocked.,
это обычно означает, что в белом списке ключа API Firebase в файле или объекте конфигурации Firebase нет нужного API для продукта, который вы пытаетесь использовать.
Убедитесь, что в белый список "Ограничения API" ключа API Firebase, используемого вашим приложением, включены все необходимые API. Для Firebase AI Logic в белом списке ключа API Firebase должен быть хотя бы один API: Firebase AI Logic. Этот API должен был автоматически добавиться в белый список вашего ключа API, когда вы включили необходимые API в консоли Firebase.
Все ключи API можно посмотреть на панели APIs & Services (API и сервисы) > Credentials (Учетные данные) в консоли Google Cloud.
Оставить отзыв о работе Firebase AI Logic