Vertex AI in Firebase SDK를 사용하여 앱에서 Gemini API를 호출하면 Gemini 모델에 멀티모달 입력을 기반으로 텍스트를 생성하도록 프롬프트할 수 있습니다. 멀티모달 프롬프트에는 이미지, PDF, 일반 텍스트 파일, 동영상, 오디오와 함께 텍스트와 같은 여러 모달 (또는 입력 유형)이 포함될 수 있습니다.
각 멀티모달 요청에서 항상 다음을 제공해야 합니다.
파일의
mimeType
입니다. 각 입력 파일의 지원되는 MIME 유형에 대해 알아보세요.파일 파일을 인라인 데이터로 제공하거나 (이 페이지에 표시된 대로) URL 또는 URI를 사용할 수 있습니다.
멀티 모달 프롬프트에서 테스트하고 반복하려면 Vertex AI Studio를 사용하는 것이 좋습니다.
시작하기 전에
아직 완료하지 않았다면 Vertex AI in Firebase SDK 시작 가이드를 완료하세요. 다음 작업을 모두 완료했는지 확인합니다.
Blaze 요금제 사용 및 필요한 API 사용 설정을 포함하여 새 Firebase 프로젝트 또는 기존 Firebase 프로젝트를 설정합니다.
앱을 등록하고 Firebase 구성을 앱에 추가하는 등 앱을 Firebase에 연결합니다.
SDK를 추가하고 앱에서 Vertex AI 서비스와 생성형 모델을 초기화합니다.
앱을 Firebase에 연결하고, SDK를 추가하고, Vertex AI 서비스와 생성형 모델을 초기화한 후에는 Gemini API를 호출할 수 있습니다.
텍스트 및 단일 이미지에서 텍스트 생성 텍스트 및 여러 이미지에서 텍스트 생성 텍스트 및 동영상에서 텍스트 생성
샘플 미디어 파일
아직 미디어 파일이 없는 경우 다음과 같은 공개적으로 사용 가능한 파일을 사용할 수 있습니다.
이미지: MIME 유형이
image/jpeg
인gs://cloud-samples-data/generative-ai/image/scones.jpg
입니다.
이 이미지를 보거나 다운로드합니다.PDF: MIME 유형이
application/pdf
인gs://cloud-samples-data/generative-ai/pdf/2403.05530.pdf
입니다.
이 PDF를 보거나 다운로드합니다.동영상: MIME 유형이
video/mp4
인gs://cloud-samples-data/video/animals.mp4
이 동영상을 시청하거나 오프라인 저장합니다.오디오: MIME 유형이
audio/mp3
인gs://cloud-samples-data/generative-ai/audio/pixel.mp3
입니다.
이 오디오를 듣거나 다운로드합니다.
텍스트 및 단일 이미지에서 텍스트 생성
이 샘플을 사용해 보기 전에 이 가이드의 시작하기 전에 섹션을 완료해야 합니다.
텍스트와 단일 파일 (이 예시에서와 같이 이미지)이 모두 포함된 멀티모달 프롬프트로 Gemini API를 호출할 수 있습니다. 이러한 호출의 경우 프롬프트에서 미디어를 지원하는 모델(예: Gemini 1.5 Flash)을 사용해야 합니다.
입력 파일의 요구사항 및 권장사항을 검토하세요.
응답을 스트리밍할지 (generateContentStream
) 아니면 전체 결과가 생성될 때까지 응답을 기다릴지 (generateContent
) 선택합니다.
스트리밍
모델 생성의 전체 결과를 기다리지 않고 대신 스트리밍을 사용하여 부분 결과를 처리하면 더 빠른 상호작용을 얻을 수 있습니다.
이 예에서는 generateContentStream()
를 사용하여 텍스트와 단일 이미지가 포함된 멀티모달 프롬프트 요청에서 생성된 텍스트를 스트리밍하는 방법을 보여줍니다.
import FirebaseVertexAI
// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()
// Initialize the generative model with a model that supports your use case
// Gemini 1.5 models are versatile and can be used with all API capabilities
let model = vertex.generativeModel(modelName: "gemini-1.5-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()
// Initialize the generative model with a model that supports your use case
// Gemini 1.5 models are versatile and can be used with all API capabilities
let model = vertex.generativeModel(modelName: "gemini-1.5-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 모델과 선택적으로 위치를 선택하는 방법을 알아보세요.
텍스트 및 여러 이미지에서 텍스트 생성
이 샘플을 사용하기 전에 이 가이드의 시작하기 전에 섹션을 완료해야 합니다.
텍스트와 여러 파일 (이 예시에서와 같이 이미지)이 모두 포함된 멀티모달 프롬프트로 Gemini API를 호출할 수 있습니다. 이러한 호출의 경우 프롬프트에서 미디어를 지원하는 모델(예: Gemini 1.5 Flash)을 사용해야 합니다.
입력 파일의 요구사항 및 권장사항을 검토하세요.
응답을 스트리밍할지 (generateContentStream
) 아니면 전체 결과가 생성될 때까지 응답을 기다릴지 (generateContent
) 선택합니다.
스트리밍
모델 생성의 전체 결과를 기다리지 않고 대신 스트리밍을 사용하여 부분 결과를 처리하면 더 빠른 상호작용을 얻을 수 있습니다.
이 예에서는 generateContentStream()
를 사용하여 텍스트와 여러 이미지가 포함된 멀티모달 프롬프트 요청에서 생성된 텍스트를 스트리밍하는 방법을 보여줍니다.
import FirebaseVertexAI
// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()
// Initialize the generative model with a model that supports your use case
// Gemini 1.5 models are versatile and can be used with all API capabilities
let model = vertex.generativeModel(modelName: "gemini-1.5-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()
// Initialize the generative model with a model that supports your use case
// Gemini 1.5 models are versatile and can be used with all API capabilities
let model = vertex.generativeModel(modelName: "gemini-1.5-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 모델과 선택적으로 위치를 선택하는 방법을 알아보세요.
텍스트 및 동영상에서 텍스트 생성
이 샘플을 사용해 보기 전에 이 가이드의 시작하기 전에 섹션을 완료해야 합니다.
텍스트와 동영상 파일이 모두 포함된 멀티모달 프롬프트로 Gemini API를 호출할 수 있습니다(이 예 참고). 이러한 호출의 경우 메시지에서 미디어를 지원하는 모델 (예: Gemini 1.5 Flash)을 사용해야 합니다.
입력 파일의 요구사항 및 권장사항을 검토하세요.
응답을 스트리밍할지 (generateContentStream
) 아니면 전체 결과가 생성될 때까지 응답을 기다릴지 (generateContent
) 선택합니다.
스트리밍
모델 생성의 전체 결과를 기다리지 않고 대신 스트리밍을 사용하여 부분 결과를 처리하면 더 빠른 상호작용을 얻을 수 있습니다.
이 예에서는 generateContentStream()
를 사용하여 텍스트와 단일 동영상이 포함된 멀티모달 프롬프트 요청에서 생성된 텍스트를 스트리밍하는 방법을 보여줍니다.
import FirebaseVertexAI
// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()
// Initialize the generative model with a model that supports your use case
// Gemini 1.5 models are versatile and can be used with all API capabilities
let model = vertex.generativeModel(modelName: "gemini-1.5-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()
// Initialize the generative model with a model that supports your use case
// Gemini 1.5 models are versatile and can be used with all API capabilities
let model = vertex.generativeModel(modelName: "gemini-1.5-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.")
사용 사례 및 앱에 적합한 Gemini 모델과 선택적으로 위치를 선택하는 방법을 알아보세요.
입력 파일 요구사항 및 권장사항
지원되는 입력 파일 및 Vertex AI Gemini API 요구사항에서 다음에 관해 자세히 알아보세요.
- 요청에 파일을 제공하는 다양한 옵션
- 지원되는 파일 형식
- 지원되는 MIME 유형 및 지정 방법
- 파일 및 멀티모달 요청 요구사항 및 권장사항
또 뭘 할 수 있니?
- 모델에 긴 프롬프트를 보내기 전에 토큰 수를 집계하는 방법을 알아보세요.
- Cloud Storage for Firebase를 설정하여 다중 모드 요청에 대용량 파일을 포함하고 프롬프트에서 파일을 제공하는 더 관리된 솔루션을 사용할 수 있습니다. 파일에는 이미지, PDF, 동영상, 오디오가 포함될 수 있습니다.
- 승인되지 않은 클라이언트의 악용으로부터 Gemini API를 보호하기 위한 Firebase App Check 설정을 비롯한 프로덕션 준비를 시작합니다.
Gemini API의 다른 기능 사용해 보기
- 멀티턴 대화 (채팅)를 빌드합니다.
- 텍스트 전용 프롬프트에서 텍스트를 생성합니다.
- 텍스트 및 멀티모달 프롬프트에서 구조화된 출력 (예: JSON)을 생성합니다.
- 함수 호출을 사용하여 생성형 모델을 외부 시스템 및 정보에 연결합니다.
콘텐츠 생성을 제어하는 방법 알아보기
- 권장사항, 전략, 프롬프트 예시를 비롯한 프롬프트 설계 이해
- 온도 및 최대 출력 토큰과 같은 모델 매개변수를 구성합니다.
- 안전 설정을 사용하여 유해하다고 간주될 수 있는 대답이 표시될 가능성을 조정합니다.
Gemini 모델 자세히 알아보기
다양한 사용 사례에 사용할 수 있는 모델과 할당량 및 가격에 대해 알아보세요.Vertex AI in Firebase 사용 경험에 관한 의견 보내기