Ao chamar a Gemini API do seu app usando um SDK da Vertex AI in Firebase, é possível solicitar que o modelo Gemini gere texto com base em uma entrada multimodal. Os comandos multimodais podem incluir várias modalidades (ou tipos de entrada), como texto com imagens, PDFs, arquivos de texto simples, vídeo e áudio.
Em cada solicitação multimodal, é necessário fornecer o seguinte:
O
mimeType
do arquivo. Saiba mais sobre os tipos MIME aceitos para cada arquivo de entrada.O arquivo. Você pode fornecer o arquivo como dados inline (como mostrado nesta página) ou usando o URL ou URI dele.
Para testar e iterar comandos multimodais, recomendamos usar Vertex AI Studio.
Antes de começar
Conclua o guia para iniciantes dos SDKs do Vertex AI in Firebase, se ainda não tiver feito isso. Verifique se você fez o seguinte:
Configurou um projeto novo ou existente do Firebase, incluindo o uso do plano de preços Blaze e a ativação das APIs necessárias.
Conectou seu app ao Firebase, incluindo o registro e a adição da configuração do Firebase.
Adicione o SDK e inicialize o serviço do Vertex AI e o modelo generativo no seu app.
Depois de conectar seu app ao Firebase, adicionar o SDK e inicializar o serviço Vertex AI e o modelo generativo, você poderá chamar o Gemini API.
Gerar texto com base em texto e uma única imagem Gerar texto com base em texto e várias imagens Gerar texto com base em texto e um vídeo
Exemplos de arquivos de mídia
Se você ainda não tiver arquivos de mídia, use os seguintes arquivos disponíveis publicamente:
Imagem:
gs://cloud-samples-data/generative-ai/image/scones.jpg
com um tipo MIME deimage/jpeg
.
Acesse ou faça o download desta imagem.PDF:
gs://cloud-samples-data/generative-ai/pdf/2403.05530.pdf
com um tipo MIME deapplication/pdf
.
Acesse ou faça o download deste PDF.Vídeo:
gs://cloud-samples-data/video/animals.mp4
com um tipo MIME devideo/mp4
.
Assista ou faça o download deste vídeo.Áudio:
gs://cloud-samples-data/generative-ai/audio/pixel.mp3
com um tipo MIME deaudio/mp3
.
Ouça ou faça o download deste áudio.
Gerar texto com base em texto e uma única imagem
Confira se você concluiu a seção Antes de começar deste guia antes de testar este exemplo.
É possível chamar Gemini API com comandos multimodais que incluem texto e um único arquivo (como uma imagem, conforme mostrado neste exemplo). Para essas chamadas, é necessário usar um modelo compatível com mídia em comandos (como o Gemini 1.5 Flash).
Leia os requisitos e recomendações para arquivos de entrada.
Escolha se você quer transmitir a resposta (generateContentStream
) ou esperar
pela resposta até que todo o resultado seja gerado (generateContent
).
Streaming
É possível ter interações mais rápidas ao não esperar o resultado completo da geração do modelo e usar o streaming para processar resultados parciais.
Este exemplo mostra como usar
generateContentStream()
para transmitir o texto gerado de uma solicitação de comando multimodal que inclui texto
e uma única imagem:
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)
}
}
Sem streaming
Como alternativa, aguarde o resultado completo em vez de streaming. O resultado só é retornado depois que o modelo conclui todo o processo de geração.
Este exemplo mostra como usar
generateContent()
para gerar texto a partir de uma solicitação de comando multimodal que inclui texto e uma
única imagem:
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.")
Saiba como escolher um modelo do Gemini e, opcionalmente, um local adequado para seu caso de uso e app.
Gerar texto com base em texto e várias imagens
Confira se você concluiu a seção Antes de começar deste guia antes de testar este exemplo.
É possível chamar Gemini API com comandos multimodais que incluem texto e vários arquivos (como imagens, conforme mostrado neste exemplo). Para essas chamadas, é necessário usar um modelo compatível com mídia em comandos (como o Gemini 1.5 Flash).
Leia os requisitos e recomendações para arquivos de entrada.
Escolha se você quer transmitir a resposta (generateContentStream
) ou esperar
pela resposta até que todo o resultado seja gerado (generateContent
).
Streaming
É possível ter interações mais rápidas ao não esperar o resultado completo da geração do modelo e usar o streaming para processar resultados parciais.
Este exemplo mostra como usar
generateContentStream()
para transmitir o texto gerado de uma solicitação de comando multimodal que inclui texto
e várias imagens:
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)
}
}
Sem streaming
Como alternativa, aguarde o resultado completo em vez de fazer streaming. O resultado só é retornado depois que o modelo conclui todo o processo de geração.
Este exemplo mostra como usar
generateContent()
para gerar texto a partir de uma solicitação de comando multimodal que inclui texto e
várias imagens:
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.")
Saiba como escolher um modelo do Gemini e, opcionalmente, um local adequado para seu caso de uso e app.
Gerar texto com base em texto e vídeo
Confira se você concluiu a seção Antes de começar deste guia antes de testar este exemplo.
É possível chamar Gemini API com comandos multimodais que incluem arquivos de texto e vídeo, conforme mostrado neste exemplo. Para essas chamadas, é necessário usar um modelo compatível com comandos de mídia (como o Gemini 1.5 Flash).
Leia os requisitos e recomendações para arquivos de entrada.
Escolha se você quer transmitir a resposta (generateContentStream
) ou esperar
pela resposta até que todo o resultado seja gerado (generateContent
).
Streaming
É possível ter interações mais rápidas ao não esperar o resultado completo da geração do modelo e usar o streaming para processar resultados parciais.
Este exemplo mostra como usar
generateContentStream()
para transmitir o texto gerado de uma solicitação de comando multimodal que inclui texto
e um único vídeo:
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)
}
}
Sem streaming
Como alternativa, aguarde o resultado completo em vez de streaming. O resultado só é retornado depois que o modelo conclui todo o processo de geração.
Este exemplo mostra como usar
generateContent()
para gerar texto de uma solicitação de comando multimodal que inclui texto e um
vídeo:
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.")
Saiba como escolher um modelo do Gemini e, opcionalmente, um local adequado para seu caso de uso e app.
Requisitos e recomendações para arquivos de entrada
Consulte Arquivos de entrada e requisitos compatíveis com o Vertex AI Gemini API para saber mais sobre:
- Opções diferentes para enviar um arquivo em uma solicitação
- Tipos de arquivos compatíveis
- Tipos MIME compatíveis e como especificá-los
- Requisitos e práticas recomendadas para arquivos e solicitações multimodais
O que mais você pode fazer?
- Saiba como contar tokens antes de enviar comandos longos para o modelo.
- Configure Cloud Storage for Firebase para incluir arquivos grandes nas solicitações multimodais e ter uma solução mais gerenciada para fornecer arquivos em comandos. Os arquivos podem incluir imagens, PDFs, vídeos e áudio.
- Comece a pensar na preparação para a produção, incluindo a configuração de Firebase App Check para proteger o Gemini API contra abusos de clientes não autorizados.
Testar outros recursos do Gemini API
- Crie conversas com vários turnos (chat).
- Gerar texto com base em comandos somente de texto.
- Gere saída estruturada (como JSON) com comandos de texto e multimodais.
- Use a chamada de função para conectar modelos generativos a sistemas e informações externas.
Saiba como controlar a geração de conteúdo
- Entenda o design de comandos, incluindo práticas recomendadas, estratégias e exemplos de comandos.
- Configure os parâmetros do modelo, como temperatura e máximo de tokens de saída.
- Use as configurações de segurança para ajustar a probabilidade de receber respostas que possam ser consideradas prejudiciais.
Saiba mais sobre os modelos do Gemini
Saiba mais sobre os modelos disponíveis para vários casos de uso e as cotas e os preços.Enviar feedback sobre sua experiência com o Vertex AI in Firebase