Firebase AI Logic 및 클라이언트 SDK의 이전 명칭은 'Vertex AI in Firebase'였습니다. 확장된 서비스와 기능을 더 잘 반영하기 위해(예: 이제 Gemini Developer API를 지원함) 서비스의 이름을 바꾸고 Firebase AI Logic로 리패키징했습니다.
모바일 또는 웹 앱에서 Google의 생성형 AI 모델에 안전하게 직접 액세스하려면 이제 'Gemini API' 제공업체(오래된 Vertex AI Gemini API 또는 이제 Gemini Developer API)를 선택할 수 있습니다. 즉, 이제 합리적인 요금 한도와 할당량이 있는 무료 등급을 제공하는 Gemini Developer API를 사용할 수 있습니다.
Firebase AI Logic SDK로 이전하는 단계 개요
1단계: 앱 및 사용 사례에 가장 적합한 'Gemini API' 제공업체를 선택합니다.
2단계: 필수 API를 사용 설정합니다.
3단계: 앱에서 사용되는 라이브러리를 업데이트합니다.
4단계: 앱에서 초기화를 업데이트합니다.
5단계: 사용하는 기능에 따라 코드를 업데이트합니다.
1단계: 앱에 가장 적합한 'Gemini API' 제공업체 선택
이 이전을 통해 'Gemini API' 제공업체를 선택할 수 있습니다.
이전 'Vertex AI in Firebase' SDK는 Vertex AI Gemini API만 사용할 수 있었습니다.
새 Firebase AI Logic SDK를 사용하면 모바일 또는 웹 앱에서 직접 호출할 'Gemini API' 제공자(Gemini Developer API 또는 Vertex AI Gemini API)를 선택할 수 있습니다.
특히 지원되는 기능, 가격, 요금 한도 측면에서 두 Gemini API 제공업체를 사용하는 것의 차이를 검토하세요. 한 가지 예로 Gemini Developer API는 Cloud Storage URL을 사용하여 파일을 제공하는 것을 지원하지 않지만 무료 등급과 합리적인 할당량을 활용하려는 경우 좋은 선택일 수 있습니다.
2단계: 필수 API 사용 설정
선택한 'Gemini API' 제공자를 사용하려면 Firebase 프로젝트에서 필요한 모든 API가 사용 설정되어 있는지 확인합니다.
프로젝트에서 두 API 제공업체를 동시에 사용 설정할 수 있습니다.
Firebase 콘솔에 로그인한 후 Firebase 프로젝트를 선택합니다.
Firebase 콘솔에서 Firebase AI Logic 페이지로 이동합니다.
시작하기를 클릭하여 프로젝트의 필요한 API 및 리소스를 설정하는 데 도움이 되는 안내 워크플로를 시작합니다.
Firebase AI Logic SDK와 함께 사용할 'Gemini API' 제공업체를 선택합니다. 원하는 경우 나중에 언제든지 다른 API 제공업체를 설정하고 사용할 수 있습니다.
이 이전 가이드를 계속하여 앱의 라이브러리와 초기화를 업데이트합니다.
3단계: 앱에서 사용되는 라이브러리 업데이트
Firebase AI Logic 라이브러리를 사용하도록 앱의 코드베이스를 업데이트합니다.
Swift
앱 프로젝트를 연 상태로 Xcode에서 다음 옵션 중 하나를 사용하여 Firebase 패키지를 v11.13.0 이상으로 업데이트합니다.
옵션 1: 모든 패키지 업데이트: 파일 > 패키지 > 최신 패키지 버전으로 업데이트로 이동합니다.
옵션 2: Firebase 개별 업데이트: 패키지 종속 항목 섹션에서 Firebase 패키지로 이동합니다. Firebase 패키지를 마우스 오른쪽 버튼으로 클릭한 다음 패키지 업데이트를 선택합니다.
이제 Firebase 패키지에 v11.13.0 이상이 표시되는지 확인합니다. 그렇지 않으면 지정된 패키지 요구사항이 v11.13.0 이상으로 업데이트할 수 있도록 허용하는지 확인합니다.
Project Editor에서 앱의 타겟을 선택한 다음 프레임워크, 라이브러리, 삽입된 콘텐츠 섹션으로 이동합니다.
새 라이브러리 추가: + 버튼을 선택한 다음 Firebase 패키지에서 FirebaseAI를 추가합니다.
앱 이전을 완료한 후 (이 가이드의 나머지 섹션 참고) 이전 라이브러리를 삭제해야 합니다.
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:33.15.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 스튜디오에서 제안하는 최신 버전을 수락하면 됩니다.
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:33.15.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 스튜디오에서 제안하는 최신 버전을 수락하면 됩니다.
Web
npm을 사용하여 웹용 Firebase JS SDK의 최신 버전을 가져옵니다.
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
Flutter 프로젝트 디렉터리에서 다음 명령어를 실행하여
pubspec.yaml
파일에서firebase_ai
패키지를 사용하도록 업데이트합니다.flutter pub add firebase_ai
Flutter 프로젝트를 다시 빌드합니다.
flutter run
앱 이전을 완료한 후 (이 가이드의 나머지 섹션 참고) 이전 패키지를 삭제해야 합니다.
flutter pub remove firebase_vertexai
Unity
'Vertex AI in Firebase'에서 Unity 지원을 받을 수 없습니다.
Unity용 Firebase AI Logic SDK를 시작하는 방법을 알아보세요.
4단계: 앱에서 초기화 업데이트
Gemini API 제공업체를 클릭하여 이 페이지에서 제공업체별 콘텐츠와 코드를 확인합니다. |
선택한 API 제공업체의 서비스를 초기화하는 방법을 업데이트하고 GenerativeModel
인스턴스를 만듭니다.
Swift
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
// 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
// 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
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
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
'Vertex AI in Firebase'에서 Unity 지원을 받을 수 없습니다.
Unity용 Firebase AI Logic SDK를 시작하는 방법을 알아보세요.
사용 중인 기능에 따라 GenerativeModel
인스턴스가 항상 생성되지 않을 수 있습니다.
- Imagen 모델에 액세스하려면
ImagenModel
인스턴스를 만듭니다.
5단계: 사용하는 기능에 따라 코드 업데이트
이 단계에서는 사용하는 기능에 따라 필요할 수 있는 변경사항을 설명합니다.
Cloud Storage URL을 사용하고 이번 이전에서 Gemini Developer API를 사용하도록 전환한 경우 파일을 인라인 데이터로 포함하도록(또는 동영상에 YouTube URL을 사용하도록) 멀티모달 요청을 업데이트해야 합니다.
'Vertex AI in Firebase' SDK의 GA 버전에 몇 가지 변경사항이 도입되었습니다. Firebase AI Logic SDK를 사용하려면 동일한 변경사항이 필요합니다. Firebase AI Logic SDK를 사용하기 위해 코드에서 변경해야 할 사항이 있는지 다음 목록을 검토하세요.
모든 언어 및 플랫폼에 필요
함수 호출
GA 이전에 이 기능을 구현한 경우 스키마를 정의하는 방식을 업데이트해야 합니다. 함수 선언을 작성하는 방법을 알아보려면 업데이트된 함수 호출 가이드를 검토하는 것이 좋습니다.responseSchema
를 사용하여 구조화된 출력 (예: JSON) 생성
GA 이전에 이 기능을 구현한 경우 스키마를 정의하는 방법을 업데이트해야 합니다. JSON 스키마를 작성하는 방법을 알아보려면 새 구조화된 출력 가이드를 검토하는 것이 좋습니다.제한 시간
- 요청의 기본 제한 시간을 180초로 변경했습니다.
플랫폼 또는 언어에 따라 필요
Swift
열거형
대부분의
enum
유형을 정적 변수가 있는struct
로 바꿨습니다. 이 변경사항을 통해 이전 버전과 호환되는 방식으로 API를 더 유연하게 발전시킬 수 있습니다. 이제switch
문을 사용할 때는 향후 SDK에 추가되는 새 값을 비롯하여 알 수 없거나 처리되지 않은 값을 처리하기 위해default:
사례를 포함해야 합니다.BlockThreshold
열거형의 이름을HarmBlockThreshold
로 변경했습니다. 이 유형은 이제struct
입니다.다음 열거형 (이제
struct
)에서HarmCategory
,HarmBlockThreshold
,HarmProbability
,BlockReason
,FinishReason
의unknown
및unspecified
사례를 삭제했습니다.새 유형을 하위 호환 방식으로 추가할 수 있도록 열거형
ModelContent.Part
을Part
라는 프로토콜로 대체했습니다. 이 변경사항은 콘텐츠 부분 섹션에 자세히 설명되어 있습니다.
콘텐츠 부분
ThrowingPartsRepresentable
프로토콜을 삭제하고ModelContent
의 이니셜라이저를 단순화하여 가끔 발생하는 컴파일러 오류를 방지했습니다. 올바르게 인코딩되지 않은 이미지는generateContent
에서 사용될 때도 여전히 오류가 발생합니다.ModelContent.Part
케이스를Part
프로토콜을 준수하는 다음struct
유형으로 대체했습니다..text
~TextPart
.data
~InlineDataPart
.fileData
~FileDataPart
.functionCall
~FunctionCallPart
.functionResponse
~FunctionResponsePart
유해 카테고리
HarmCategory
가 더 이상SafetySetting
유형에 중첩되지 않도록 변경했습니다.SafetySetting.HarmCategory
라고 하는 경우HarmCategory
로 바꿀 수 있습니다.
안전 관련 의견
- 응답에 사용되지 않았으므로
SafetyFeedback
유형을 삭제했습니다.
- 응답에 사용되지 않았으므로
인용 메타데이터
CitationMetadata
에서citationSources
속성의 이름을citations
로 변경했습니다.
총 청구 가능 문자 수
- 문자가 전송되지 않는 상황을 반영하도록
CountTokensResponse
의totalBillableCharacters
속성을 선택사항으로 변경했습니다.
- 문자가 전송되지 않는 상황을 반영하도록
후보 응답
- 다른 플랫폼과 일치하도록
CandidateResponse
의 이름이Candidate
으로 변경되었습니다.
- 다른 플랫폼과 일치하도록
세대 구성
GenerationConfig
의 공개 속성을internal
로 변경했습니다. 모두 초기화 프로그램에서 구성할 수 있습니다.
Kotlin
열거형
enum
클래스와sealed
클래스를 일반 클래스로 대체했습니다. 이 변경사항을 통해 역호환 방식으로 API를 더 유연하게 발전시킬 수 있습니다.BlockThreshold
열거형의 이름을HarmBlockThreshold
로 변경했습니다.HarmBlockThreshold
,HarmProbability
,HarmSeverity
,BlockReason
,FinishReason
열거형에서 값을 삭제했습니다.
Blob 메서드
- 이름에
Blob
가 포함된 모든 메서드의 이름을 바꿔InlineData
를 대신 사용합니다.
- 이름에
안전 설정
method
필드를 null 허용으로 변경했습니다.
기간 클래스
- Kotlin의
Duration
클래스 사용을 모두 삭제하고long
로 대체했습니다. 이 변경사항으로 인해 Java와의 상호 운용성이 향상됩니다.
- Kotlin의
인용 메타데이터
- 이전에
CitationMetadata
에 선언된 모든 필드를Citation
라는 새 클래스로 래핑했습니다. 인용은CitationMetadata
의citations
라는 목록에서 확인할 수 있습니다. 이 변경사항을 통해 플랫폼 전반에서 유형을 더 잘 조정할 수 있습니다.
- 이전에
토큰 수 집계
totalBillableCharacters
필드를 null 허용으로 변경했습니다.
총 청구 가능 문자 수
- 문자가 전송되지 않는 상황을 반영하도록
CountTokensResponse
의totalBillableCharacters
속성을 선택사항으로 변경했습니다.
- 문자가 전송되지 않는 상황을 반영하도록
모델 인스턴스화
- 다른 플랫폼과 일치하도록
requestOptions
매개변수를 매개변수 목록의 끝으로 이동했습니다.
- 다른 플랫폼과 일치하도록
Live API
enum 클래스
ResponseModality
의UNSPECIFIED
값을 삭제했습니다. 대신null
를 사용하세요.LiveGenerationConfig.setResponseModalities
의 이름이LiveGenerationConfig.setResponseModality
로 변경되었습니다.LiveContentResponse.Status
클래스를 삭제하고 대신 상태 필드를LiveContentResponse
의 속성으로 중첩했습니다.LiveContentResponse
클래스를 삭제하고 대신 모델의 응답과 일치하는LiveServerMessage
의 서브클래스를 제공했습니다.ListenableFuture<LiveSession>
대신ListenableFuture<LiveSessionFutures>
을 반환하도록LiveModelFutures.connect
를 변경했습니다.
Java
열거형
enum
클래스와sealed
클래스를 일반 클래스로 대체했습니다. 이 변경사항을 통해 역호환 방식으로 API를 더 유연하게 발전시킬 수 있습니다.BlockThreshold
열거형의 이름을HarmBlockThreshold
로 변경했습니다.HarmBlockThreshold
,HarmProbability
,HarmSeverity
,BlockReason
,FinishReason
열거형에서 값을 삭제했습니다.
Blob 메서드
- 이름에
Blob
가 포함된 모든 메서드의 이름을 바꿔InlineData
를 대신 사용합니다.
- 이름에
안전 설정
method
필드를 null 허용으로 변경했습니다.
기간 클래스
- Kotlin의
Duration
클래스 사용을 모두 삭제하고long
로 대체했습니다. 이 변경사항으로 인해 Java와의 상호 운용성이 향상됩니다.
- Kotlin의
인용 메타데이터
- 이전에
CitationMetadata
에 선언된 모든 필드를Citation
라는 새 클래스로 래핑했습니다. 인용은CitationMetadata
의citations
라는 목록에서 확인할 수 있습니다. 이 변경사항을 통해 플랫폼 전반에서 유형을 더 잘 조정할 수 있습니다.
- 이전에
토큰 수 집계
totalBillableCharacters
필드를 null 허용으로 변경했습니다.
총 청구 가능 문자 수
- 문자가 전송되지 않는 상황을 반영하도록
CountTokensResponse
의totalBillableCharacters
속성을 선택사항으로 변경했습니다.
- 문자가 전송되지 않는 상황을 반영하도록
모델 인스턴스화
- 다른 플랫폼과 일치하도록
requestOptions
매개변수를 매개변수 목록의 끝으로 이동했습니다.
- 다른 플랫폼과 일치하도록
Live API
enum 클래스
ResponseModality
의UNSPECIFIED
값을 삭제했습니다. 대신null
를 사용하세요.LiveGenerationConfig.setResponseModalities
의 이름이LiveGenerationConfig.setResponseModality
로 변경되었습니다.LiveContentResponse.Status
클래스를 삭제하고 대신 상태 필드를LiveContentResponse
의 속성으로 중첩했습니다.LiveContentResponse
클래스를 삭제하고 대신 모델의 응답과 일치하는LiveServerMessage
의 서브클래스를 제공했습니다.ListenableFuture<LiveSession>
대신ListenableFuture<LiveSessionFutures>
을 반환하도록LiveModelFutures.connect
를 변경했습니다.
이제
void
대신 클래스의 인스턴스를 올바르게 반환하도록 다양한 Java 빌더 메서드를 변경했습니다.
Web
열거형
HarmCategory
,BlockThreshold
,HarmProbability
,HarmSeverity
,BlockReason
,FinishReason
열거형에서 값을 삭제했습니다.
차단 이유
PromptFeedback
의blockReason
를 선택사항으로 변경했습니다.
Vertex AI Gemini API 대신 Gemini Developer API를 사용하기 시작하는 경우에만 변경이 필요합니다.
안전 설정
- 지원되지 않는
SafetySetting.method
의 사용을 삭제했습니다.
- 지원되지 않는
인라인 데이터
- 지원되지 않는
InlineDataPart.videoMetadata
의 사용을 삭제했습니다.
- 지원되지 않는
Dart
열거형
HarmCategory
,HarmProbability
,BlockReason
,FinishReason
열거형에서 값이 삭제되었습니다.
데이터 부분
- 다른 플랫폼과 일치하도록
DataPart
의 이름을InlineDataPart
로,static
data
함수의 이름을inlineData
로 바꿨습니다.
- 다른 플랫폼과 일치하도록
요청 옵션
timeout
가 작동하지 않으므로RequestOptions
를 삭제했습니다. 조만간 다시 추가될 예정이지만 다른 플랫폼과 일치하도록GenerativeModel
유형으로 이동됩니다.
중지 시퀀스
GenerationConfig
의stopSequences
매개변수를 선택사항으로 변경하고 기본값을 빈 배열 대신null
로 변경했습니다.
인용
CitationMetadata
에서citationSources
속성의 이름을citations
로 변경했습니다. 다른 플랫폼과 일치하도록CitationSource
유형의 이름을Citation
로 변경했습니다.
불필요한 공개 유형, 메서드, 속성
- 의도치 않게 노출된 다음 유형, 메서드, 속성(
defaultTimeout
,CountTokensResponseFields
,parseCountTokensResponse
,parseEmbedContentResponse
,parseGenerateContentResponse
,parseContent
,BatchEmbedContentsResponse
,ContentEmbedding
,EmbedContentRequest
,EmbedContentResponse
)을 삭제했습니다.
- 의도치 않게 노출된 다음 유형, 메서드, 속성(
토큰 수 집계
- 더 이상 필요하지 않은 추가 필드를
countTokens
함수에서 삭제했습니다.contents
만 필요합니다.
- 더 이상 필요하지 않은 추가 필드를
모델 인스턴스화
- 다른 플랫폼과 일치하도록
systemInstruction
매개변수를 매개변수 목록의 끝으로 이동했습니다.
- 다른 플랫폼과 일치하도록
기능 삽입
- 모델에서 지원되지 않는 임베딩 기능 (
embedContent
및batchEmbedContents
)을 삭제했습니다.
- 모델에서 지원되지 않는 임베딩 기능 (
Unity
'Vertex AI in Firebase'에서 Unity 지원을 받을 수 없습니다.
Unity용 Firebase AI Logic SDK를 시작하는 방법을 알아보세요.
이전과 관련하여 발생할 수 있는 오류
Firebase AI Logic의 GA 버전을 사용하도록 이전할 때 이 이전 가이드에 설명된 대로 필요한 변경사항을 모두 완료하지 않으면 오류가 발생할 수 있습니다.
403 오류: Requests to this API firebasevertexai.googleapis.com ... are blocked.
Requests to this API firebasevertexai.googleapis.com ... are blocked.
오류가 표시되는 403 오류가 발생하면 일반적으로 Firebase 구성 파일 또는 객체의 Firebase API 키에 사용하려는 제품의 허용 목록에 필수 API가 없음을 의미합니다.
앱에서 사용하는 Firebase API 키에 키의 'API 제한사항' 허용 목록에 포함된 필수 API가 모두 있는지 확인합니다. Firebase AI Logic의 경우 Firebase API 키의 허용 목록에 Firebase AI Logic API가 최소한 하나 있어야 합니다. 이 API는 Firebase 콘솔에서 필요한 API를 사용 설정할 때 API 키의 허용 목록에 자동으로 추가되었습니다.
Google Cloud 콘솔의 API 및 서비스 > 사용자 인증 정보 패널에서 모든 API 키를 볼 수 있습니다.
Firebase AI Logic 사용 경험에 관한 의견 보내기