É 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 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 |
---|---|
Gemini 1.5 Flash Acessar o card de modelo em Flash do Gemini 1.5 |
Máximo de imagens por comando: 3.000 |
Gemini 1.5 Pro Acessar o card de modelo do Gemini 1.5 Pro |
Máximo de imagens por comando: 3.000 |
Gemini 1.0 Pro Vision Acessar o card de modelo Gemini 1.0 Pro Vision |
Máximo de imagens por comando: 16 |
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.
Python
Para saber como instalar o SDK da Vertex AI para Python, consulte Instalar o SDK da Vertex AI para Python. Saiba mais na documentação de referência da API SDK da Vertex AI para Python.
Respostas com e sem streaming
Escolha se o modelo vai gerar respostas de streaming ou sem streaming. Para respostas de streaming, você recebe cada resposta assim que o token de saída for gerado. Para respostas que não são de streaming, você recebe todas as respostas depois que todos os tokens de saída forem gerados.
Para uma resposta de streaming, use o parâmetro stream
em
generate_content
.
response = model.generate_content(contents=[...], stream = True)
Para uma resposta que não seja de streaming, remova o parâmetro ou defina-o como False
.
Código de amostra
Java
Antes de testar esta amostra, siga as instruções de configuração do Java no guia de início rápido da Vertex AI. Para mais informações, consulte a documentação de referência do SDK da Vertex AI para Java para Gemini.
Para autenticar na Vertex AI, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Respostas com e sem streaming
Escolha se o modelo vai gerar respostas de streaming ou sem streaming. Para respostas de streaming, você recebe cada resposta assim que o token de saída for gerado. Para respostas que não são de streaming, você recebe todas as respostas depois que todos os tokens de saída forem gerados.
Para uma resposta de streaming, use o método
generateContentStream
.
public ResponseStream<GenerateContentResponse> generateContentStream(Content content)
Para uma resposta que não seja de streaming, use o método generateContent
.
public GenerateContentResponse generateContent(Content content)
Código de amostra
Node.js
Antes de testar esta amostra, siga as instruções de configuração do Node.js no Guia de início rápido da IA generativa usando o SDK do Node.js. Para mais informações, consulte a documentação de referência do SDK do Node.js para Gemini.
Para autenticar na Vertex AI, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Respostas com e sem streaming
Escolha se o modelo vai gerar respostas de streaming ou sem streaming. Para respostas de streaming, você recebe cada resposta assim que o token de saída for gerado. Para respostas que não são de streaming, você recebe todas as respostas depois que todos os tokens de saída forem gerados.
Para uma resposta de streaming, use o método
generateContentStream
.
const streamingResp = await generativeModel.generateContentStream(request);
Para uma resposta que não seja de streaming, use o método generateContent
.
const streamingResp = await generativeModel.generateContent(request);
Código de amostra
Go
Antes de testar esta amostra, siga as instruções de configuração do Go no Guia de início rápido da Vertex AI. Para mais informações, consulte a documentação de referência do SDK da Vertex AI para Go para Gemini.
Para autenticar na Vertex AI, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Respostas com e sem streaming
Escolha se o modelo vai gerar respostas de streaming ou sem streaming. Para respostas de streaming, você recebe cada resposta assim que o token de saída for gerado. Para respostas que não são de streaming, você recebe todas as respostas depois que todos os tokens de saída forem gerados.
Para uma resposta de streaming, use o método
GenerateContentStream
.
iter := model.GenerateContentStream(ctx, genai.Text("Tell me a story about a lumberjack and his giant ox. Keep it very short."))
Para uma resposta que não seja de streaming, use o método GenerateContent
.
resp, err := model.GenerateContent(ctx, genai.Text("What is the average size of a swallow?"))
Código de amostra
C#
Antes de testar este exemplo, siga as instruções de configuração do C# na Vertex AI guia de início rápido. Para mais informações, consulte a documentação de referência da Vertex AI C# .
Para autenticar na Vertex AI, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Respostas com e sem streaming
Escolha se o modelo vai gerar respostas de streaming ou sem streaming. Para respostas de streaming, você recebe cada resposta assim que o token de saída for gerado. Para respostas que não são de streaming, você recebe todas as respostas depois que todos os tokens de saída forem gerados.
Para uma resposta de streaming, use o método
StreamGenerateContent
.
public virtual PredictionServiceClient.StreamGenerateContentStream StreamGenerateContent(GenerateContentRequest request)
Para uma resposta que não seja de streaming, use o método GenerateContentAsync
.
public virtual Task<GenerateContentResponse> GenerateContentAsync(GenerateContentRequest request)
Para mais informações sobre como o servidor pode transmitir respostas, consulte RPCs de streaming.
Código de amostra
REST
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.Imagem no Cloud Storage
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.Clicar para abrir uma lista parcial das regiões 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 do Cloud Storage do arquivo a ser incluído no prompt. O objeto do bucket precisa ser publicamente legível ou residir no mesmo projeto do Google Cloud que está enviando a solicitação. Você também precisa especificar o tipo de mídia (mimeType
) do arquivo.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 deimage/jpeg
. Para visualizar esta imagem, abra a imagem de amostra.MIME_TYPE
: O tipo de mídia do arquivo especificado emdata
oufileUri
. Os valores aceitáveis são os seguintes:Clique para expandir os tipos MIME.
application/pdf
audio/mpeg
audio/mp3
audio/wav
image/png
image/jpeg
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:
curl
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"
PowerShell
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.
Dados de imagem 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.Clicar para abrir uma lista parcial das regiões disponíveis
us-central1
us-west4
northamerica-northeast1
us-east4
us-west1
asia-northeast3
asia-southeast1
asia-northeast1
PROJECT_ID
: o ID do projeto. 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 (B64_BASE_IMAGE
mimeType
) dos dados.MIME_TYPE
: O tipo de mídia do arquivo especificado emdata
oufileUri
. Os valores aceitáveis são os seguintes:Clique para expandir os tipos MIME.
application/pdf
audio/mpeg
audio/mp3
audio/wav
image/png
image/jpeg
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:
curl
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"
PowerShell
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.
- 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 ostreamGenerateContent
. - O ID do modelo multimodal está localizado no final do URL, antes do método
Por exemplo,
gemini-1.5-flash
ougemini-1.0-pro-vision
). Este exemplo pode oferecer suporte a outras modelos de classificação.
Console
Para enviar um prompt multimodal usando o console do Google Cloud, faça o seguinte:
- Na seção "Vertex AI" do console do Google Cloud, acesse a página do Vertex AI Studio.
- Em Design de comandos (turno único), clique em Abrir.
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 quandotopP
etopK
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 de0
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.
- Opcional: para configurar parâmetros avançados, clique em Avançado e faça as configurações 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 de1
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 de3
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
. - Ativar embasamento: o embasamento não é compatível com recursos multimodais. solicitações.
- Para fazer upload de mídia, como arquivos PNG, faça o seguinte:
- Clique em Inserir mídia e selecione uma origem.
Se você escolher o Google Drive como seu origem, escolha uma conta e dê consentimento o Vertex AI Studio acesse sua conta na primeira vez que selecione essa opção. É possível fazer o upload de vários arquivos de mídia com até 10 MB. Um arquivo não pode exceder 7 MB.
- Clique no arquivo que você quer adicionar.
- Clique em Selecionar.
A miniatura do arquivo é mostrada no painel Comando. O número total de tokens também é exibido. Se os dados de solicitação excederem o limite de tokens, eles serão truncados e não serão incluídos no processamento dos dados.
- Opcional: para exibir o número de tokens calculados nas imagens e a soma de todos os tokens, clique em Ver tokens.
Pode levar até 15 segundos para calcular a contagem de tokens para arquivos de mídia. As visualizações ID do token para texto e ID do token não mostram resultados importantes porque não há compatibilidade com tokens de mídia.
Para fechar o painel da ferramenta tokenizadora, clique em X ou clique fora do painel.
- Digite o comando de texto no painel Prompt. O modelo usa as mensagens anteriores como contexto para novas respostas.
- Opcional: para exibir o número de tokens calculados nas imagens e a soma de todos os tokens, clique em Ver tokens. É possível conferir os tokens ou IDs de token do comando de texto.
- Para ver os tokens no comando de texto destacados com cores diferentes marcando o limite de cada ID de token, clique em ID do token para texto. Tokens de mídia não são aceitos.
- Para acessar os IDs de token, clique em ID do token.
Para fechar o painel da ferramenta tokenizadora, clique em X ou clique fora do painel.
- Clique em Enviar.
- Opcional: para salvar a solicitação em Minhas solicitações, clique em Salvar.
- Opcional: para receber o código Python ou um comando curl para seu prompt, clique em Ver código.
- Opcional: para limpar todas as mensagens anteriores, clique em Limpar conversa
Clique para abrir as configurações avançadas
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.
Python
Para saber como instalar o SDK da Vertex AI para Python, consulte Instalar o SDK da Vertex AI para Python. Saiba mais na documentação de referência da API SDK da Vertex AI para Python.
Respostas com e sem streaming
Escolha se o modelo vai gerar respostas de streaming ou sem streaming. Para respostas de streaming, você recebe cada resposta assim que o token de saída for gerado. Para respostas que não são de streaming, você recebe todas as respostas depois que todos os tokens de saída forem gerados.
Para uma resposta de streaming, use o parâmetro stream
em
generate_content
.
response = model.generate_content(contents=[...], stream = True)
Para uma resposta que não seja de streaming, remova o parâmetro ou defina-o como False
.
Código de amostra
Java
Antes de testar esta amostra, siga as instruções de configuração do Java no guia de início rápido da Vertex AI. Para mais informações, consulte a documentação de referência do SDK da Vertex AI para Java para Gemini.
Para autenticar na Vertex AI, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Respostas com e sem streaming
Escolha se o modelo vai gerar respostas de streaming ou sem streaming. Para respostas de streaming, você recebe cada resposta assim que o token de saída for gerado. Para respostas que não são de streaming, você recebe todas as respostas depois que todos os tokens de saída forem gerados.
Para uma resposta de streaming, use o método
generateContentStream
.
public ResponseStream<GenerateContentResponse> generateContentStream(Content content)
Para uma resposta que não seja de streaming, use o método generateContent
.
public GenerateContentResponse generateContent(Content content)
Código de amostra
Node.js
Antes de testar esta amostra, siga as instruções de configuração do Node.js no Guia de início rápido da IA generativa usando o SDK do Node.js. Para mais informações, consulte a documentação de referência do SDK do Node.js para Gemini.
Para autenticar na Vertex AI, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Respostas com e sem streaming
Escolha se o modelo vai gerar respostas de streaming ou sem streaming. Para respostas de streaming, você recebe cada resposta assim que o token de saída for gerado. Para respostas que não são de streaming, você recebe todas as respostas depois que todos os tokens de saída forem gerados.
Para uma resposta de streaming, use o método
generateContentStream
.
const streamingResp = await generativeModel.generateContentStream(request);
Para uma resposta que não seja de streaming, use o método generateContent
.
const streamingResp = await generativeModel.generateContent(request);
Código de amostra
Go
Antes de testar esta amostra, siga as instruções de configuração do Go no Guia de início rápido da Vertex AI. Para mais informações, consulte a documentação de referência do SDK da Vertex AI para Go para Gemini.
Para autenticar na Vertex AI, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Respostas com e sem streaming
Escolha se o modelo vai gerar respostas de streaming ou sem streaming. Para respostas de streaming, você recebe cada resposta assim que o token de saída for gerado. Para respostas que não são de streaming, você recebe todas as respostas depois que todos os tokens de saída forem gerados.
Para uma resposta de streaming, use o método
GenerateContentStream
.
iter := model.GenerateContentStream(ctx, genai.Text("Tell me a story about a lumberjack and his giant ox. Keep it very short."))
Para uma resposta que não seja de streaming, use o método GenerateContent
.
resp, err := model.GenerateContent(ctx, genai.Text("What is the average size of a swallow?"))
Código de amostra
C#
Antes de testar este exemplo, siga as instruções de configuração do C# na Vertex AI guia de início rápido. Para mais informações, consulte a documentação de referência da Vertex AI C# .
Para autenticar na Vertex AI, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Respostas com e sem streaming
Escolha se o modelo vai gerar respostas de streaming ou sem streaming. Para respostas de streaming, você recebe cada resposta assim que o token de saída for gerado. Para respostas que não são de streaming, você recebe todas as respostas depois que todos os tokens de saída forem gerados.
Para uma resposta de streaming, use o método
StreamGenerateContent
.
public virtual PredictionServiceClient.StreamGenerateContentStream StreamGenerateContent(GenerateContentRequest request)
Para uma resposta que não seja de streaming, use o método GenerateContentAsync
.
public virtual Task<GenerateContentResponse> GenerateContentAsync(GenerateContentRequest request)
Para mais informações sobre como o servidor pode transmitir respostas, consulte RPCs de streaming.
Código de amostra
REST
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.Clicar para abrir uma lista parcial das regiões 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 do Cloud Storage do arquivo a ser incluído no prompt. O objeto do bucket precisa ser publicamente legível ou residir no mesmo projeto do Google Cloud que está enviando a solicitação. Você também precisa especificar o tipo de mídia (mimeType
) do arquivo.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 deimage/png
. Para visualizar esta imagem, abra a imagem de amostra.MIME_TYPE
: O tipo de mídia do arquivo especificado emdata
oufileUri
. Os valores aceitáveis são os seguintes:Clique para expandir os tipos MIME.
application/pdf
audio/mpeg
audio/mp3
audio/wav
image/png
image/jpeg
text/plain
video/mov
video/mpeg
video/mp4
video/mpg
video/avi
video/wmv
video/mpegps
video/flv
TEXT1
: as instruções de texto a serem incluídas no comando. Por exemplo,city: Rome, Landmark: the Colosseum
FILE_URI2
: o URI do Cloud Storage do arquivo a ser incluído no prompt. O objeto do bucket precisa ser publicamente legível ou residir no mesmo projeto do Google Cloud que está enviando a solicitação. Você também precisa especificar o tipo de mídia (mimeType
) do arquivo.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 deimage/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 do Cloud Storage do arquivo a ser incluído no prompt. O objeto do bucket precisa ser publicamente legível ou residir no mesmo projeto do Google Cloud que está enviando a solicitação. Você também precisa especificar o tipo de mídia (mimeType
) do arquivo.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 deimage/png
. Para visualizar esta imagem, abra a imagem de amostra.
Para enviar a solicitação, escolha uma destas opções:
curl
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"
PowerShell
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.
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 ostreamGenerateContent
. - O ID do modelo multimodal está localizado no final do URL, antes do método
Por exemplo,
gemini-1.5-flash
ougemini-1.0-pro-vision
). Este exemplo pode oferecer suporte a outras modelos de classificação.
Console
Para enviar um prompt multimodal usando o console do Google Cloud, faça o seguinte:
- Na seção "Vertex AI" do console do Google Cloud, acesse a página do Vertex AI Studio.
- Em Design de comandos (turno único), clique em Abrir.
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 quandotopP
etopK
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 de0
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.
- Opcional: para configurar parâmetros avançados, clique em Avançado e faça as configurações 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 de1
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 de3
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
. - Ativar embasamento: o embasamento não é compatível com recursos multimodais. solicitações.
- Para fazer upload de mídia, como arquivos PNG, faça o seguinte:
- Clique em Inserir mídia e selecione uma origem.
Se você escolher o Google Drive como seu origem, escolha uma conta e dê consentimento o Vertex AI Studio acesse sua conta na primeira vez que selecione essa opção. É possível fazer o upload de vários arquivos de mídia com até 10 MB. Um arquivo não pode exceder 7 MB.
- Clique no arquivo que você quer adicionar.
- Clique em Selecionar.
A miniatura do arquivo é mostrada no painel Comando. O número total de tokens também é exibido. Se os dados de solicitação excederem o limite de tokens, eles serão truncados e não serão incluídos no processamento dos dados.
- Opcional: para exibir o número de tokens calculados nas imagens e a soma de todos os tokens, clique em Ver tokens.
Pode levar até 15 segundos para calcular a contagem de tokens para arquivos de mídia. As visualizações ID do token para texto e ID do token não mostram resultados importantes porque não há compatibilidade com tokens de mídia.
Para fechar o painel da ferramenta tokenizadora, clique em X ou clique fora do painel.
- Digite o comando de texto no painel Prompt. O modelo usa as mensagens anteriores como contexto para novas respostas.
- Opcional: para exibir o número de tokens calculados nas imagens e a soma de todos os tokens, clique em Ver tokens. É possível conferir os tokens ou IDs de token do comando de texto.
- Para ver os tokens no comando de texto destacados com cores diferentes marcando o limite de cada ID de token, clique em ID do token para texto. Tokens de mídia não são aceitos.
- Para acessar os IDs de token, clique em ID do token.
Para fechar o painel da ferramenta tokenizadora, clique em X ou clique fora do painel.
- Clique em Enviar.
- Opcional: para salvar a solicitação em Minhas solicitações, clique em Salvar.
- Opcional: para receber o código Python ou um comando curl para seu prompt, clique em Ver código.
- Opcional: para limpar todas as mensagens anteriores, clique em Limpar conversa
Clique para abrir as configurações avançadas
Definir parâmetros do modelo
Os seguintes parâmetros de modelo podem ser definidos em modelos multimodais:
Top-P
O top-p muda a forma como o modelo seleciona tokens para saída. Os tokens são selecionados
do mais provável (veja o top-K) para o menos provável até que a soma das probabilidades
seja igual ao valor do top-P. Por exemplo, se os tokens A, B e C tiverem uma probabilidade de 0,3, 0,2 e 0,1 e o valor de top-P for 0.5
, o modelo selecionará A ou B como token seguinte usando temperatura e exclui C como
candidato.
Especifique um valor mais baixo para respostas menos aleatórias e um valor mais alto para respostas mais aleatórias.
Top-K
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.
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.
Valores de parâmetro válidos
Parâmetro | Gemini 1.0 Pro Vision | Gemini 1.5 Pro | Gemini 1.5 Flash |
---|---|---|---|
Top-K | 1 - 40 (padrão 32) | Sem suporte | Sem suporte |
Top-P | 0 - 1.0 (padrão 1.0) | 0 - 1.0 (padrão 0.95) | 0 - 1.0 (padrão 0.95) |
Temperatura | 0 - 1.0 (padrão 0.4) | 0 - 2.0 (padrão 1.0) | 0 - 2.0 (padrão 1.0) |
Requisitos de imagem
Os modelos multimodais do Gemini são compatíveis com os seguintes tipos MIME de imagem:
Tipo de Mime da imagem | Gemini 1.5 Flash | Gemini 1.5 Pro | Gemini 1.0 Pro Vision |
---|---|---|---|
PNG - image/png |
|||
JPEG - image/jpeg |
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 1.0 Pro Vision: 16 imagens
- Gemini 1.5 Flash e Gemini 1.5 Pro: 3.000 imagens
Veja como os tokens são calculados para imagens:
- Gemini 1.0 Pro Vision: cada imagem representa 258 tokens.
- 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.
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
oua
b
c
no seu índice. Confira a seguir um exemplo de uso de imagens indexadas em um comando:image 1
image 2
image 3
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
- Comece a criar com os modelos multimodais do Gemini. Novos clientes ganham US $300 em créditos gratuitos do Google Cloud para descobrir o que eles podem fazer com o Gemini.
- Saiba como enviar solicitações de comandos de chat.
- Saiba mais sobre as práticas recomendadas de IA responsável e os filtros de segurança da Vertex AI.