Gere conteúdo com a API Gemini na Vertex AI

Use generateContent ou streamGenerateContent para gerar conteúdo com o Gemini.

A fam��lia de modelos Gemini inclui modelos que funcionam com pedidos de comandos multimodais. O termo multimodal indica que pode usar mais do que uma modalidade ou um tipo de entrada num comando. Os modelos que não são multimodais aceitam comandos apenas com texto. As modalidades podem incluir texto, áudio, vídeo e muito mais.

Crie uma Google Cloud conta para começar

Para começar a usar a API Gemini no Vertex AI, crie uma Google Cloud conta.

Depois de criar a sua conta, use este documento para rever o corpo do pedido do modelo Gemini, os parâmetros do modelo, o corpo da resposta e alguns pedidos de exemplo.

Quando estiver tudo pronto, consulte o guia de início rápido da API Gemini no Vertex AI para saber como enviar um pedido para a API Gemini no Vertex AI através de um SDK de linguagem de programação ou da API REST.

Modelos suportados

Todos os modelos Gemini suportam a geração de conteúdo.

Lista de parâmetros

Consulte exemplos para ver detalhes de implementação.

Corpo do pedido

{
  "cachedContent": string,
  "contents": [
    {
      "role": string,
      "parts": [
        {
          // Union field data can be only one of the following:
          "text": string,
          "inlineData": {
            "mimeType": string,
            "data": string
          },
          "fileData": {
            "mimeType": string,
            "fileUri": string
          },
          // End of list of possible types for union field data.

          "videoMetadata": {
            "startOffset": {
              "seconds": integer,
              "nanos": integer
            },
            "endOffset": {
              "seconds": integer,
              "nanos": integer
            },
            "fps": double
          }
        }
      ]
    }
  ],
  "systemInstruction": {
    "role": string,
    "parts": [
      {
        "text": string
      }
    ]
  },
  "tools": [
    {
      "functionDeclarations": [
        {
          "name": string,
          "description": string,
          "parameters": {
            object (OpenAPI Object Schema)
          }
        }
      ]
    }
  ],
  "safetySettings": [
    {
      "category": enum (HarmCategory),
      "threshold": enum (HarmBlockThreshold)
    }
  ],
  "generationConfig": {
    "temperature": number,
    "topP": number,
    "topK": number,
    "candidateCount": integer,
    "maxOutputTokens": integer,
    "presencePenalty": float,
    "frequencyPenalty": float,
    "stopSequences": [
      string
    ],
    "responseMimeType": string,
    "responseSchema": schema,
    "seed": integer,
    "responseLogprobs": boolean,
    "logprobs": integer,
    "audioTimestamp": boolean,
    "thinkingConfig": {
      "thinkingBudget": integer
    }
  },
  "labels": {
    string: string
  }
}

O corpo do pedido contém dados com os seguintes parâmetros:

Parâmetros

cachedContent

Opcional: string

O nome do conteúdo em cache usado como contexto para apresentar a previsão. Formato: projects/{project}/locations/{location}/cachedContents/{cachedContent}

contents

Obrigatório: Content

O conteúdo da conversa atual com o modelo.

Para consultas de uma única interação, trata-se de uma única instância. Para consultas com várias interações, este é um campo repetido que contém o histórico de conversas e o pedido mais recente.

systemInstruction

Opcional: Content

Disponível para gemini-2.0-flash e gemini-2.0-flash-lite.

Instruções para o modelo que o orientam para um melhor desempenho. Por exemplo, "Responde da forma mais concisa possível" ou "Não uses termos técnicos na tua resposta".

As strings text são contabilizadas para o limite de tokens.

O campo role de systemInstruction é ignorado e não afeta o desempenho do modelo.

tools

Opcional. Um fragmento de código que permite ao sistema interagir com sistemas externos para realizar uma ação ou um conjunto de ações fora do conhecimento e do âmbito do modelo. Consulte o artigo Chamada de funções.

toolConfig

Opcional. Consulte o artigo Chamada de funções.

safetySettings

Opcional: SafetySetting

Definições por pedido para bloquear conteúdo inseguro.

Aplicada a GenerateContentResponse.candidates.

generationConfig

Opcional: GenerationConfig

Definições de configuração da geração.

labels

Opcional: string

Metadados que pode adicionar à chamada da API no formato de pares de chave-valor.

contents

O tipo de dados estruturados base que contém conteúdo multipartes de uma mensagem.

Esta classe é constituída por duas propriedades principais: role e parts. A propriedade role denota o indivíduo que produz o conteúdo, enquanto a propriedade parts contém vários elementos, cada um representando um segmento de dados numa mensagem.

Parâmetros

role

string

A identidade da entidade que cria a mensagem. Os seguintes valores são suportados:

  • user: isto indica que a mensagem é enviada por uma pessoa real, normalmente uma mensagem gerada pelo utilizador.
  • model: isto indica que a mensagem é gerada pelo modelo.

O valor model é usado para inserir mensagens do modelo na conversa durante conversas com várias interações.

parts

Part

Uma lista de partes ordenadas que compõem uma única mensagem. As diferentes partes podem ter diferentes tipos MIME da IANA.

Para ver os limites das entradas, como o número máximo de tokens ou o número de imagens, consulte as especificações do modelo na página Modelos Google.

Para calcular o número de tokens no seu pedido, consulte o artigo Obtenha a contagem de tokens.

parts

Um tipo de dados que contém conteúdo multimédia que faz parte de uma mensagem Content multipartes.

Parâmetros

text

Opcional: string

Um comando de texto ou um fragmento do código.

inlineData

Opcional: Blob

Dados inline em bytes não processados.

Para gemini-2.0-flash-lite e gemini-2.0-flash, pode especificar até 3000 imagens através de inlineData.

fileData

Opcional: fileData

Dados armazenados num ficheiro.

functionCall

Opcional: FunctionCall.

Contém uma string que representa o campo FunctionDeclaration.name e um objeto JSON estruturado que contém quaisquer parâmetros para a chamada de função prevista pelo modelo.

Consulte o artigo Chamada de funções.

functionResponse

Opcional: FunctionResponse.

O resultado de uma FunctionCall que contém uma string que representa o campo FunctionDeclaration.name e um objeto JSON estruturado que contém qualquer resultado da chamada de função. É usado como contexto para o modelo.

Consulte o artigo Chamada de funções.

videoMetadata

Opcional: VideoMetadata

Para a entrada de vídeo, o desvio de início e fim do vídeo no formato Duração e a velocidade de frames do vídeo . Por exemplo, para especificar um clipe de 10 segundos que começa às 1:00 com uma taxa de frames de 10 frames por segundo, defina o seguinte:

  • "startOffset": { "seconds": 60 }
  • "endOffset": { "seconds": 70 }
  • "fps": 10.0

Os metadados só devem ser especificados enquanto os dados de vídeo são apresentados em inlineData ou fileData.

blob

Blob de conteúdo. Se possível, envie como texto em vez de bytes não processados.

Parâmetros

mimeType

string

O tipo de suporte do ficheiro especificado nos campos data ou fileUri. Os valores aceitáveis incluem o seguinte:

Clique para expandir os tipos MIME

  • 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 gemini-2.0-flash-lite e gemini-2.0-flash, o comprimento máximo de um ficheiro de áudio é de 8,4 horas e o comprimento máximo de um ficheiro de vídeo (sem áudio) é de uma hora. Para mais informações, consulte os requisitos de áudio e vídeo do Gemini.

Os ficheiros de texto têm de estar codificados em UTF-8. O conteúdo do ficheiro de texto conta para o limite de tokens.

Não existe limite para a resolução das imagens.

data

bytes

A codificação base64 da imagem, do PDF ou do vídeo a incluir inline no comando. Quando inclui conteúdo multimédia inline, também tem de especificar o tipo de conteúdo multimédia (mimeType) dos dados.

Limite de tamanho: 20 MB

FileData

Dados de URI ou URL da Web.

Parâmetros

mimeType

string

Tipo MIME IANA dos dados.

fileUri

string

O URI ou o URL do ficheiro a incluir no comando. Os valores aceitáveis incluem o seguinte:

  • URI do contentor do Cloud Storage: o objeto tem de ser legível publicamente ou residir no mesmo projeto Google Cloud que está a enviar o pedido. Para gemini-2.0-flash e gemini-2.0-flash-lite, o limite de tamanho é de 2 GB.
  • URL HTTP: o URL do ficheiro tem de ser legível publicamente. Pode especificar um ficheiro de vídeo, um ficheiro de áudio e até 10 ficheiros de imagem por pedido. Os ficheiros de áudio, os ficheiros de vídeo e os documentos não podem exceder os 15 MB.
  • URL do vídeo do YouTube: o vídeo do YouTube tem de ser propriedade da conta que usou para iniciar sessão na Google Cloud consola ou ser público. Apenas é suportado um URL de vídeo do YouTube por pedido.

Quando especifica um fileURI, também tem de especificar o tipo de suporte (mimeType) do ficheiro. Se o VPC Service Controls estiver ativado, a especificação de um URL de ficheiro multimédia para fileURI não é suportada.

functionCall

Um functionCall previsto devolvido pelo modelo que contém uma string que representa o functionDeclaration.name e um objeto JSON estruturado que contém os parâmetros e os respetivos valores.

Parâmetros

name

string

O nome da função a chamar.

args

Struct

Os parâmetros e os valores da função no formato de objeto JSON.

Consulte o artigo Chamada de funções para ver detalhes dos parâmetros.

functionResponse

O resultado de um FunctionCall que contém uma string que representa o FunctionDeclaration.name. Também contém um objeto JSON estruturado com o resultado da função (e usa-o como contexto para o modelo). Este deve conter o resultado de um FunctionCall feito com base na previsão do modelo.

Parâmetros

name

string

O nome da função a chamar.

response

Struct

A resposta da função no formato de objeto JSON.

videoMetadata

Metadados que descrevem o conteúdo de vídeo de entrada.

Parâmetros

startOffset

Opcional: google.protobuf.Duration

O desvio de início do vídeo.

endOffset

Opcional: google.protobuf.Duration

O desvio do fim do vídeo.

fps

Opcional: double

A velocidade de frames do vídeo enviado ao modelo. A predefinição é 1.0 se não for especificado. O valor mínimo aceite é tão baixo quanto, mas não incluindo, 0.0. O valor máximo é 24.0.

safetySetting

Definições de segurança.

Parâmetros

category

Opcional: HarmCategory

A categoria de segurança para a qual configurar um limite. Os valores aceitáveis incluem o seguinte:

Clique para expandir as categorias de segurança

  • HARM_CATEGORY_SEXUALLY_EXPLICIT
  • HARM_CATEGORY_HATE_SPEECH
  • HARM_CATEGORY_HARASSMENT
  • HARM_CATEGORY_DANGEROUS_CONTENT

threshold

Opcional: HarmBlockThreshold

O limite para bloquear respostas que possam pertencer à categoria de segurança especificada com base na probabilidade.

  • OFF
  • BLOCK_NONE
  • BLOCK_LOW_AND_ABOVE
  • BLOCK_MEDIUM_AND_ABOVE
  • BLOCK_ONLY_HIGH

method

Opcional: HarmBlockMethod

Especifique se o limite é usado para a probabilidade ou a gravidade. Se não for especificado, o limite é usado para a pontuação de probabilidade.

harmCategory

Categorias de danos que bloqueiam conteúdo.

Parâmetros

HARM_CATEGORY_UNSPECIFIED

A categoria de danos não está especificada.

HARM_CATEGORY_HATE_SPEECH

A categoria de conteúdo prejudicial é incitamento ao ódio.

HARM_CATEGORY_DANGEROUS_CONTENT

A categoria de danos é conteúdo perigoso.

HARM_CATEGORY_HARASSMENT

A categoria de danos é assédio.

HARM_CATEGORY_SEXUALLY_EXPLICIT

A categoria de dano é conteúdo sexualmente explícito.

harmBlockThreshold

Níveis de limiares de probabilidade usados para bloquear uma resposta.

Parâmetros

HARM_BLOCK_THRESHOLD_UNSPECIFIED

Limite de bloqueio de danos não especificado.

BLOCK_LOW_AND_ABOVE

Bloquear o limite inferior e superior (ou seja, bloquear mais).

BLOCK_MEDIUM_AND_ABOVE

Bloquear o limite médio e superior.

BLOCK_ONLY_HIGH

Bloqueie apenas o limite elevado (ou seja, bloqueie menos).

BLOCK_NONE

Não bloquear nada.

OFF

Desativa a segurança se todas as categorias estiverem DESATIVADAS

harmBlockMethod

Um limiar de probabilidade que bloqueia uma resposta com base numa combinação de probabilidade e gravidade.

Parâmetros

HARM_BLOCK_METHOD_UNSPECIFIED

O método de bloqueio de danos não está especificado.

SEVERITY

O método de bloqueio de danos usa pontuações de probabilidade e gravidade.

PROBABILITY

O método de bloqueio de danos usa a pontuação de probabilidade.

generationConfig

Definições de configuração usadas ao gerar o comando.

Parâmetros

temperature

Opcional: float

A temperatura é usada para a amostragem durante a geração de respostas, que ocorre quando topP e topK são aplicados. A temperatura controla o grau de aleatoriedade na seleção de tokens. As temperaturas mais baixas são adequadas para comandos que requerem uma resposta menos aberta ou criativa, enquanto as temperaturas mais altas podem gerar resultados mais diversos ou criativos. Uma temperatura de 0 significa que os tokens de probabilidade mais elevada são sempre selecionados. Neste caso, as respostas para um determinado comando são maioritariamente determinísticas, mas ainda é possível uma pequena variação.

Se o modelo devolver uma resposta demasiado genérica, demasiado curta ou uma resposta alternativa, experimente aumentar a temperatura.

  • Intervalo para gemini-2.0-flash-lite: 0.0 - 2.0 (predefinição: 1.0)
  • Intervalo para gemini-2.0-flash: 0.0 - 2.0 (predefinição: 1.0)

Para mais informações, consulte os parâmetros de geração de conteúdo.

topP

Opcional: float

Se for especificado, é usada a amostragem do núcleo.

O Top-P altera a forma como o modelo seleciona tokens para a saída. Os tokens são selecionados do mais (ver top-K) para o menos provável até que a soma das respetivas probabilidades seja igual ao valor 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 top-P for 0.5, o modelo seleciona A ou B como o token seguinte através da temperatura e exclui C como candidato.

Especifique um valor inferior para respostas menos aleatórias e um valor superior para respostas mais aleatórias.

  • Intervalo: 0.0 - 1.0
  • Predefinição para gemini-2.0-flash-lite: 0.95
  • Predefinição para gemini-2.0-flash: 0.95

candidateCount

Opcional: int

O número de variações de respostas a devolver. Para cada pedido, são-lhe cobrados os tokens de saída de todos os candidatos, mas só lhe são cobrados uma vez os tokens de entrada.

A especificação de vários candidatos é uma funcionalidade de pré-visualização que funciona com generateContent (streamGenerateContent não é suportado). Os seguintes modelos são suportados:

  • gemini-2.0-flash-lite: 1-8, predefinição: 1
  • gemini-2.0-flash: 1-8, predefinição: 1

maxOutputTokens

Opcional: int

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

Especifique um valor inferior para respostas mais curtas e um valor superior para respostas potencialmente mais longas.

Para mais informações, consulte os parâmetros de geração de conteúdo.

stopSequences

Opcional: List[string]

Especifica uma lista de strings que indica ao modelo para parar de gerar texto se for encontrada uma das strings na resposta. Se uma string aparecer várias vezes na resposta, a resposta é truncada no local onde é encontrada pela primeira vez. As strings são sensíveis a maiúsculas e minúsculas.

Por exemplo, se a seguinte for a resposta devolvida quando stopSequences não estiver especificado:

public static string reverse(string myString)

Então, a resposta devolvida com stopSequences definido como ["Str", "reverse"] é:

public static string

Máximo de 5 itens na lista.

Para mais informações, consulte os parâmetros de geração de conteúdo.

presencePenalty

Opcional: float

Penalizações positivas.

Os valores positivos penalizam os tokens que já aparecem no texto gerado, aumentando a probabilidade de gerar conteúdo mais diversificado.

O valor máximo de presencePenalty é até, mas não incluindo, 2.0. O valor mínimo é -2.0.

frequencyPenalty

Opcional: float

Os valores positivos penalizam os tokens que aparecem repetidamente no texto gerado, diminuindo a probabilidade de repetir conteúdo.

Este valor máximo de frequencyPenalty é até, mas não inclui, 2.0. O valor mínimo é -2.0.

responseMimeType

Opcional: string (enum)

O tipo MIME da resposta de saída do texto candidato gerado.

Os seguintes tipos MIME são suportados:

  • application/json: resposta JSON nos candidatos.
  • text/plain (predefinição): saída de texto simples.
  • text/x.enum: para tarefas de classificação, gera um valor enum conforme definido no esquema de resposta.

Especifique o tipo de resposta adequado para evitar comportamentos não intencionais. Por exemplo, se precisar de uma resposta formatada em JSON, especifique application/json e não text/plain.

O text/plain não é suportado para utilização com o responseSchema.

responseSchema

Opcional: schema

O esquema que o texto candidato gerado tem de seguir. Para mais informações, consulte o artigo Controle o resultado gerado.

Para usar este parâmetro, tem de especificar um tipo MIME suportado diferente de text/plain para o parâmetro responseMimeType.

seed

Opcional: int

Quando a semente é fixada num valor específico, o modelo faz o seu melhor para fornecer a mesma resposta para pedidos repetidos. O resultado determinístico não é garantido. Além disso, a alteração das definições do modelo ou dos parâmetros, como a temperatura, pode provocar variações na resposta, mesmo quando usa o mesmo valor de semente. Por predefinição, é usado um valor de semente aleatório.

responseLogprobs

Opcional: boolean

Se for verdadeiro, devolve as probabilidades logarítmicas dos tokens escolhidos pelo modelo em cada passo. Por predefinição, este parâmetro está definido como false.

logprobs

Opcional: int

Devolve as probabilidades de registo dos tokens candidatos principais em cada passo de geração. O token escolhido pelo modelo pode não ser o mesmo que o token candidato principal em cada passo. Especifique o número de candidatos a devolver usando um valor inteiro no intervalo de 1-20.

Tem de ativar responseLogprobs para usar este parâmetro.

audioTimestamp

Opcional: boolean

Disponível para os seguintes modelos:

  • Gemini 2.0 Flash-Lite
  • Gemini 2.0 Flash

Ativa a compreensão da data/hora para ficheiros apenas de áudio.

Esta é uma funcionalidade de pré-visualização.

thinkingConfig

Opcional: object

Configuração do processo de raciocínio do modelo para os modelos Gemini 2.5.

O objeto thinkingConfig contém o seguinte campo:

  • thinkingBudget: integer. Por predefinição, o modelo controla automaticamente a quantidade de tokens que considera até um máximo de 8,192.

Corpo da resposta

{
  "candidates": [
    {
      "content": {
        "parts": [
          {
            "text": string
          }
        ]
      },
      "finishReason": enum (FinishReason),
      "safetyRatings": [
        {
          "category": enum (HarmCategory),
          "probability": enum (HarmProbability),
          "blocked": boolean
        }
      ],
      "citationMetadata": {
        "citations": [
          {
            "startIndex": integer,
            "endIndex": integer,
            "uri": string,
            "title": string,
            "license": string,
            "publicationDate": {
              "year": integer,
              "month": integer,
              "day": integer
            }
          }
        ]
      },
      "avgLogprobs": double,
      "logprobsResult": {
        "topCandidates": [
          {
            "candidates": [
              {
                "token": string,
                "logProbability": float
              }
            ]
          }
        ],
        "chosenCandidates": [
          {
            "token": string,
            "logProbability": float
          }
        ]
      }
    }
  ],
  "usageMetadata": {
    "promptTokenCount": integer,
    "candidatesTokenCount": integer,
    "totalTokenCount": integer
  },
  "modelVersion": string
}
Elemento de resposta Descrição
modelVersion O modelo e a versão usados para a geração. Por exemplo: gemini-2.0-flash-lite-001.
text O texto gerado.
finishReason O motivo pelo qual o modelo parou de gerar tokens. Se estiver vazio, o modelo não parou de gerar os tokens. Uma vez que a resposta usa o comando para contexto, não é possível alterar o comportamento da forma como o modelo para de gerar tokens.
  • FINISH_REASON_STOP: ponto de paragem natural do modelo ou sequência de paragem fornecida.
  • FINISH_REASON_MAX_TOKENS: Foi atingido o número máximo de tokens especificado no pedido.
  • FINISH_REASON_SAFETY: A geração de tokens foi interrompida porque a resposta foi denunciada por motivos de segurança. Tenha em atenção que Candidate.content está vazio se os filtros de conteúdo bloquearem o resultado.
  • FINISH_REASON_RECITATION: A geração de tokens foi interrompida porque a resposta foi denunciada por citações não autorizadas.
  • FINISH_REASON_BLOCKLIST: A geração de tokens foi interrompida porque a resposta inclui termos bloqueados.
  • FINISH_REASON_PROHIBITED_CONTENT: A geração de tokens foi interrompida porque a resposta foi denunciada por conteúdo proibido, como material relativo a abuso sexual infantil (CSAM).
  • FINISH_REASON_SPII: a geração de tokens foi interrompida porque a resposta foi denunciada por conter informações de identificação pessoal confidenciais (SPII).
  • FINISH_REASON_MALFORMED_FUNCTION_CALL: os candidatos foram bloqueados devido a uma chamada de função com formato incorreto e não analisável.
  • FINISH_REASON_OTHER: Todos os outros motivos que interromperam o token
  • FINISH_REASON_UNSPECIFIED: o motivo da conclusão não está especificado.
category A categoria de segurança para a qual configurar um limite. Os valores aceitáveis incluem o seguinte:

Clique para expandir as categorias de segurança

  • HARM_CATEGORY_SEXUALLY_EXPLICIT
  • HARM_CATEGORY_HATE_SPEECH
  • HARM_CATEGORY_HARASSMENT
  • HARM_CATEGORY_DANGEROUS_CONTENT
probability Os níveis de probabilidade de danos no conteúdo.
  • HARM_PROBABILITY_UNSPECIFIED
  • NEGLIGIBLE
  • LOW
  • MEDIUM
  • HIGH
blocked Uma sinalização booleana associada a um atributo de segurança que indica se a entrada ou a saída do modelo foi bloqueada.
startIndex Um número inteiro que especifica onde começa uma citação no elemento content. O elemento startIndex está em bytes e é calculado a partir da resposta codificada em UTF-8.
endIndex Um número inteiro que especifica onde termina uma citação no content. O elemento endIndex está em bytes e é calculado a partir da resposta codificada em UTF-8.
url O URL de uma fonte de citação. Exemplos de uma origem de URL podem ser um Website de notícias ou um repositório do GitHub.
title O título de uma fonte de citação. Alguns exemplos de títulos de origem podem ser o de um artigo de notícias ou um livro.
license A licença associada a uma citação.
publicationDate A data em que uma citação foi publicada. Os formatos válidos são YYYY, YYYY-MM e YYYY-MM-DD.
avgLogprobs Probabilidade logarítmica média do candidato.
logprobsResult Devolve os tokens candidatos principais (topCandidates) e os tokens escolhidos reais (chosenCandidates) em cada passo.
token Os modelos de IA generativa dividem os dados de texto em tokens para processamento, que podem ser carateres, palavras ou expressões.
logProbability Um valor de probabilidade de registo que indica a confiança do modelo para um token específico.
promptTokenCount Número de tokens no pedido.
candidatesTokenCount Número de tokens nas respostas.
totalTokenCount Número de tokens no pedido e nas respostas.

Exemplos

Geração de texto

Gerar uma resposta de texto a partir de uma entrada de texto.

SDK de IA gen para Python

from google import genai
from google.genai.types import HttpOptions

client = genai.Client(http_options=HttpOptions(api_version="v1"))
response = client.models.generate_content(
    model="gemini-2.5-flash",
    contents="How does AI work?",
)
print(response.text)
# Example response:
# Okay, let's break down how AI works. It's a broad field, so I'll focus on the ...
#
# Here's a simplified overview:
# ...

Python (OpenAI)

Pode chamar a API Inference através da biblioteca OpenAI. Para mais informações, consulte o artigo Chame modelos da Vertex AI através da biblioteca OpenAI.

from google.auth import default
import google.auth.transport.requests

import openai

# TODO(developer): Update and un-comment below lines
# project_id = "PROJECT_ID"
# location = "us-central1"

# Programmatically get an access token
credentials, _ = default(scopes=["https://www.googleapis.com/auth/cloud-platform"])
credentials.refresh(google.auth.transport.requests.Request())

# OpenAI Client
client = openai.OpenAI(
    base_url=f"https://{location}-aiplatform.googleapis.com/v1/projects/{project_id}/locations/{location}/endpoints/openapi",
    api_key=credentials.token,
)

response = client.chat.completions.create(
    model="google/gemini-2.0-flash-001",
    messages=[{"role": "user", "content": "Why is the sky blue?"}],
)

print(response)

Ir

import (
	"context"
	"fmt"
	"io"

	"google.golang.org/genai"
)

// generateWithText shows how to generate text using a text prompt.
func generateWithText(w io.Writer) error {
	ctx := context.Background()

	client, err := genai.NewClient(ctx, &genai.ClientConfig{
		HTTPOptions: genai.HTTPOptions{APIVersion: "v1"},
	})
	if err != nil {
		return fmt.Errorf("failed to create genai client: %w", err)
	}

	resp, err := client.Models.GenerateContent(ctx,
		"gemini-2.5-flash",
		genai.Text("How does AI work?"),
		nil,
	)
	if err != nil {
		return fmt.Errorf("failed to generate content: %w", err)
	}

	respText := resp.Text()

	fmt.Fprintln(w, respText)
	// Example response:
	// That's a great question! Understanding how AI works can feel like ...
	// ...
	// **1. The Foundation: Data and Algorithms**
	// ...

	return nil
}

Usar comando multimodal

Gerar uma resposta de texto a partir de uma entrada multimodal, como texto e uma imagem.

SDK de IA gen para Python

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.5-flash",
    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 ...

Python (OpenAI)

Pode chamar a API Inference através da biblioteca OpenAI. Para mais informações, consulte o artigo Chame modelos da Vertex AI através da biblioteca OpenAI.


from google.auth import default
import google.auth.transport.requests

import openai

# TODO(developer): Update and un-comment below lines
# project_id = "PROJECT_ID"
# location = "us-central1"

# Programmatically get an access token
credentials, _ = default(scopes=["https://www.googleapis.com/auth/cloud-platform"])
credentials.refresh(google.auth.transport.requests.Request())

# OpenAI Client
client = openai.OpenAI(
    base_url=f"https://{location}-aiplatform.googleapis.com/v1/projects/{project_id}/locations/{location}/endpoints/openapi",
    api_key=credentials.token,
)

response = client.chat.completions.create(
    model="google/gemini-2.0-flash-001",
    messages=[
        {
            "role": "user",
            "content": [
                {"type": "text", "text": "Describe the following image:"},
                {
                    "type": "image_url",
                    "image_url": "gs://cloud-samples-data/generative-ai/image/scones.jpg",
                },
            ],
        }
    ],
)

print(response)

Ir

import (
	"context"
	"fmt"
	"io"

	genai "google.golang.org/genai"
)

// generateWithTextImage shows how to generate text using both text and image input
func generateWithTextImage(w io.Writer) error {
	ctx := context.Background()

	client, err := genai.NewClient(ctx, &genai.ClientConfig{
		HTTPOptions: genai.HTTPOptions{APIVersion: "v1"},
	})
	if err != nil {
		return fmt.Errorf("failed to create genai client: %w", err)
	}

	modelName := "gemini-2.5-flash"
	contents := []*genai.Content{
		{Parts: []*genai.Part{
			{Text: "What is shown in this image?"},
			{FileData: &genai.FileData{
				// Image source: https://storage.googleapis.com/cloud-samples-data/generative-ai/image/scones.jpg
				FileURI:  "gs://cloud-samples-data/generative-ai/image/scones.jpg",
				MIMEType: "image/jpeg",
			}},
		},
			Role: "user"},
	}

	resp, err := client.Models.GenerateContent(ctx, modelName, contents, nil)
	if err != nil {
		return fmt.Errorf("failed to generate content: %w", err)
	}

	respText := resp.Text()

	fmt.Fprintln(w, respText)

	// Example response:
	// The image shows an overhead shot of a rustic, artistic arrangement on a surface that ...

	return nil
}

Resposta de texto de streaming

Gere uma resposta de modelo de streaming a partir de uma entrada de texto.

SDK de IA gen para Python

from google import genai
from google.genai.types import HttpOptions

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

for chunk in client.models.generate_content_stream(
    model="gemini-2.5-flash",
    contents="Why is the sky blue?",
):
    print(chunk.text, end="")
# Example response:
# The
#  sky appears blue due to a phenomenon called **Rayleigh scattering**. Here's
#  a breakdown of why:
# ...

Python (OpenAI)

Pode chamar a API Inference através da biblioteca OpenAI. Para mais informações, consulte o artigo Chame modelos da Vertex AI através da biblioteca OpenAI.

from google.auth import default
import google.auth.transport.requests

import openai

# TODO(developer): Update and un-comment below lines
# project_id = "PROJECT_ID"
# location = "us-central1"

# Programmatically get an access token
credentials, _ = default(scopes=["https://www.googleapis.com/auth/cloud-platform"])
credentials.refresh(google.auth.transport.requests.Request())

# OpenAI Client
client = openai.OpenAI(
    base_url=f"https://{location}-aiplatform.googleapis.com/v1/projects/{project_id}/locations/{location}/endpoints/openapi",
    api_key=credentials.token,
)

response = client.chat.completions.create(
    model="google/gemini-2.0-flash-001",
    messages=[{"role": "user", "content": "Why is the sky blue?"}],
    stream=True,
)
for chunk in response:
    print(chunk)

Ir

import (
	"context"
	"fmt"
	"io"

	genai "google.golang.org/genai"
)

// generateWithTextStream shows how to generate text stream using a text prompt.
func generateWithTextStream(w io.Writer) error {
	ctx := context.Background()

	client, err := genai.NewClient(ctx, &genai.ClientConfig{
		HTTPOptions: genai.HTTPOptions{APIVersion: "v1"},
	})
	if err != nil {
		return fmt.Errorf("failed to create genai client: %w", err)
	}

	modelName := "gemini-2.5-flash"
	contents := genai.Text("Why is the sky blue?")

	for resp, err := range client.Models.GenerateContentStream(ctx, modelName, contents, nil) {
		if err != nil {
			return fmt.Errorf("failed to generate content: %w", err)
		}

		chunk := resp.Text()

		fmt.Fprintln(w, chunk)
	}

	// Example response:
	// The
	//  sky is blue
	//  because of a phenomenon called **Rayleigh scattering**. Here's the breakdown:
	// ...

	return nil
}

Versões do modelo

Para usar a versão atualizada automaticamente, especifique o nome do modelo sem o número da versão final, por exemplo, gemini-2.0-flash em vez de gemini-2.0-flash-001.

Para mais informações, consulte o artigo Ciclo de vida e versões do modelo Gemini.

O que se segue?