Gere texto com base em comandos multimodais usando a API Gemini


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:

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:

  1. 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.

  2. Conectou seu app ao Firebase, incluindo o registro e a adição da configuração do Firebase.

  3. 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:

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

Saiba como controlar a geração de conteúdo

Também é possível testar comandos e configurações de modelo usando Vertex AI Studio.

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