Gemini 모델에 텍스트 전용 프롬프트 또는 멀티모달 프롬프트에서 텍스트를 생성해 달라고 요청할 수 있습니다. Vertex AI in Firebase를 사용하면 앱에서 직접 이 요청을 할 수 있습니다.
멀티모달 프롬프트에는 여러 유형의 입력(예: 이미지, PDF, 일반 텍스트 파일, 오디오, 동영상과 함께 텍스트)이 포함될 수 있습니다.
이 가이드에서는 텍스트 전용 프롬프트와 파일이 포함된 기본 멀티모달 프롬프트에서 텍스트를 생성하는 방법을 보여줍니다.
텍스트 전용 입력의 코드 샘플로 이동 멀티모달 입력의 코드 샘플로 이동
텍스트 작업을 위한 추가 옵션은 다른 가이드를 참고하세요 구조화된 출력 생성 멀티턴 채팅 양방향 스트리밍 텍스트에서 이미지 생성 |
시작하기 전에
아직 완료하지 않았다면 Firebase 프로젝트를 설정하고, 앱을 Firebase에 연결하고, SDK를 추가하고, Vertex AI 서비스를 초기화하고, GenerativeModel
인스턴스를 만드는 방법을 설명하는 시작 가이드를 완료하세요.
프롬프트를 테스트하고 반복하며 생성된 코드 스니펫을 가져오려면 Vertex AI Studio를 사용하는 것이 좋습니다.
문자 메시지 보내기 및 받기
이 샘플을 사용하기 전에 이 가이드의 시작하기 전에 섹션을 완료했는지 확인하세요.
텍스트 전용 입력으로 프롬프트하여 Gemini 모델에 텍스트를 생성하도록 요청할 수 있습니다.
Swift
generateContent()
를 호출하여 텍스트 전용 입력에서 텍스트를 생성할 수 있습니다.
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
generateContent()
를 호출하여 텍스트 전용 입력에서 텍스트를 생성할 수 있습니다.
// 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
generateContent()
를 호출하여 텍스트 전용 입력에서 텍스트를 생성할 수 있습니다.
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
generateContent()
를 호출하여 텍스트 전용 입력에서 텍스트를 생성할 수 있습니다.
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
generateContent()
를 호출하여 텍스트 전용 입력에서 텍스트를 생성할 수 있습니다.
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);
텍스트 및 파일 (멀티모달) 보내기 및 텍스트 수신
이 샘플을 사용하기 전에 이 가이드의 시작하기 전에 섹션을 완료했는지 확인하세요.
텍스트와 파일로 프롬프트하여 Gemini 모델에 텍스트를 생성하도록 요청할 수 있습니다. 각 입력 파일의 mimeType
와 파일 자체를 제공합니다. 이 페이지의 뒷부분에서 입력 파일의 요구사항 및 권장사항을 확인하세요.
다음 예는 인라인 데이터 (base64로 인코딩된 파일)로 제공된 단일 동영상 파일을 분석하여 파일 입력에서 텍스트를 생성하는 방법의 기본사항을 보여줍니다.
Swift
generateContent()
를 호출하여 텍스트 및 동영상 파일의 멀티모달 입력에서 텍스트를 생성할 수 있습니다.
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 the video as `Data` with the appropriate MIME type.
let video = InlineDataPart(data: try Data(contentsOf: videoURL), mimeType: "video/mp4")
// Provide a text prompt to include with the video
let prompt = "What is in the video?"
// To generate text output, call generateContent with the text and video
let response = try await model.generateContent(video, prompt)
print(response.text ?? "No text in response.")
Kotlin
generateContent()
를 호출하여 텍스트 및 동영상 파일의 멀티모달 입력에서 텍스트를 생성할 수 있습니다.
// 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")
val contentResolver = applicationContext.contentResolver
contentResolver.openInputStream(videoUri).use { stream ->
stream?.let {
val bytes = stream.readBytes()
// Provide a prompt that includes the video specified above and text
val prompt = content {
inlineData(bytes, "video/mp4")
text("What is in the video?")
}
// To generate text output, call generateContent with the prompt
val response = generativeModel.generateContent(prompt)
Log.d(TAG, response.text ?: "")
}
}
Java
generateContent()
를 호출하여 텍스트 및 동영상 파일의 멀티모달 입력에서 텍스트를 생성할 수 있습니다.
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);
ContentResolver resolver = getApplicationContext().getContentResolver();
try (InputStream stream = resolver.openInputStream(videoUri)) {
File videoFile = new File(new URI(videoUri.toString()));
int videoSize = (int) videoFile.length();
byte[] videoBytes = new byte[videoSize];
if (stream != null) {
stream.read(videoBytes, 0, videoBytes.length);
stream.close();
// Provide a prompt that includes the video specified above and text
Content prompt = new Content.Builder()
.addInlineData(videoBytes, "video/mp4")
.addText("What is in the video?")
.build();
// To generate text output, call generateContent with the prompt
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);
}
} catch (IOException e) {
e.printStackTrace();
} catch (URISyntaxException e) {
e.printStackTrace();
}
Web
generateContent()
를 호출하여 텍스트 및 동영상 파일의 멀티모달 입력에서 텍스트를 생성할 수 있습니다.
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" });
// Converts a File object to a Part object.
async function fileToGenerativePart(file) {
const base64EncodedDataPromise = new Promise((resolve) => {
const reader = new FileReader();
reader.onloadend = () => resolve(reader.result.split(',')[1]);
reader.readAsDataURL(file);
});
return {
inlineData: { data: await base64EncodedDataPromise, mimeType: file.type },
};
}
async function run() {
// Provide a text prompt to include with the video
const prompt = "What do you see?";
const fileInputEl = document.querySelector("input[type=file]");
const videoPart = await fileToGenerativePart(fileInputEl.files[0]);
// To generate text output, call generateContent with the text and video
const result = await model.generateContent([prompt, videoPart]);
const response = result.response;
const text = response.text();
console.log(text);
}
run();
Dart
generateContent()
를 호출하여 텍스트 및 동영상 파일의 멀티모달 입력에서 텍스트를 생성할 수 있습니다.
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 text prompt to include with the video
final prompt = TextPart("What's in the video?");
// Prepare video for input
final video = await File('video0.mp4').readAsBytes();
// Provide the video as `Data` with the appropriate mimetype
final videoPart = InlineDataPart('video/mp4', video);
// To generate text output, call generateContent with the text and images
final response = await model.generateContent([
Content.multi([prompt, ...videoPart])
]);
print(response.text);
사용 사례 및 앱에 적합한 모델과 원하는 경우 위치를 선택하는 방법을 알아보세요.
대답 스트리밍
이 샘플을 사용하기 전에 이 가이드의 시작하기 전에 섹션을 완료했는지 확인하세요.
모델 생성의 전체 결과를 기다리지 않고 대신 스트리밍을 사용하여 부분 결과를 처리하면 더 빠른 상호작용을 얻을 수 있습니다.
응답을 스트리밍하려면 generateContentStream
를 호출합니다.
입력 이미지 파일의 요구사항 및 권장사항
다음에 관한 자세한 내용은 지원되는 입력 파일 및 Vertex AI Gemini API 요구사항을 참고하세요.
- 요청에 파일을 제공하는 다양한 옵션(인라인 또는 파일의 URL 또는 URI 사용)
- 지원되는 파일 형식
- 지원되는 MIME 유형 및 지정 방법
- 파일 및 멀티모달 요청 요구사항 및 권장사항
또 뭘 할 수 있니?
- 모델에 긴 프롬프트를 보내기 전에 토큰 수를 집계하는 방법을 알아보세요.
- Cloud Storage for Firebase를 설정하여 다중 모드 요청에 대용량 파일을 포함하고 프롬프트에서 파일을 제공하는 더 관리된 솔루션을 사용할 수 있습니다. 파일에는 이미지, PDF, 동영상, 오디오가 포함될 수 있습니다.
- 승인되지 않은 클라이언트의 악용으로부터 Gemini API를 보호하기 위해 Firebase App Check를 설정하는 등 프로덕션 준비를 시작합니다. 또한 프로덕션 체크리스트를 검토하세요.
다른 기능 사용해 보기
- 멀티턴 대화 (채팅)를 빌드합니다.
- 텍스트 전용 프롬프트에서 텍스트를 생성합니다.
- 텍스트 및 멀티모달 프롬프트에서 구조화된 출력 (예: JSON)을 생성합니다.
- 텍스트 프롬프트에서 이미지를 생성합니다.
- 함수 호출을 사용하여 생성형 모델을 외부 시스템 및 정보에 연결합니다.
콘텐츠 생성을 제어하는 방법 알아보기
- 권장사항, 전략, 프롬프트 예시를 포함하여 프롬프트 설계 이해하기
- 온도 및 최대 출력 토큰 (Gemini의 경우) 또는 가로세로 비율 및 사용자 생성 (Imagen의 경우)과 같은 모델 매개변수를 구성합니다.
- 안전 설정을 사용하여 유해하다고 간주될 수 있는 대답을 받을 가능성을 조정합니다.
지원되는 모델 자세히 알아보기
다양한 사용 사례에 사용할 수 있는 모델과 할당량, 가격에 대해 알아보세요.Vertex AI in Firebase 사용 경험에 관한 의견 보내기