Compreensão de imagens

É possível adicionar imagens às solicitações do Gemini para realizar tarefas que envolvem compreender o conteúdo das imagens incluídas. Esta página mostra como adicionar imagens às suas solicitações para o Gemini na Vertex AI usando o console do Google Cloud e a API Vertex AI.

Modelos compatíveis

A tabela a seguir lista os modelos compatíveis com a compreensão de imagens:

Modelo Detalhes da modalidade de imagem Testar o modelo
Gemini 2.0 Flash
gemini-2.0-flash
  • Máximo de imagens por comando: 3.000
  • Tamanho máximo da imagem: 7 MB
Testar o Gemini 2.0 Flash
Gemini 2.0 Flash-Lite
gemini-2.0-flash-lite
  • Máximo de imagens por comando: 3.000
  • Tamanho máximo da imagem: 7 MB
Teste o Gemini 2.0 Flash-Lite

Para uma lista de linguagens compatíveis com os modelos do Gemini, consulte as informações do modelo Modelos do Google. Para saber mais sobre como criar comandos multimodais, consulte Criar comandos multimodais. Se você está procurando uma maneira de usar o Gemini diretamente no seu dispositivo móvel e e apps da Web, consulte os SDKs da Vertex AI para Firebase para apps para Android, Swift, da Web e Flutter.

Adicionar imagens a uma solicitação

É possível adicionar uma ou várias imagens na sua solicitação para o Gemini.

Imagem única

O exemplo de código em cada uma das guias a seguir mostra uma maneira diferente de identificar o que está em uma imagem. Esta amostra funciona com todos os modelos multimodais do Gemini.

Instalar

pip install --upgrade google-genai
Para saber mais, consulte a documentação de referência do SDK.

Defina variáveis de ambiente para usar o SDK da IA generativa com a Vertex AI:

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=us-central1
export GOOGLE_GENAI_USE_VERTEXAI=True

from google import genai
from google.genai.types import HttpOptions, Part

client = genai.Client(http_options=HttpOptions(api_version="v1"))
response = client.models.generate_content(
    model="gemini-2.0-flash-001",
    contents=[
        "What is shown in this image?",
        Part.from_uri(
            file_uri="gs://cloud-samples-data/generative-ai/image/scones.jpg",
            mime_type="image/jpeg",
        ),
    ],
)
print(response.text)
# Example response:
# The image shows a flat lay of blueberry scones arranged on parchment paper. There are ...

Depois de configurou seu ambiente use REST para testar uma solicitação de texto. O exemplo a seguir envia uma solicitação ao publisher endpoint do modelo.

É possível incluir imagens armazenadas no Cloud Storage ou usar dados de imagem codificados em Base64.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • LOCATION: a região para processar a solicitação. Insira uma região compatível. Para a lista completa de regiões compatíveis, consulte Locais disponíveis.
    • us-central1
    • us-west4
    • northamerica-northeast1
    • us-east4
    • us-west1
    • asia-northeast3
    • asia-southeast1
    • asia-northeast1
  • PROJECT_ID: o ID do projeto.
  • FILE_URI: o URI ou URL do arquivo a ser incluído no comando. Os valores aceitáveis são os seguintes:
    • URI do bucket do Cloud Storage: o objeto precisa ser publicamente legível ou residir no mesmo projeto do Google Cloud que está enviando a solicitação. Para gemini-2.0-flash e gemini-2.0-flash-lite, o limite de tamanho é de 2 GB.
    • URL HTTP: o URL do arquivo precisa ser legível publicamente. É possível especificar um arquivo de vídeo, um arquivo de áudio e até 10 arquivos de imagem por solicitação. Os arquivos de áudio, vídeo e documentos não podem exceder 15 MB.
    • URL do vídeo do YouTube: o vídeo do YouTube precisa ser de propriedade da conta que você usou para fazer login no console do Google Cloud ou ser público. Somente um URL de vídeo do YouTube é aceito por solicitação.

    Ao especificar um fileURI, você também precisa especificar o tipo de mídia (mimeType) do arquivo. Se o VPC Service Controls estiver ativado, não será possível especificar um URL de arquivo de mídia para fileURI.

    Se você não tiver um arquivo de imagem no Cloud Storage, use o seguinte arquivo disponível publicamente: gs://cloud-samples-data/generative-ai/image/scones.jpg com um tipo MIME de image/jpeg. Para visualizar esta imagem, abra a imagem de amostra.

  • MIME_TYPE: O tipo de mídia do arquivo especificado em data ou fileUri . Os valores aceitáveis são os seguintes:
    • application/pdf
    • audio/mpeg
    • audio/mp3
    • audio/wav
    • image/png
    • image/jpeg
    • image/webp
    • text/plain
    • video/mov
    • video/mpeg
    • video/mp4
    • video/mpg
    • video/avi
    • video/wmv
    • video/mpegps
    • video/flv
  • TEXT: as instruções de texto a serem incluídas no comando. Por exemplo, What is shown in this image?

Para enviar a solicitação, escolha uma destas opções:

Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

cat > request.json << 'EOF'
{
  "contents": {
    "role": "USER",
    "parts": [
      {
        "fileData": {
          "fileUri": "FILE_URI",
          "mimeType": "MIME_TYPE"
        }
      },
      {
        "text": "TEXT"
      }
    ]
  }
}
EOF

Depois execute o comando a seguir para enviar a solicitação REST:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/gemini-1.5-flash:generateContent"

Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

@'
{
  "contents": {
    "role": "USER",
    "parts": [
      {
        "fileData": {
          "fileUri": "FILE_URI",
          "mimeType": "MIME_TYPE"
        }
      },
      {
        "text": "TEXT"
      }
    ]
  }
}
'@  | Out-File -FilePath request.json -Encoding utf8

Depois execute o comando a seguir para enviar a solicitação REST:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/gemini-1.5-flash:generateContent" | Select-Object -Expand Content

Você receberá uma resposta JSON semelhante a seguinte.

{
  "candidates": [
    {
      "content": {
        "role": "model",
        "parts": [
          {
            "text": " The image shows a table with a cup of coffee, a bowl of blueberries, and a plate of scones with blueberries on it. There are also pink flowers on the table."
          }
        ]
      },
      "finishReason": "STOP",
      "safetyRatings": [
        {
          "category": "HARM_CATEGORY_HATE_SPEECH",
          "probability": "NEGLIGIBLE",
          "probabilityScore": 0.027742893,
          "severity": "HARM_SEVERITY_NEGLIGIBLE",
          "severityScore": 0.07276838
        },
        {
          "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
          "probability": "NEGLIGIBLE",
          "probabilityScore": 0.026155617,
          "severity": "HARM_SEVERITY_NEGLIGIBLE",
          "severityScore": 0.07172113
        },
        {
          "category": "HARM_CATEGORY_HARASSMENT",
          "probability": "NEGLIGIBLE",
          "probabilityScore": 0.04304285,
          "severity": "HARM_SEVERITY_NEGLIGIBLE",
          "severityScore": 0.037608635
        },
        {
          "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
          "probability": "NEGLIGIBLE",
          "probabilityScore": 0.08803312,
          "severity": "HARM_SEVERITY_NEGLIGIBLE",
          "severityScore": 0.09203286
        }
      ]
    }
  ],
  "usageMetadata": {
    "promptTokenCount": 265,
    "candidatesTokenCount": 35,
    "totalTokenCount": 300
  }
}

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • LOCATION: a região para processar a solicitação. Insira uma região compatível. Para a lista completa de regiões compatíveis, consulte Locais disponíveis.
    • us-central1
    • us-west4
    • northamerica-northeast1
    • us-east4
    • us-west1
    • asia-northeast3
    • asia-southeast1
    • asia-northeast1
  • PROJECT_ID: o ID do projeto.
  • B64_BASE_IMAGE
    A codificação Base64 da imagem, do PDF ou do vídeo a ser incluído in-line no comando. Ao incluir mídia inline, você também precisa especificar a mídia tipo (mimeType) dos dados.
  • MIME_TYPE: O tipo de mídia do arquivo especificado em data ou fileUri . Os valores aceitáveis são os seguintes:
    • application/pdf
    • audio/mpeg
    • audio/mp3
    • audio/wav
    • image/png
    • image/jpeg
    • image/webp
    • text/plain
    • video/mov
    • video/mpeg
    • video/mp4
    • video/mpg
    • video/avi
    • video/wmv
    • video/mpegps
    • video/flv
  • TEXT: as instruções de texto a serem incluídas no comando. Por exemplo, What is shown in this image?.

Para enviar a solicitação, escolha uma destas opções:

Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

cat > request.json << 'EOF'
{
  "contents": {
    "role": "USER",
    "parts": [
      {
        "inlineData": {
          "data": "B64_BASE_IMAGE",
          "mimeType": "MIME_TYPE"
        }
      },
      {
        "text": "TEXT"
      }
    ]
  }
}
EOF

Depois execute o comando a seguir para enviar a solicitação REST:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/gemini-1.5-flash:generateContent"

Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

@'
{
  "contents": {
    "role": "USER",
    "parts": [
      {
        "inlineData": {
          "data": "B64_BASE_IMAGE",
          "mimeType": "MIME_TYPE"
        }
      },
      {
        "text": "TEXT"
      }
    ]
  }
}
'@  | Out-File -FilePath request.json -Encoding utf8

Depois execute o comando a seguir para enviar a solicitação REST:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/gemini-1.5-flash:generateContent" | Select-Object -Expand Content

Você receberá uma resposta JSON semelhante a seguinte.

{
  "candidates": [
    {
      "content": {
        "role": "model",
        "parts": [
          {
            "text": " The image shows a table with a cup of coffee, a bowl of blueberries, and a plate of scones with blueberries on it. There are also pink flowers on the table."
          }
        ]
      },
      "finishReason": "STOP",
      "safetyRatings": [
        {
          "category": "HARM_CATEGORY_HATE_SPEECH",
          "probability": "NEGLIGIBLE",
          "probabilityScore": 0.027742893,
          "severity": "HARM_SEVERITY_NEGLIGIBLE",
          "severityScore": 0.07276838
        },
        {
          "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
          "probability": "NEGLIGIBLE",
          "probabilityScore": 0.026155617,
          "severity": "HARM_SEVERITY_NEGLIGIBLE",
          "severityScore": 0.07172113
        },
        {
          "category": "HARM_CATEGORY_HARASSMENT",
          "probability": "NEGLIGIBLE",
          "probabilityScore": 0.04304285,
          "severity": "HARM_SEVERITY_NEGLIGIBLE",
          "severityScore": 0.037608635
        },
        {
          "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
          "probability": "NEGLIGIBLE",
          "probabilityScore": 0.08803312,
          "severity": "HARM_SEVERITY_NEGLIGIBLE",
          "severityScore": 0.09203286
        }
      ]
    }
  ],
  "usageMetadata": {
    "promptTokenCount": 265,
    "candidatesTokenCount": 35,
    "totalTokenCount": 300
  }
}
Observe o seguinte no URL deste exemplo:
  • Use o generateContent para solicitar que a resposta seja retornada depois de ser totalmente gerada. Para reduzir a percepção de latência ao público humano, transmita a resposta à medida que geradas usando o streamGenerateContent .
  • O ID do modelo multimodal está localizado no final do URL, antes do método Por exemplo, gemini-1.5-flash ou gemini-1.0-pro-vision). Este exemplo pode oferecer suporte a outras modelos de classificação.
Para enviar um prompt multimodal usando o console do Google Cloud, faça o seguinte:

  1. Na seção Vertex AI do console do Google Cloud, acesse a página do Vertex AI Studio.

    Acesse o Vertex AI Studio

  2. Clique em Abrir formato livre.

  3. Opcional: configure o modelo e os parâmetros:

    • Modelo: selecione um modelo.
    • Região: selecione a região que você quer usar.
    • Temperatura: use o controle deslizante ou a caixa de texto para inserir um valor para a temperatura.

      A temperatura é usada para amostragem durante a geração da resposta, que ocorre quando topP e topK são aplicados. A temperatura controla o grau de aleatoriedade na seleção do token. Temperaturas mais baixas são boas para solicitações que exigem uma resposta menos aberta ou criativa, enquanto temperaturas mais altas podem levar a resultados mais diversos ou criativos. Uma temperatura de 0 significa que os tokens de maior probabilidade são sempre selecionados. Nesse caso, as respostas para uma determinada solicitação são, na maioria das vezes, deterministas, mas uma pequena variação ainda é possível.

      Se o modelo retornar uma resposta muito genérica, muito curta ou se o modelo fornecer uma resposta alternativa, tente aumentar a temperatura.

    • Limite de token de saída: use o controle deslizante ou a caixa de texto para inserir um valor para o limite de saída máximo.

      Número máximo de tokens que podem ser gerados na resposta. Um token tem cerca de quatro caracteres. 100 tokens correspondem a cerca de 60 a 80 palavras.

      Especifique um valor mais baixo para respostas mais curtas e um valor mais alto para respostas potencialmente mais longas.

    • Adicionar sequência de paradas: opcional. Insira uma sequência de paradas, que é uma série de caracteres que inclui espaços. Se o modelo encontrar uma sequência de paradas, a geração de resposta será interrompida. A sequência de paradas não é incluída na resposta, e você pode adicionar até cinco sequências de paradas.

  4. Opcional: para configurar parâmetros avançados, clique em Avançado e faça a configuração da seguinte maneira:

    • Top-K: use o controle deslizante ou a caixa de texto para inserir um valor para "top-K". (incompatível com o Gemini 1.5).

      O Top-K muda a forma como o modelo seleciona tokens para saída. Um top-K de 1 significa que o próximo token selecionado é o mais provável entre todos os tokens no vocabulário do modelo (também chamado de decodificação gananciosa), enquanto um top-K de 3 significa que o próximo token está selecionado entre os três tokens mais prováveis usando a temperatura.

      Para cada etapa da seleção de tokens, são amostrados os tokens top-K com as maiores probabilidades. Em seguida, os tokens são filtrados com base no valor de top-P com o token final selecionado por meio da amostragem de temperatura.

      Especifique um valor mais baixo para respostas menos aleatórias e um valor mais alto para respostas mais aleatórias.

    • Top-P: use o controle deslizante ou a caixa de texto para inserir um valor para essa parte. Os tokens são selecionados do mais provável para o menos até que a soma das probabilidades seja igual ao valor do top-P. Para ter menos resultados de variáveis, defina top-P como 0.
    • Respostas máximas: use o controle deslizante ou a caixa de texto para inserir um valor para o número de respostas a serem geradas.
    • Respostas de streaming: ative para mostrar as respostas à medida que são geradas.
    • Limite do filtro de segurança: selecione o limite de probabilidade de mostrar respostas que podem ser prejudiciais.
    • Ativar embasamento: o embasamento não é compatível com solicitações multimodais.

  5. Clique em Inserir mídia e selecione uma origem para o arquivo.

    Selecione o arquivo que você quer enviar e clique em Abrir.

    Insira o URL do arquivo que você quer usar e clique em Inserir.

    Selecione o bucket e o arquivo que você quer importar e clique em Selecionar.

    1. Escolha uma conta e conceda consentimento ao Vertex AI Studio para acessar sua conta na primeira vez que você selecionar essa opção. É possível fazer upload vários arquivos que tenham um tamanho total de até 10 MB. Um único arquivo não pode exceder 7 MB.
    2. Clique no arquivo que você quer adicionar.
    3. Clique em Selecionar.

      A miniatura do arquivo é mostrada no painel Comando. O número total de tokens também é exibido. Se os dados do comando excederem o limite de tokens, os tokens serão truncados e não serão incluídos no processamento dos dados.

  6. Digite o comando de texto no painel Prompt.

  7. Opcional: para conferir o ID do token para texto e os IDs de token, clique na contagem de tokens no painel Comando.

  8. Clique em Enviar.

  9. Opcional: para salvar o comando em Meus comandos, clique em Salvar.

  10. Opcional: para receber o código Python ou um comando curl para seu prompt, clique em Receber código.

Várias imagens

Cada uma das guias a seguir mostra uma maneira diferente de incluir várias imagens em uma solicitação de solicitação. Cada amostra recebe dois conjuntos das seguintes entradas:

  • Imagem de um ponto turístico famoso
  • O tipo de mídia da imagem
  • Texto indicando a cidade e o ponto de referência na imagem

A amostra também aceita uma terceira imagem e tipo de mídia, mas nenhum texto. O exemplo retorna uma resposta de texto indicando a cidade e o ponto de referência na terceira imagem.

Essas amostras de imagem funcionam com todos os modelos multimodais do Gemini.

Instalar

pip install --upgrade google-genai
Para saber mais, consulte a documentação de referência do SDK.

Defina variáveis de ambiente para usar o SDK da IA generativa com a Vertex AI:

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=us-central1
export GOOGLE_GENAI_USE_VERTEXAI=True

from google import genai
from google.genai.types import HttpOptions, Part

client = genai.Client(http_options=HttpOptions(api_version="v1"))

# Read content from GCS
gcs_file_img_path = "gs://cloud-samples-data/generative-ai/image/scones.jpg"

# Read content from a local file
with open("test_data/latte.jpg", "rb") as f:
    local_file_img_bytes = f.read()

response = client.models.generate_content(
    model="gemini-2.0-flash-001",
    contents=[
        "Generate a list of all the objects contained in both images.",
        Part.from_uri(file_uri=gcs_file_img_path, mime_type="image/jpeg"),
        Part.from_bytes(data=local_file_img_bytes, mime_type="image/jpeg"),
    ],
)
print(response.text)
# Example response:
# Okay, here's the list of objects present in both images:
# ...

Depois de configurou seu ambiente use REST para testar uma solicitação de texto. O exemplo a seguir envia uma solicitação ao publisher endpoint do modelo.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • LOCATION: a região para processar a solicitação. Insira uma região compatível. Para a lista completa de regiões compatíveis, consulte Locais disponíveis.
    • us-central1
    • us-west4
    • northamerica-northeast1
    • us-east4
    • us-west1
    • asia-northeast3
    • asia-southeast1
    • asia-northeast1
  • PROJECT_ID: o ID do projeto.
  • FILE_URI1: o URI ou URL do arquivo a ser incluído no comando. Os valores aceitáveis são os seguintes:
    • URI do bucket do Cloud Storage: o objeto precisa ser publicamente legível ou residir no mesmo projeto do Google Cloud que está enviando a solicitação. Para gemini-2.0-flash e gemini-2.0-flash-lite, o limite de tamanho é de 2 GB.
    • URL HTTP: o URL do arquivo precisa ser legível publicamente. É possível especificar um arquivo de vídeo, um arquivo de áudio e até 10 arquivos de imagem por solicitação. Os arquivos de áudio, vídeo e documentos não podem exceder 15 MB.
    • URL do vídeo do YouTube: o vídeo do YouTube precisa ser de propriedade da conta que você usou para fazer login no console do Google Cloud ou ser público. Somente um URL de vídeo do YouTube é aceito por solicitação.

    Ao especificar um fileURI, você também precisa especificar o tipo de mídia (mimeType) do arquivo. Se o VPC Service Controls estiver ativado, não será possível especificar um URL de arquivo de mídia para fileURI.

    Se você não tiver um arquivo de imagem no Cloud Storage, use o seguinte arquivo disponível publicamente: gs://cloud-samples-data/vertex-ai/llm/prompts/landmark1.png com um tipo MIME de image/png. Para visualizar esta imagem, abra a imagem de amostra.

  • MIME_TYPE: O tipo de mídia do arquivo especificado em data ou fileUri . Os valores aceitáveis são os seguintes:
    • application/pdf
    • audio/mpeg
    • audio/mp3
    • audio/wav
    • image/png
    • image/jpeg
    • image/webp
    • text/plain
    • video/mov
    • video/mpeg
    • video/mp4
    • video/mpg
    • video/avi
    • video/wmv
    • video/mpegps
    • video/flv
    .
    Para simplificar, este exemplo usa o mesmo tipo de mídia para as três imagens de entrada.
  • TEXT1: as instruções de texto a serem incluídas no comando. Por exemplo, city: Rome, Landmark: the Colosseum
  • FILE_URI2: o URI ou URL do arquivo a ser incluído no comando. Os valores aceitáveis são os seguintes:
    • URI do bucket do Cloud Storage: o objeto precisa ser publicamente legível ou residir no mesmo projeto do Google Cloud que está enviando a solicitação. Para gemini-2.0-flash e gemini-2.0-flash-lite, o limite de tamanho é de 2 GB.
    • URL HTTP: o URL do arquivo precisa ser legível publicamente. É possível especificar um arquivo de vídeo, um arquivo de áudio e até 10 arquivos de imagem por solicitação. Os arquivos de áudio, vídeo e documentos não podem exceder 15 MB.
    • URL do vídeo do YouTube: o vídeo do YouTube precisa ser de propriedade da conta que você usou para fazer login no console do Google Cloud ou ser público. Somente um URL de vídeo do YouTube é aceito por solicitação.

    Ao especificar um fileURI, você também precisa especificar o tipo de mídia (mimeType) do arquivo. Se o VPC Service Controls estiver ativado, não será possível especificar um URL de arquivo de mídia para fileURI.

    Se você não tiver um arquivo de imagem no Cloud Storage, use o seguinte arquivo disponível publicamente: gs://cloud-samples-data/vertex-ai/llm/prompts/landmark2.png com um tipo MIME de image/png. Para visualizar esta imagem, abra a imagem de amostra.

  • TEXT2: as instruções de texto a serem incluídas no comando. Por exemplo, city: Beijing, Landmark: Forbidden City
  • FILE_URI3: o URI ou URL do arquivo a ser incluído no comando. Os valores aceitáveis são os seguintes:
    • URI do bucket do Cloud Storage: o objeto precisa ser publicamente legível ou residir no mesmo projeto do Google Cloud que está enviando a solicitação. Para gemini-2.0-flash e gemini-2.0-flash-lite, o limite de tamanho é de 2 GB.
    • URL HTTP: o URL do arquivo precisa ser legível publicamente. É possível especificar um arquivo de vídeo, um arquivo de áudio e até 10 arquivos de imagem por solicitação. Os arquivos de áudio, vídeo e documentos não podem exceder 15 MB.
    • URL do vídeo do YouTube: o vídeo do YouTube precisa ser de propriedade da conta que você usou para fazer login no console do Google Cloud ou ser público. Somente um URL de vídeo do YouTube é aceito por solicitação.

    Ao especificar um fileURI, você também precisa especificar o tipo de mídia (mimeType) do arquivo. Se o VPC Service Controls estiver ativado, não será possível especificar um URL de arquivo de mídia para fileURI.

    Se você não tiver um arquivo de imagem no Cloud Storage, use o seguinte arquivo disponível publicamente: gs://cloud-samples-data/vertex-ai/llm/prompts/landmark3.png com um tipo MIME de image/png. Para visualizar esta imagem, abra a imagem de amostra.

Para enviar a solicitação, escolha uma destas opções:

Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

cat > request.json << 'EOF'
{
  "contents": {
    "role": "USER",
    "parts": [
      {
        "fileData": {
          "fileUri": "FILE_URI1",
          "mimeType": "MIME_TYPE"
        }
      },
      {
        "text": "TEXT1"
      },
      {
        "fileData": {
          "fileUri": "FILE_URI2",
          "mimeType": "MIME_TYPE"
        }
      },
      {
        "text": "TEXT2"
      },
      {
        "fileData": {
          "fileUri": "FILE_URI3",
          "mimeType": "MIME_TYPE"
        }
      }
    ]
  }
}
EOF

Depois execute o comando a seguir para enviar a solicitação REST:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/gemini-1.5-flash:generateContent"

Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

@'
{
  "contents": {
    "role": "USER",
    "parts": [
      {
        "fileData": {
          "fileUri": "FILE_URI1",
          "mimeType": "MIME_TYPE"
        }
      },
      {
        "text": "TEXT1"
      },
      {
        "fileData": {
          "fileUri": "FILE_URI2",
          "mimeType": "MIME_TYPE"
        }
      },
      {
        "text": "TEXT2"
      },
      {
        "fileData": {
          "fileUri": "FILE_URI3",
          "mimeType": "MIME_TYPE"
        }
      }
    ]
  }
}
'@  | Out-File -FilePath request.json -Encoding utf8

Depois execute o comando a seguir para enviar a solicitação REST:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/gemini-1.5-flash:generateContent" | Select-Object -Expand Content

Você receberá uma resposta JSON semelhante a seguinte.

{
  "candidates": [
    {
      "content": {
        "role": "model",
        "parts": [
          {
            "text": "city: Rio de Janeiro, Landmark: Christ the Redeemer statue \n"
          }
        ]
      },
      "finishReason": "STOP",
      "safetyRatings": [
        {
          "category": "HARM_CATEGORY_HATE_SPEECH",
          "probability": "NEGLIGIBLE",
          "probabilityScore": 0.05340333,
          "severity": "HARM_SEVERITY_NEGLIGIBLE",
          "severityScore": 0.08740791
        },
        {
          "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
          "probability": "NEGLIGIBLE",
          "probabilityScore": 0.13050689,
          "severity": "HARM_SEVERITY_NEGLIGIBLE",
          "severityScore": 0.10338596
        },
        {
          "category": "HARM_CATEGORY_HARASSMENT",
          "probability": "NEGLIGIBLE",
          "probabilityScore": 0.05399884,
          "severity": "HARM_SEVERITY_NEGLIGIBLE",
          "severityScore": 0.09947021
        },
        {
          "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
          "probability": "NEGLIGIBLE",
          "probabilityScore": 0.10576342,
          "severity": "HARM_SEVERITY_NEGLIGIBLE",
          "severityScore": 0.066934206
        }
      ]
    }
  ],
  "usageMetadata": {
    "promptTokenCount": 791,
    "candidatesTokenCount": 14,
    "totalTokenCount": 805
  }
}
Observe o seguinte no URL deste exemplo:
  • Use o generateContent para solicitar que a resposta seja retornada depois de ser totalmente gerada. Para reduzir a percepção de latência ao público humano, transmita a resposta à medida que geradas usando o streamGenerateContent .
  • O ID do modelo multimodal está localizado no final do URL, antes do método Por exemplo, gemini-1.5-flash ou gemini-1.0-pro-vision). Este exemplo pode oferecer suporte a outras modelos de classificação.
Para enviar um prompt multimodal usando o console do Google Cloud, faça o seguinte:

  1. Na seção Vertex AI do console do Google Cloud, acesse a página do Vertex AI Studio.

    Acesse o Vertex AI Studio

  2. Clique em Abrir formato livre.

  3. Opcional: configure o modelo e os parâmetros:

    • Modelo: selecione um modelo.
    • Região: selecione a região que você quer usar.
    • Temperatura: use o controle deslizante ou a caixa de texto para inserir um valor para a temperatura.

      A temperatura é usada para amostragem durante a geração da resposta, que ocorre quando topP e topK são aplicados. A temperatura controla o grau de aleatoriedade na seleção do token. Temperaturas mais baixas são boas para solicitações que exigem uma resposta menos aberta ou criativa, enquanto temperaturas mais altas podem levar a resultados mais diversos ou criativos. Uma temperatura de 0 significa que os tokens de maior probabilidade são sempre selecionados. Nesse caso, as respostas para uma determinada solicitação são, na maioria das vezes, deterministas, mas uma pequena variação ainda é possível.

      Se o modelo retornar uma resposta muito genérica, muito curta ou se o modelo fornecer uma resposta alternativa, tente aumentar a temperatura.

    • Limite de token de saída: use o controle deslizante ou a caixa de texto para inserir um valor para o limite de saída máximo.

      Número máximo de tokens que podem ser gerados na resposta. Um token tem cerca de quatro caracteres. 100 tokens correspondem a cerca de 60 a 80 palavras.

      Especifique um valor mais baixo para respostas mais curtas e um valor mais alto para respostas potencialmente mais longas.

    • Adicionar sequência de paradas: opcional. Insira uma sequência de paradas, que é uma série de caracteres que inclui espaços. Se o modelo encontrar uma sequência de paradas, a geração de resposta será interrompida. A sequência de paradas não é incluída na resposta, e você pode adicionar até cinco sequências de paradas.

  4. Opcional: para configurar parâmetros avançados, clique em Avançado e faça a configuração da seguinte maneira:

    • Top-K: use o controle deslizante ou a caixa de texto para inserir um valor para "top-K". (incompatível com o Gemini 1.5).

      O Top-K muda a forma como o modelo seleciona tokens para saída. Um top-K de 1 significa que o próximo token selecionado é o mais provável entre todos os tokens no vocabulário do modelo (também chamado de decodificação gananciosa), enquanto um top-K de 3 significa que o próximo token está selecionado entre os três tokens mais prováveis usando a temperatura.

      Para cada etapa da seleção de tokens, são amostrados os tokens top-K com as maiores probabilidades. Em seguida, os tokens são filtrados com base no valor de top-P com o token final selecionado por meio da amostragem de temperatura.

      Especifique um valor mais baixo para respostas menos aleatórias e um valor mais alto para respostas mais aleatórias.

    • Top-P: use o controle deslizante ou a caixa de texto para inserir um valor para essa parte. Os tokens são selecionados do mais provável para o menos até que a soma das probabilidades seja igual ao valor do top-P. Para ter menos resultados de variáveis, defina top-P como 0.
    • Respostas máximas: use o controle deslizante ou a caixa de texto para inserir um valor para o número de respostas a serem geradas.
    • Respostas de streaming: ative para mostrar as respostas à medida que são geradas.
    • Limite do filtro de segurança: selecione o limite de probabilidade de mostrar respostas que podem ser prejudiciais.
    • Ativar embasamento: o embasamento não é compatível com solicitações multimodais.

  5. Clique em Inserir mídia e selecione uma origem para o arquivo.

    Selecione o arquivo que você quer enviar e clique em Abrir.

    Insira o URL do arquivo que você quer usar e clique em Inserir.

    Selecione o bucket e o arquivo que você quer importar e clique em Selecionar.

    1. Escolha uma conta e conceda consentimento ao Vertex AI Studio para acessar sua conta na primeira vez que você selecionar essa opção. É possível fazer upload vários arquivos que tenham um tamanho total de até 10 MB. Um único arquivo não pode exceder 7 MB.
    2. Clique no arquivo que você quer adicionar.
    3. Clique em Selecionar.

      A miniatura do arquivo é mostrada no painel Comando. O número total de tokens também é exibido. Se os dados do comando excederem o limite de tokens, os tokens serão truncados e não serão incluídos no processamento dos dados.

  6. Digite o comando de texto no painel Prompt.

  7. Opcional: para conferir o ID do token para texto e os IDs de token, clique na contagem de tokens no painel Comando.

  8. Clique em Enviar.

  9. Opcional: para salvar o comando em Meus comandos, clique em Salvar.

  10. Opcional: para receber o código Python ou um comando curl para seu prompt, clique em Receber código.

Definir parâmetros opcionais do modelo

Cada modelo tem um conjunto de parâmetros opcionais que podem ser definidos. Para mais informações, consulte Parâmetros de geração de conteúdo.

Requisitos de imagem

Os modelos multimodais do Gemini são compatíveis com os seguintes tipos MIME de imagem:

Tipo MIME da imagem Gemini 2.0 Flash Gemini 2.0 Flash-Lite
PNG - image/png
JPEG - image/jpeg
WebP: image/webp

Não há um limite específico para o número de pixels em uma imagem. No entanto, imagens maiores são reduzidas e preenchidas para caber em uma resolução máxima de 3072 x 3072, preservando a proporção original.

Este é o número máximo de arquivos de imagem permitidos em uma solicitação de comando:

  • Gemini 2.0 Flash, Gemini 2.0 Flash-Lite, Gemini 1.5 Flash e Gemini 1.5 Pro: 3.000 imagens
  • Gemini 1.0 Pro Vision: 16 imagens

Veja como os tokens são calculados para imagens:

  • Gemini 2.0 Flash, Gemini 2.0 Flash-Lite, Gemini 1.5 Flash e Gemini 1.5 Pro:
    • Se as duas dimensões de uma imagem forem menores ou iguais a 384 pixels, então 258 tokens serão usados.
    • Se uma dimensão de uma imagem for maior do que 384 pixels, a imagem será cortada em blocos. O padrão de cada tamanho de bloco é a menor dimensão (largura ou altura) dividida por 1,5. Se necessário, cada bloco é ajustado para não ser menor que 256 pixels nem maior que 768 pixels. Cada bloco é redimensionado para 768 x 768 e usa 258 tokens.
  • Gemini 1.0 Pro Vision: cada imagem representa 258 tokens.

Práticas recomendadas

Ao usar imagens, siga as práticas recomendadas e informações a seguir para ter os melhores resultados.

  • Se você quiser detectar texto em uma imagem, use comandos com uma única imagem para produzir resultados melhores do que comandos com várias imagens.
  • Se o comando tiver apenas uma imagem, coloque-a antes do comando de texto na solicitação.
  • Se o comando tiver várias imagens e você quiser consultá-las posteriormente no comando ou fazer com que o modelo as mencione na resposta do modelo, atribua um índice a cada imagem antes da imagem. Use a b c ou image 1 image 2 image 3 no seu índice. Confira a seguir um exemplo de uso de imagens indexadas em um comando:
    image 1 
    image 2 
    image 3 
    
    Write a blogpost about my day using image 1 and image 2. Then, give me ideas
    for tomorrow based on image 3.
  • Use imagens com resolução mais alta para gerar resultados melhores.
  • Inclua alguns exemplos no comando.
  • Gire as imagens para a orientação correta antes de adicioná-las ao comando.
  • Evite imagens desfocadas.

Limitações

Embora os modelos multimodais do Gemini sejam eficientes em muitos casos de uso multimodais, é importante entender as limitações dos modelos:

  • Moderação de conteúdo: os modelos se recusam a fornecer respostas sobre imagens que violam nossas políticas de segurança.
  • Raciocínio espacial: os modelos não são precisos para localizar texto ou objetos em imagens. Talvez eles retornem somente as contagens aproximadas de objetos.
  • Usos médicos: os modelos não são adequados para interpretar eimagens médicas (por exemplo, raios-X e tomografias computadorizadas) ou fornecer aconselhamento médico.
  • Reconhecimento de pessoas: os modelos não são usados para identificar pessoas que não são celebridades em imagens.
  • Precisão: os modelos podem apresentar alucinação artificial ou cometer erros ao interpretar imagens de baixa qualidade, rotacionadas ou de resolução extremamente baixa. Os modelos também podem apresentar erros ao interpretar texto escrito à mão em imagens ou documentos.

A seguir