Firebase의 Vertex AI SDK를 사용하여 Gemini API 시작하기

이 가이드에서는 선택한 플랫폼의 Vertex AI in Firebase SDK를 사용하여 앱에서 직접 Vertex AI Gemini API를 호출하는 방법을 설명합니다.

이 가이드를 사용하여 Vertex AI in Firebase SDK를 사용하여 Imagen 모델에 액세스하는 작업도 시작할 수 있습니다.

기본 요건

Swift

이 가이드에서는 사용자가 Xcode를 사용하여 Apple 플랫폼(예: iOS)용 앱을 개발하는 데 익숙하다고 가정합니다.

  • 개발 환경과 Apple 플랫폼 앱이 다음 요구사항을 충족하는지 확인합니다.

    • Xcode 16.2 이상
    • 앱이 iOS 15 이상 또는 macOS 12 이상을 타겟팅함
  • (선택사항) 샘플 앱을 확인합니다.

    빠른 시작 앱 다운로드

    SDK를 빠르게 사용해 보거나 다양한 사용 사례의 전체 구현을 확인하거나 자체 Apple 플랫폼 앱이 없는 경우 샘플 앱을 사용할 수 있습니다. 샘플 앱을 사용하려면 Firebase 프로젝트에 연결해야 합니다.

Kotlin

이 가이드에서는 Android 스튜디오를 사용하여 Android용 앱을 개발하는 데 익숙하다고 가정합니다.

  • 개발 환경과 Android 앱이 다음 요구사항을 충족하는지 확인합니다.

    • Android 스튜디오 (최신 버전)
    • 앱이 API 수준 21 이상을 타겟팅하는 경우
  • (선택사항) 샘플 앱을 확인합니다.

    샘플 앱 다운로드

    SDK를 빠르게 사용해 보거나 다양한 사용 사례의 전체 구현을 확인하거나 자체 Android 앱이 없는 경우 샘플 앱을 사용할 수 있습니다. 샘플 앱을 사용하려면 Firebase 프로젝트에 연결해야 합니다.

Java

이 가이드에서는 Android 스튜디오를 사용하여 Android용 앱을 개발하는 데 익숙하다고 가정합니다.

  • 개발 환경과 Android 앱이 다음 요구사항을 충족하는지 확인합니다.

    • Android 스튜디오 (최신 버전)
    • 앱이 API 수준 21 이상을 타겟팅하는 경우
  • (선택사항) 샘플 앱을 확인합니다.

    샘플 앱 다운로드

    SDK를 빠르게 사용해 보거나 다양한 사용 사례의 전체 구현을 확인하거나 자체 Android 앱이 없는 경우 샘플 앱을 사용할 수 있습니다. 샘플 앱을 사용하려면 Firebase 프로젝트에 연결해야 합니다.

Web

이 가이드에서는 독자가 JavaScript를 사용하여 웹 앱을 개발하는 데 익숙하다고 가정합니다. 이 가이드는 프레임워크와 무관합니다.

  • 개발 환경과 웹 앱이 다음 요구사항을 충족하는지 확인합니다.

    • (선택사항) Node.js
    • 최신 웹브라우저
  • (선택사항) 샘플 앱을 확인합니다.

    샘플 앱 다운로드

    SDK를 빠르게 사용해 보거나 다양한 사용 사례의 전체 구현을 확인하거나 자체 웹 앱이 없는 경우 샘플 앱을 사용할 수 있습니다. 샘플 앱을 사용하려면 Firebase 프로젝트에 연결해야 합니다.

Dart

이 가이드에서는 독자가 Flutter로 앱을 개발하는 데 익숙하다고 가정합니다.

  • 개발 환경과 Flutter 앱이 다음 요구사항을 충족하는지 확인합니다.

    • Dart 3.2.0 이상
  • (선택사항) 샘플 앱을 확인합니다.

    샘플 앱 다운로드

    SDK를 빠르게 사용해 보거나 다양한 사용 사례의 전체 구현을 확인하거나 자체 Flutter 앱이 없는 경우 샘플 앱을 사용할 수 있습니다. 샘플 앱을 사용하려면 Firebase 프로젝트에 연결해야 합니다.

1단계: Firebase 프로젝트 설정 및 앱을 Firebase에 연결

Firebase 프로젝트와 Firebase에 연결된 앱이 이미 있는 경우

  1. Firebase 콘솔에서 Vertex AI 페이지로 이동합니다.

  2. Vertex AI in Firebase 카드를 클릭하여 다음 작업을 완료하는 데 도움이 되는 워크플로를 실행합니다.

  3. 이 가이드의 다음 단계로 진행하여 앱에 SDK를 추가합니다.

아직 Firebase 프로젝트와 Firebase에 연결된 앱이 없는 경우


2단계: SDK 추가

Firebase 프로젝트가 설정되고 앱이 Firebase에 연결되면(이전 단계 참고) 이제 앱에 Vertex AI in Firebase SDK를 추가할 수 있습니다.

Swift

Swift Package Manager를 사용해 Firebase 종속 항목을 설치하고 관리하세요.

Vertex AI in Firebase 라이브러리는 GeminiImagen 모델과 상호작용하는 API에 대한 액세스를 제공합니다. 이 라이브러리는 Apple 플랫폼용 Firebase SDK (firebase-ios-sdk)의 일부로 포함되어 있습니다.

  1. 앱 프로젝트를 연 상태로 Xcode에서 File(파일) > Add Packages(패키지 추가)로 이동합니다.

  2. 메시지가 표시되면 Firebase Apple 플랫폼 SDK 저장소를 추가합니다.

    https://github.com/firebase/firebase-ios-sdk
    
  3. 최신 SDK 버전을 선택합니다.

  4. FirebaseVertexAI 라이브러리를 선택합니다.

완료되면 Xcode가 백그라운드에서 자동으로 종속 항목을 확인하고 다운로드하기 시작합니다.

Kotlin

Android용 Vertex AI in Firebase SDK (firebase-vertexai)는 GeminiImagen 모델과 상호작용하는 API에 대한 액세스를 제공합니다.

모듈 (앱 수준) Gradle 파일(예: <project>/<app-module>/build.gradle.kts)에서 Android용 Vertex AI in Firebase 라이브러리의 종속 항목을 추가합니다. 라이브러리 버전 관리 제어에는 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 Vertex AI in Firebase library
  // When using the BoM, you don't specify versions in Firebase library dependencies
  implementation("com.google.firebase:firebase-vertexai")
}

Firebase Android BoM을 사용하면 앱에서 항상 호환되는 Firebase Android 라이브러리 버전을 사용합니다.

Java

Android용 Vertex AI in Firebase SDK (firebase-vertexai)는 GeminiImagen 모델과 상호작용하는 API에 대한 액세스를 제공합니다.

모듈 (앱 수준) Gradle 파일(예: <project>/<app-module>/build.gradle.kts)에서 Android용 Vertex AI in Firebase 라이브러리의 종속 항목을 추가합니다. 라이브러리 버전 관리 제어에는 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 Vertex AI in Firebase library
  // When using the BoM, you don't specify versions in Firebase library dependencies
  implementation("com.google.firebase:firebase-vertexai")

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

Vertex AI in Firebase 라이브러리는 GeminiImagen 모델과 상호작용하는 API에 대한 액세스를 제공합니다. 이 라이브러리는 웹용 Firebase JavaScript SDK의 일부로 포함되어 있습니다.

  1. npm을 사용하여 웹용 Firebase JS SDK를 설치합니다.

    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

Flutter용 Vertex AI in Firebase 플러그인 (firebase_vertexai)은 GeminiImagen 모델과 상호작용하는 API에 대한 액세스를 제공합니다.

  1. Flutter 프로젝트 디렉터리에서 다음 명령어를 실행하여 core 플러그인과 Vertex AI in Firebase 플러그인을 설치합니다.

    flutter pub add firebase_core && flutter pub add firebase_vertexai
    
  2. lib/main.dart 파일에서 Firebase 핵심 플러그인, Vertex AI in Firebase 플러그인, 앞에서 생성한 구성 파일을 가져옵니다.

    import 'package:firebase_core/firebase_core.dart';
    import 'package:firebase_vertexai/firebase_vertexai.dart';
    import 'firebase_options.dart';
    
  3. 또한 lib/main.dart 파일에서 구성 파일로 내보낸 DefaultFirebaseOptions 객체를 사용하여 Firebase를 초기화합니다.

    await Firebase.initializeApp(
      options: DefaultFirebaseOptions.currentPlatform,
    );
    
  4. Flutter 애플리케이션을 다시 빌드합니다.

    flutter run
    

3단계: Vertex AI 서비스를 초기화하고 GenerativeModel 인스턴스 만들기

API를 호출하고 Gemini 모델에 프롬프트를 보내려면 먼저 Vertex AI 서비스를 초기화하고 GenerativeModel 인스턴스를 만들어야 합니다.

Swift

import FirebaseVertexAI

// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()

// Create a `GenerativeModel` instance with a model that supports your use case
let model = vertex.generativeModel(modelName: "gemini-2.0-flash")

Kotlin

Kotlin의 경우 이 SDK의 메서드는 정지 함수이므로 코루틴 범위에서 호출해야 합니다.
// Initialize the Vertex AI service and create a `GenerativeModel` instance
// Specify a model that supports your use case
val generativeModel = Firebase.vertexAI.generativeModel("gemini-2.0-flash")

Java

Java의 경우 이 SDK의 스트리밍 메서드는 Reactive Streams 라이브러리Publisher 유형을 반환합니다.
// Initialize the Vertex AI service and create a `GenerativeModel` instance
// Specify a model that supports your use case
GenerativeModel gm = FirebaseVertexAI.getInstance()
        .generativeModel("gemini-2.0-flash");

// Use the GenerativeModelFutures Java compatibility layer which offers
// support for ListenableFuture and Publisher APIs
GenerativeModelFutures model = GenerativeModelFutures.from(gm);

Web

import { initializeApp } from "firebase/app";
import { getVertexAI, getGenerativeModel } from "firebase/vertexai";

// 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 Vertex AI service
const vertexAI = getVertexAI(firebaseApp);

// Create a `GenerativeModel` instance with a model that supports your use case
const model = getGenerativeModel(vertexAI, { model: "gemini-2.0-flash" });

Dart

import 'package:firebase_vertexai/firebase_vertexai.dart';
import 'package:firebase_core/firebase_core.dart';
import 'firebase_options.dart';

// Initialize FirebaseApp
await Firebase.initializeApp(
  options: DefaultFirebaseOptions.currentPlatform,
);

// Initialize the Vertex AI service and create a `GenerativeModel` instance
// Specify a model that supports your use case
final model =
      FirebaseVertexAI.instance.generativeModel(model: 'gemini-2.0-flash');

이 시작 가이드를 완료한 후 사용 사례 및 앱에 적합한 모델과 (선택사항) 위치를 선택하는 방법을 알아보세요.

4단계: 모델에 프롬프트 요청 전송

이제 앱을 Firebase에 연결하고, SDK를 추가하고, Vertex AI 서비스와 생성형 모델을 초기화했으므로 Gemini 모델에 프롬프트 요청을 전송할 수 있습니다.

generateContent()를 사용하여 텍스트 전용 프롬프트 요청에서 텍스트를 생성할 수 있습니다.

Swift

import FirebaseVertexAI

// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()

// Create a `GenerativeModel` instance with a model that supports your use case
let model = vertex.generativeModel(modelName: "gemini-2.0-flash")

// Provide a prompt that contains text
let prompt = "Write a story about a magic backpack."

// To generate text output, call generateContent with the text input
let response = try await model.generateContent(prompt)
print(response.text ?? "No text in response.")

Kotlin

Kotlin의 경우 이 SDK의 메서드는 정지 함수이므로 코루틴 범위에서 호출해야 합니다.
// Initialize the Vertex AI service and create a `GenerativeModel` instance
// Specify a model that supports your use case
val generativeModel = Firebase.vertexAI.generativeModel("gemini-2.0-flash")

// Provide a prompt that contains text
val prompt = "Write a story about a magic backpack."

// To generate text output, call generateContent with the text input
val response = generativeModel.generateContent(prompt)
print(response.text)

Java

Java의 경우 이 SDK의 메서드는 ListenableFuture를 반환합니다.
// Initialize the Vertex AI service and create a `GenerativeModel` instance
// Specify a model that supports your use case
GenerativeModel gm = FirebaseVertexAI.getInstance()
        .generativeModel("gemini-2.0-flash");
GenerativeModelFutures model = GenerativeModelFutures.from(gm);

// Provide a prompt that contains text
Content prompt = new Content.Builder()
    .addText("Write a story about a magic backpack.")
    .build();

// To generate text output, call generateContent with the text input
ListenableFuture<GenerateContentResponse> response = model.generateContent(prompt);
Futures.addCallback(response, new FutureCallback<GenerateContentResponse>() {
    @Override
    public void onSuccess(GenerateContentResponse result) {
        String resultText = result.getText();
        System.out.println(resultText);
    }

    @Override
    public void onFailure(Throwable t) {
        t.printStackTrace();
    }
}, executor);

Web

import { initializeApp } from "firebase/app";
import { getVertexAI, getGenerativeModel } from "firebase/vertexai";

// 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 Vertex AI service
const vertexAI = getVertexAI(firebaseApp);

// Create a `GenerativeModel` instance with a model that supports your use case
const model = getGenerativeModel(vertexAI, { model: "gemini-2.0-flash" });

// Wrap in an async function so you can use await
async function run() {
  // Provide a prompt that contains text
  const prompt = "Write a story about a magic backpack."

  // To generate text output, call generateContent with the text input
  const result = await model.generateContent(prompt);

  const response = result.response;
  const text = response.text();
  console.log(text);
}

run();

Dart

import 'package:firebase_vertexai/firebase_vertexai.dart';
import 'package:firebase_core/firebase_core.dart';
import 'firebase_options.dart';

await Firebase.initializeApp(
  options: DefaultFirebaseOptions.currentPlatform,
);

// Initialize the Vertex AI service and create a `GenerativeModel` instance
// Specify a model that supports your use case
final model =
      FirebaseVertexAI.instance.generativeModel(model: 'gemini-2.0-flash');

// Provide a prompt that contains text
final prompt = [Content.text('Write a story about a magic backpack.')];

// To generate text output, call generateContent with the text input
final response = await model.generateContent(prompt);
print(response.text);

또 뭘 할 수 있니?

지원되는 모델 자세히 알아보기

다양한 사용 사례에 사용할 수 있는 모델할당량, 가격에 대해 알아보세요.

다른 기능 사용해 보기

콘텐츠 생성을 제어하는 방법 알아보기

Vertex AI Studio를 사용하여 프롬프트 및 모델 구성을 실험할 수도 있습니다.


Vertex AI in Firebase 사용 경험에 관한 의견 보내기