Vertex AI in Firebase SDK를 사용하여 앱에서 Gemini API를 호출하면 Gemini 모델에 멀티모달 입력을 기반으로 텍스트를 생성하도록 프롬프트할 수 있습니다. 멀티모달 프롬프트에는 이미지, PDF, 일반 텍스트 파일, 동영상, 오디오와 함께 텍스트와 같은 여러 모달 (또는 입력 유형)이 포함될 수 있습니다.
각 멀티모달 요청에서 항상 다음을 제공해야 합니다.
파일의
mimeType
입니다. 각 입력 파일의 지원되는 MIME 유형을 알아보세요.파일 파일을 인라인 데이터 (이 페이지에 표시됨)로 제공하거나 URL 또는 URI를 사용하여 제공할 수 있습니다.
멀티 모달 프롬프트에서 테스트하고 반복하려면 Vertex AI Studio를 사용하는 것이 좋습니다.
Gemini API를 사용하는 기타 옵션
원하는 경우 Gemini API
의 대체 'Google AI' 버전을 실험해 보세요. Google AI Studio 및 Google AI 클라이언트 SDK를 사용하여 무료 액세스 권한을 얻을 수 있습니다(한도 내에서, 사용 가능한 경우). 이러한 SDK는 모바일 및 웹 앱에서 프로토타입 제작 전용으로 사용해야 합니다.Gemini API의 작동 방식을 숙지한 후 Vertex AI in Firebase SDK로 이전하세요(이 문서). Firebase App Check를 사용하여 API 악용으로부터 보호하고 요청의 대용량 미디어 파일을 지원하는 등 모바일 및 웹 앱에 중요한 여러 추가 기능이 있습니다.
Vertex AI Gemini API 서버 측을 호출할 수도 있습니다(예: Python, Node.js 또는 Go).
Gemini API에 서버 측 Vertex AI SDK, Firebase Genkit 또는 Firebase Extensions를 사용합니다.
시작하기 전에
아직 완료하지 않았다면 Firebase 프로젝트를 설정하고, 앱을 Firebase에 연결하고, SDK를 추가하고, Vertex AI 서비스를 초기화하고, GenerativeModel
인스턴스를 만드는 방법을 설명하는 시작 가이드를 완료하세요.
텍스트 및 단일 이미지에서 텍스트 생성 텍스트 및 여러 이미지에서 텍스트 생성 텍스트 및 동영상에서 텍스트 생성
샘플 미디어 파일
미디어 파일이 없는 경우 다음과 같은 공개적으로 사용 가능한 파일을 사용할 수 있습니다. 이러한 파일은 Firebase 프로젝트에 없는 버킷에 저장되므로 URL에 https://storage.googleapis.com/BUCKET_NAME/PATH/TO/FILE
형식을 사용해야 합니다.
이미지: MIME 유형이
image/jpeg
인https://storage.googleapis.com/cloud-samples-data/generative-ai/image/scones.jpg
입니다. 이 이미지를 보거나 다운로드합니다.PDF: MIME 유형이
application/pdf
인https://storage.googleapis.com/cloud-samples-data/generative-ai/pdf/2403.05530.pdf
이 PDF를 보거나 다운로드하세요.동영상: MIME 유형이
video/mp4
인https://storage.googleapis.com/cloud-samples-data/video/animals.mp4
이 동영상을 시청하거나 오프라인 저장하세요.오디오: MIME 유형이
audio/mp3
인https://storage.googleapis.com/cloud-samples-data/generative-ai/audio/pixel.mp3
입니다. 이 오디오를 듣거나 다운로드합니다.
텍스트 및 단일 이미지에서 텍스트 생성
이 샘플을 사용해 보기 전에 이 가이드의 시작하기 전에 섹션을 완료해야 합니다.
텍스트와 단일 파일 (이 예시에서와 같이 이미지)이 모두 포함된 멀티모달 프롬프트로 Gemini API를 호출할 수 있습니다. 이러한 호출의 경우 프롬프트에서 미디어를 지원하는 모델(예: Gemini 2.0 Flash)을 사용해야 합니다.
입력 파일의 요구사항 및 권장사항을 확인하세요.
응답을 스트리밍할지 (generateContentStream
) 아니면 전체 결과가 생성될 때까지 응답을 기다릴지 (generateContent
) 선택합니다.
모델 생성의 전체 결과를 기다리지 않고 대신 스트리밍을 사용하여 부분 결과를 처리하면 더 빠른 상호작용을 얻을 수 있습니다.
이 예에서는 generateContentStream()
를 사용하여 텍스트와 단일 이미지가 포함된 멀티모달 프롬프트 요청에서 생성된 텍스트를 스트리밍하는 방법을 보여줍니다.
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")
guard let image = UIImage(systemName: "bicycle") else { fatalError() }
// Provide a text prompt to include with the image
let prompt = "What's in this picture?"
// To stream generated text output, call generateContentStream and pass in the prompt
let contentStream = try model.generateContentStream(image, prompt)
for try await chunk in contentStream {
if let text = chunk.text {
print(text)
}
}
또는 스트리밍 대신 전체 결과를 기다릴 수 있습니다. 결과는 모델이 전체 생성 프로세스를 완료한 후에만 반환됩니다.
이 예에서는 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")
guard let image = UIImage(systemName: "bicycle") else { fatalError() }
// Provide a text prompt to include with the image
let prompt = "What's in this picture?"
// To generate text output, call generateContent and pass in the prompt
let response = try await model.generateContent(image, prompt)
print(response.text ?? "No text in response.")
사용 사례 및 앱에 적합한 모델과 원하는 경우 위치를 선택하는 방법을 알아보세요.
텍스트 및 여러 이미지에서 텍스트 생성
이 샘플을 사용해 보기 전에 이 가이드의 시작하기 전에 섹션을 완료해야 합니다.
텍스트와 여러 파일 (이 예시에서와 같이 이미지)이 모두 포함된 멀티모달 프롬프트로 Gemini API를 호출할 수 있습니다. 이러한 호출의 경우 프롬프트에서 미디어를 지원하는 모델(예: Gemini 2.0 Flash)을 사용해야 합니다.
입력 파일의 요구사항 및 권장사항을 확인하세요.
응답을 스트리밍할지 (generateContentStream
) 아니면 전체 결과가 생성될 때까지 응답을 기다릴지 (generateContent
) 선택합니다.
모델 생성의 전체 결과를 기다리지 않고 대신 스트리밍을 사용하여 부분 결과를 처리하면 더 빠른 상호작용을 얻을 수 있습니다.
이 예에서는 generateContentStream()
를 사용하여 텍스트와 여러 이미지가 포함된 멀티모달 프롬프트 요청에서 생성된 텍스트를 스트리밍하는 방법을 보여줍니다.
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")
guard let image1 = UIImage(systemName: "car") else { fatalError() }
guard let image2 = UIImage(systemName: "car.2") else { fatalError() }
// Provide a text prompt to include with the images
let prompt = "What's different between these pictures?"
// To stream generated text output, call generateContentStream and pass in the prompt
let contentStream = try model.generateContentStream(image1, image2, prompt)
for try await chunk in contentStream {
if let text = chunk.text {
print(text)
}
}
또는 스트리밍 대신 전체 결과를 기다릴 수도 있습니다. 결과는 모델이 전체 생성 프로세스를 완료한 후에만 반환됩니다.
이 예에서는 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")
guard let image1 = UIImage(systemName: "car") else { fatalError() }
guard let image2 = UIImage(systemName: "car.2") else { fatalError() }
// Provide a text prompt to include with the images
let prompt = "What's different between these pictures?"
// To generate text output, call generateContent and pass in the prompt
let response = try await model.generateContent(image1, image2, prompt)
print(response.text ?? "No text in response.")
사용 사례 및 앱에 적합한 모델과 원하는 경우 위치를 선택하는 방법을 알아보세요.
텍스트 및 동영상에서 텍스트 생성
이 샘플을 사용해 보기 전에 이 가이드의 시작하기 전에 섹션을 완료해야 합니다.
텍스트와 동영상 파일이 모두 포함된 멀티모달 프롬프트로 Gemini API를 호출할 수 있습니다(이 예 참고). 이러한 호출의 경우 프롬프트에서 미디어를 지원하는 모델(예: Gemini 2.0 Flash)을 사용해야 합니다.
입력 파일의 요구사항 및 권장사항을 확인하세요.
응답을 스트리밍할지 (generateContentStream
) 아니면 전체 결과가 생성될 때까지 응답을 기다릴지 (generateContent
) 선택합니다.
모델 생성의 전체 결과를 기다리지 않고 대신 스트리밍을 사용하여 부분 결과를 처리하면 더 빠른 상호작용을 얻을 수 있습니다.
이 예에서는 generateContentStream()
를 사용하여 텍스트와 단일 동영상이 포함된 멀티모달 프롬프트 요청에서 생성된 텍스트를 스트리밍하는 방법을 보여줍니다.
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 stream generated text output, call generateContentStream with the text and video
let contentStream = try model.generateContentStream(video, prompt)
for try await chunk in contentStream {
if let text = chunk.text {
print(text)
}
}
또는 스트리밍 대신 전체 결과를 기다릴 수 있습니다. 결과는 모델이 전체 생성 프로세스를 완료한 후에만 반환됩니다.
이 예에서는 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.")
사용 사례 및 앱에 적합한 모델과 원하는 경우 위치를 선택하는 방법을 알아보세요.
입력 파일 요구사항 및 권장사항
지원되는 입력 파일 및 Vertex AI Gemini API 요구사항에서 다음에 관해 알아보세요.
- 요청에 파일을 제공하는 다양한 옵션
- 지원되는 파일 형식
- 지원되는 MIME 유형 및 지정 방법
- 파일 및 멀티모달 요청 요구사항 및 권장사항
또 뭘 할 수 있니?
- 모델에 긴 프롬프트를 보내기 전에 토큰 수를 집계하는 방법을 알아보세요.
- Cloud Storage for Firebase를 설정하여 다중 모드 요청에 대용량 파일을 포함하고 프롬프트에서 파일을 제공하는 더 관리된 솔루션을 사용할 수 있습니다. 파일에는 이미지, PDF, 동영상, 오디오가 포함될 수 있습니다.
- 승인되지 않은 클라이언트의 악용으로부터 Gemini API를 보호하기 위해 Firebase App Check를 설정하는 등 프로덕션 준비를 시작합니다. 또한 프로덕션 체크리스트를 검토하세요.
다른 기능 사용해 보기
- 멀티턴 대화 (채팅)를 빌드합니다.
- 텍스트 전용 프롬프트에서 텍스트를 생성합니다.
- 텍스트 및 멀티모달 프롬프트에서 구조화된 출력 (예: JSON)을 생성합니다.
- 텍스트 프롬프트에서 이미지를 생성합니다.
- 함수 호출을 사용하여 생성형 모델을 외부 시스템 및 정보에 연결합니다.
콘텐츠 생성을 제어하는 방법 알아보기
- 권장사항, 전략, 프롬프트 예시를 포함하여 프롬프트 설계 이해하기
- 온도 및 최대 출력 토큰 (Gemini의 경우) 또는 가로세로 비율 및 사용자 생성 (Imagen의 경우)과 같은 모델 매개변수를 구성합니다.
- 안전 설정을 사용하여 유해하다고 간주될 수 있는 대답이 표시될 가능성을 조정합니다.
지원되는 모델 자세히 알아보기
다양한 사용 사례에 사용할 수 있는 모델과 할당량, 가격에 대해 알아보세요.Vertex AI in Firebase 사용 경험에 관한 의견 보내기