Generating content

A API Gemini é compatível com a geração de conteúdo com imagens, áudio, código, ferramentas e muito mais. Para detalhes sobre cada um desses recursos, leia este artigo e confira o exemplo de código focado em tarefas ou os guias abrangentes.

Método: models.generateContent

Gera uma resposta do modelo com base em uma entrada GenerateContentRequest. Consulte o guia de geração de texto para informações detalhadas sobre o uso. As funcionalidades de entrada variam entre os modelos, incluindo os ajustados. Consulte o guia de modelos e o guia de ajuste para mais detalhes.

Endpoint

post https://generativelanguage.googleapis.com/v1beta/{model=models/*}:generateContent

Parâmetros de caminho

model string

Obrigatório. O nome do Model a ser usado para gerar a conclusão.

Formato: models/{model}. Ele tem o formato models/{model}.

Corpo da solicitação

O corpo da solicitação contém dados com a seguinte estrutura:

Campos
contents[] object (Content)

Obrigatório. O conteúdo da conversa atual com o modelo.

Para consultas de turno único, esta é uma instância única. Para consultas multiturno, como chat, esse é um campo repetido que contém o histórico da conversa e a solicitação mais recente.

tools[] object (Tool)

Opcional. Uma lista de Tools que o Model pode usar para gerar a próxima resposta.

Uma Tool é uma parte do código que permite ao sistema interagir com sistemas externos para realizar uma ação ou conjunto de ações fora do conhecimento e do escopo do Model. Os Tools aceitos são Function e codeExecution. Consulte os guias Chamada de função e Execução de código para saber mais.

toolConfig object (ToolConfig)

Opcional. Configuração da ferramenta para qualquer Tool especificado na solicitação. Consulte o guia de chamada de função para ver um exemplo de uso.

safetySettings[] object (SafetySetting)

Opcional. Uma lista de instâncias SafetySetting exclusivas para bloquear conteúdo não seguro.

Isso será aplicado no GenerateContentRequest.contents e no GenerateContentResponse.candidates. Não pode haver mais de uma configuração para cada tipo de SafetyCategory. A API bloqueia conteúdos e respostas que não atendem aos limites definidos por essas configurações. Essa lista substitui as configurações padrão de cada SafetyCategory especificado em "safetySettings". Se não houver um SafetySetting para um determinado SafetyCategory fornecido na lista, a API vai usar a configuração de segurança padrão para essa categoria. As categorias de dano HARM_CATEGORY_HATE_SPEECH, HARM_CATEGORY_SEXUALLY_EXPLICIT, HARM_CATEGORY_DANGEROUS_CONTENT, HARM_CATEGORY_HARASSMENT, HARM_CATEGORY_CIVIC_INTEGRITY e HARM_CATEGORY_JAILBREAK são aceitas. Consulte o guia para informações detalhadas sobre as configurações de segurança disponíveis. Consulte também as orientações de segurança para saber como incorporar considerações de segurança aos seus aplicativos de IA.

systemInstruction object (Content)

Opcional. O desenvolvedor definiu instruções do sistema. No momento, apenas texto.

generationConfig object (GenerationConfig)

Opcional. Opções de configuração para geração e saídas de modelos.

cachedContent string

Opcional. O nome do conteúdo em cache a ser usado como contexto para disponibilizar a previsão. Formato: cachedContents/{cachedContent}

serviceTier enum (ServiceTier)

Opcional. O nível de serviço da solicitação.

store boolean

Opcional. Configura o comportamento de geração de registros para uma determinada solicitação. Se definido, ele terá precedência sobre a configuração de geração de registros no nível do projeto.

Exemplo de solicitação

Texto

Python

from google import genai

client = genai.Client()
response = client.models.generate_content(
    model="gemini-3.7-flash", contents="Write a story about a magic backpack."
)
print(response.text)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });

const response = await ai.models.generateContent({
  model: "gemini-3.7-flash",
  contents: "Write a story about a magic backpack.",
});
console.log(response.text);

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}
contents := []*genai.Content{
	genai.NewContentFromText("Write a story about a magic backpack.", genai.RoleUser),
}
response, err := client.Models.GenerateContent(ctx, "gemini-3.7-flash", contents, nil)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

Shell

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts":[{"text": "Write a story about a magic backpack."}]
        }]
       }' 2> /dev/null

Java

Client client = new Client();

GenerateContentResponse response =
        client.models.generateContent(
                "gemini-3.7-flash",
                "Write a story about a magic backpack.",
                null);

System.out.println(response.text());

Imagem

Python

from google import genai
import PIL.Image

client = genai.Client()
organ = PIL.Image.open(media / "organ.jpg")
response = client.models.generate_content(
    model="gemini-3.7-flash", contents=["Tell me about this instrument", organ]
)
print(response.text)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });

const organ = await ai.files.upload({
  file: path.join(media, "organ.jpg"),
});

const response = await ai.models.generateContent({
  model: "gemini-3.7-flash",
  contents: [
    createUserContent([
      "Tell me about this instrument", 
      createPartFromUri(organ.uri, organ.mimeType)
    ]),
  ],
});
console.log(response.text);

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

file, err := client.Files.UploadFromPath(
	ctx, 
	filepath.Join(getMedia(), "organ.jpg"), 
	&genai.UploadFileConfig{
		MIMEType : "image/jpeg",
	},
)
if err != nil {
	log.Fatal(err)
}
parts := []*genai.Part{
	genai.NewPartFromText("Tell me about this instrument"),
	genai.NewPartFromURI(file.URI, file.MIMEType),
}
contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}

response, err := client.Models.GenerateContent(ctx, "gemini-3.7-flash", contents, nil)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

Shell

# Use a temporary file to hold the base64 encoded image data
TEMP_B64=$(mktemp)
trap 'rm -f "$TEMP_B64"' EXIT
base64 $B64FLAGS $IMG_PATH > "$TEMP_B64"

# Use a temporary file to hold the JSON payload
TEMP_JSON=$(mktemp)
trap 'rm -f "$TEMP_JSON"' EXIT

cat > "$TEMP_JSON" << EOF
{
  "contents": [{
    "parts":[
      {"text": "Tell me about this instrument"},
      {
        "inline_data": {
          "mime_type":"image/jpeg",
          "data": "$(cat "$TEMP_B64")"
        }
      }
    ]
  }]
}
EOF

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d "@$TEMP_JSON" 2> /dev/null

Java

Client client = new Client();

String path = media_path + "organ.jpg";
byte[] imageData = Files.readAllBytes(Paths.get(path));

Content content =
        Content.fromParts(
                Part.fromText("Tell me about this instrument."),
                Part.fromBytes(imageData, "image/jpeg"));

GenerateContentResponse response = client.models.generateContent("gemini-3.7-flash", content, null);

System.out.println(response.text());

Áudio

Python

from google import genai

client = genai.Client()
sample_audio = client.files.upload(file=media / "sample.mp3")
response = client.models.generate_content(
    model="gemini-3.7-flash",
    contents=["Give me a summary of this audio file.", sample_audio],
)
print(response.text)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });

const audio = await ai.files.upload({
  file: path.join(media, "sample.mp3"),
});

const response = await ai.models.generateContent({
  model: "gemini-3.7-flash",
  contents: [
    createUserContent([
      "Give me a summary of this audio file.",
      createPartFromUri(audio.uri, audio.mimeType),
    ]),
  ],
});
console.log(response.text);

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

file, err := client.Files.UploadFromPath(
	ctx, 
	filepath.Join(getMedia(), "sample.mp3"), 
	&genai.UploadFileConfig{
		MIMEType : "audio/mpeg",
	},
)
if err != nil {
	log.Fatal(err)
}

parts := []*genai.Part{
	genai.NewPartFromText("Give me a summary of this audio file."),
	genai.NewPartFromURI(file.URI, file.MIMEType),
}

contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}

response, err := client.Models.GenerateContent(ctx, "gemini-3.7-flash", contents, nil)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

Shell

# Use File API to upload audio data to API request.
MIME_TYPE=$(file -b --mime-type "${AUDIO_PATH}")
NUM_BYTES=$(wc -c < "${AUDIO_PATH}")
DISPLAY_NAME=AUDIO

tmp_header_file=upload-header.tmp

# Initial resumable request defining metadata.
# The upload url is in the response headers dump them to a file.
curl "${BASE_URL}/upload/v1beta/files?key=${GEMINI_API_KEY}" \
  -D upload-header.tmp \
  -H "X-Goog-Upload-Protocol: resumable" \
  -H "X-Goog-Upload-Command: start" \
  -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \
  -H "Content-Type: application/json" \
  -d "{'file': {'display_name': '${DISPLAY_NAME}'}}" 2> /dev/null

upload_url=$(grep -i "x-goog-upload-url: " "${tmp_header_file}" | cut -d" " -f2 | tr -d "\r")
rm "${tmp_header_file}"

# Upload the actual bytes.
curl "${upload_url}" \
  -H "Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Offset: 0" \
  -H "X-Goog-Upload-Command: upload, finalize" \
  --data-binary "@${AUDIO_PATH}" 2> /dev/null > file_info.json

file_uri=$(jq ".file.uri" file_info.json)
echo file_uri=$file_uri

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts":[
          {"text": "Please describe this file."},
          {"file_data":{"mime_type": "audio/mpeg", "file_uri": '$file_uri'}}]
        }]
       }' 2> /dev/null > response.json

cat response.json
echo

jq ".candidates[].content.parts[].text" response.json

Vídeo

Python

from google import genai
import time

client = genai.Client()
# Video clip (CC BY 3.0) from https://peach.blender.org/download/
myfile = client.files.upload(file=media / "Big_Buck_Bunny.mp4")
print(f"{myfile=}")

# Poll until the video file is completely processed (state becomes ACTIVE).
while not myfile.state or myfile.state.name != "ACTIVE":
    print("Processing video...")
    print("File state:", myfile.state)
    time.sleep(5)
    myfile = client.files.get(name=myfile.name)

response = client.models.generate_content(
    model="gemini-3.7-flash", contents=[myfile, "Describe this video clip"]
)
print(f"{response.text=}")

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });

let video = await ai.files.upload({
  file: path.join(media, 'Big_Buck_Bunny.mp4'),
});

// Poll until the video file is completely processed (state becomes ACTIVE).
while (!video.state || video.state.toString() !== 'ACTIVE') {
  console.log('Processing video...');
  console.log('File state: ', video.state);
  await sleep(5000);
  video = await ai.files.get({name: video.name});
}

const response = await ai.models.generateContent({
  model: "gemini-3.7-flash",
  contents: [
    createUserContent([
      "Describe this video clip",
      createPartFromUri(video.uri, video.mimeType),
    ]),
  ],
});
console.log(response.text);

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

file, err := client.Files.UploadFromPath(
	ctx, 
	filepath.Join(getMedia(), "Big_Buck_Bunny.mp4"), 
	&genai.UploadFileConfig{
		MIMEType : "video/mp4",
	},
)
if err != nil {
	log.Fatal(err)
}

// Poll until the video file is completely processed (state becomes ACTIVE).
for file.State == genai.FileStateUnspecified || file.State != genai.FileStateActive {
	fmt.Println("Processing video...")
	fmt.Println("File state:", file.State)
	time.Sleep(5 * time.Second)

	file, err = client.Files.Get(ctx, file.Name, nil)
	if err != nil {
		log.Fatal(err)
	}
}

parts := []*genai.Part{
	genai.NewPartFromText("Describe this video clip"),
	genai.NewPartFromURI(file.URI, file.MIMEType),
}

contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}

response, err := client.Models.GenerateContent(ctx, "gemini-3.7-flash", contents, nil)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

Shell

# Use File API to upload audio data to API request.
MIME_TYPE=$(file -b --mime-type "${VIDEO_PATH}")
NUM_BYTES=$(wc -c < "${VIDEO_PATH}")
DISPLAY_NAME=VIDEO

# Initial resumable request defining metadata.
# The upload url is in the response headers dump them to a file.
curl "${BASE_URL}/upload/v1beta/files?key=${GEMINI_API_KEY}" \
  -D "${tmp_header_file}" \
  -H "X-Goog-Upload-Protocol: resumable" \
  -H "X-Goog-Upload-Command: start" \
  -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \
  -H "Content-Type: application/json" \
  -d "{'file': {'display_name': '${DISPLAY_NAME}'}}" 2> /dev/null

upload_url=$(grep -i "x-goog-upload-url: " "${tmp_header_file}" | cut -d" " -f2 | tr -d "\r")
rm "${tmp_header_file}"

# Upload the actual bytes.
curl "${upload_url}" \
  -H "Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Offset: 0" \
  -H "X-Goog-Upload-Command: upload, finalize" \
  --data-binary "@${VIDEO_PATH}" 2> /dev/null > file_info.json

file_uri=$(jq ".file.uri" file_info.json)
echo file_uri=$file_uri

state=$(jq ".file.state" file_info.json)
echo state=$state

name=$(jq ".file.name" file_info.json)
echo name=$name

while [[ "($state)" = *"PROCESSING"* ]];
do
  echo "Processing video..."
  sleep 5
  # Get the file of interest to check state
  curl https://generativelanguage.googleapis.com/v1beta/files/$name > file_info.json
  state=$(jq ".file.state" file_info.json)
done

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts":[
          {"text": "Transcribe the audio from this video, giving timestamps for salient events in the video. Also provide visual descriptions."},
          {"file_data":{"mime_type": "video/mp4", "file_uri": '$file_uri'}}]
        }]
       }' 2> /dev/null > response.json

cat response.json
echo

jq ".candidates[].content.parts[].text" response.json

PDF

Python

from google import genai

client = genai.Client()
sample_pdf = client.files.upload(file=media / "test.pdf")
response = client.models.generate_content(
    model="gemini-3.7-flash",
    contents=["Give me a summary of this document:", sample_pdf],
)
print(f"{response.text=}")

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

file, err := client.Files.UploadFromPath(
	ctx, 
	filepath.Join(getMedia(), "test.pdf"), 
	&genai.UploadFileConfig{
		MIMEType : "application/pdf",
	},
)
if err != nil {
	log.Fatal(err)
}

parts := []*genai.Part{
	genai.NewPartFromText("Give me a summary of this document:"),
	genai.NewPartFromURI(file.URI, file.MIMEType),
}

contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}

response, err := client.Models.GenerateContent(ctx, "gemini-3.7-flash", contents, nil)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

Shell

MIME_TYPE=$(file -b --mime-type "${PDF_PATH}")
NUM_BYTES=$(wc -c < "${PDF_PATH}")
DISPLAY_NAME=TEXT


echo $MIME_TYPE
tmp_header_file=upload-header.tmp

# Initial resumable request defining metadata.
# The upload url is in the response headers dump them to a file.
curl "${BASE_URL}/upload/v1beta/files?key=${GEMINI_API_KEY}" \
  -D upload-header.tmp \
  -H "X-Goog-Upload-Protocol: resumable" \
  -H "X-Goog-Upload-Command: start" \
  -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \
  -H "Content-Type: application/json" \
  -d "{'file': {'display_name': '${DISPLAY_NAME}'}}" 2> /dev/null

upload_url=$(grep -i "x-goog-upload-url: " "${tmp_header_file}" | cut -d" " -f2 | tr -d "\r")
rm "${tmp_header_file}"

# Upload the actual bytes.
curl "${upload_url}" \
  -H "Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Offset: 0" \
  -H "X-Goog-Upload-Command: upload, finalize" \
  --data-binary "@${PDF_PATH}" 2> /dev/null > file_info.json

file_uri=$(jq ".file.uri" file_info.json)
echo file_uri=$file_uri

# Now generate content using that file
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts":[
          {"text": "Can you add a few more lines to this poem?"},
          {"file_data":{"mime_type": "application/pdf", "file_uri": '$file_uri'}}]
        }]
       }' 2> /dev/null > response.json

cat response.json
echo

jq ".candidates[].content.parts[].text" response.json

Chat

Python

from google import genai
from google.genai import types

client = genai.Client()
# Pass initial history using the "history" argument
chat = client.chats.create(
    model="gemini-3.7-flash",
    history=[
        types.Content(role="user", parts=[types.Part(text="Hello")]),
        types.Content(
            role="model",
            parts=[
                types.Part(
                    text="Great to meet you. What would you like to know?"
                )
            ],
        ),
    ],
)
response = chat.send_message(message="I have 2 dogs in my house.")
print(response.text)
response = chat.send_message(message="How many paws are in my house?")
print(response.text)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
const chat = ai.chats.create({
  model: "gemini-3.7-flash",
  history: [
    {
      role: "user",
      parts: [{ text: "Hello" }],
    },
    {
      role: "model",
      parts: [{ text: "Great to meet you. What would you like to know?" }],
    },
  ],
});

const response1 = await chat.sendMessage({
  message: "I have 2 dogs in my house.",
});
console.log("Chat response 1:", response1.text);

const response2 = await chat.sendMessage({
  message: "How many paws are in my house?",
});
console.log("Chat response 2:", response2.text);

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

// Pass initial history using the History field.
history := []*genai.Content{
	genai.NewContentFromText("Hello", genai.RoleUser),
	genai.NewContentFromText("Great to meet you. What would you like to know?", genai.RoleModel),
}

chat, err := client.Chats.Create(ctx, "gemini-3.7-flash", nil, history)
if err != nil {
	log.Fatal(err)
}

firstResp, err := chat.SendMessage(ctx, genai.Part{Text: "I have 2 dogs in my house."})
if err != nil {
	log.Fatal(err)
}
fmt.Println(firstResp.Text())

secondResp, err := chat.SendMessage(ctx, genai.Part{Text: "How many paws are in my house?"})
if err != nil {
	log.Fatal(err)
}
fmt.Println(secondResp.Text())

Shell

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [
        {"role":"user",
         "parts":[{
           "text": "Hello"}]},
        {"role": "model",
         "parts":[{
           "text": "Great to meet you. What would you like to know?"}]},
        {"role":"user",
         "parts":[{
           "text": "I have two dogs in my house. How many paws are in my house?"}]},
      ]
    }' 2> /dev/null | grep "text"

Java

Client client = new Client();

Content userContent = Content.fromParts(Part.fromText("Hello"));
Content modelContent =
        Content.builder()
                .role("model")
                .parts(
                        Collections.singletonList(
                                Part.fromText("Great to meet you. What would you like to know?")
                        )
                ).build();

Chat chat = client.chats.create(
        "gemini-3.7-flash",
        GenerateContentConfig.builder()
                .systemInstruction(userContent)
                .systemInstruction(modelContent)
                .build()
);

GenerateContentResponse response1 = chat.sendMessage("I have 2 dogs in my house.");
System.out.println(response1.text());

GenerateContentResponse response2 = chat.sendMessage("How many paws are in my house?");
System.out.println(response2.text());

Cache

Python

from google import genai
from google.genai import types

client = genai.Client()
document = client.files.upload(file=media / "a11.txt")
model_name = "gemini-3.7-flash"

cache = client.caches.create(
    model=model_name,
    config=types.CreateCachedContentConfig(
        contents=[document],
        system_instruction="You are an expert analyzing transcripts.",
    ),
)
print(cache)

response = client.models.generate_content(
    model=model_name,
    contents="Please summarize this transcript",
    config=types.GenerateContentConfig(cached_content=cache.name),
)
print(response.text)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
const filePath = path.join(media, "a11.txt");
const document = await ai.files.upload({
  file: filePath,
  config: { mimeType: "text/plain" },
});
console.log("Uploaded file name:", document.name);
const modelName = "gemini-3.7-flash";

const contents = [
  createUserContent(createPartFromUri(document.uri, document.mimeType)),
];

const cache = await ai.caches.create({
  model: modelName,
  config: {
    contents: contents,
    systemInstruction: "You are an expert analyzing transcripts.",
  },
});
console.log("Cache created:", cache);

const response = await ai.models.generateContent({
  model: modelName,
  contents: "Please summarize this transcript",
  config: { cachedContent: cache.name },
});
console.log("Response text:", response.text);

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"), 
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

modelName := "gemini-3.7-flash"
document, err := client.Files.UploadFromPath(
	ctx, 
	filepath.Join(getMedia(), "a11.txt"), 
	&genai.UploadFileConfig{
		MIMEType : "text/plain",
	},
)
if err != nil {
	log.Fatal(err)
}
parts := []*genai.Part{
	genai.NewPartFromURI(document.URI, document.MIMEType),
}
contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}
cache, err := client.Caches.Create(ctx, modelName, &genai.CreateCachedContentConfig{
	Contents: contents,
	SystemInstruction: genai.NewContentFromText(
		"You are an expert analyzing transcripts.", genai.RoleUser,
	),
})
if err != nil {
	log.Fatal(err)
}
fmt.Println("Cache created:")
fmt.Println(cache)

// Use the cache for generating content.
response, err := client.Models.GenerateContent(
	ctx,
	modelName,
	genai.Text("Please summarize this transcript"),
	&genai.GenerateContentConfig{
		CachedContent: cache.Name,
	},
)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

Modelo ajustado

Python

# With Gemini 2 we're launching a new SDK. See the following doc for details.
# https://ai.google.dev/gemini-api/docs/migrate

Modo JSON

Python

from google import genai
from google.genai import types
from typing_extensions import TypedDict

class Recipe(TypedDict):
    recipe_name: str
    ingredients: list[str]

client = genai.Client()
result = client.models.generate_content(
    model="gemini-3.7-flash",
    contents="List a few popular cookie recipes.",
    config=types.GenerateContentConfig(
        response_mime_type="application/json", response_schema=list[Recipe]
    ),
)
print(result)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
const response = await ai.models.generateContent({
  model: "gemini-3.7-flash",
  contents: "List a few popular cookie recipes.",
  config: {
    responseMimeType: "application/json",
    responseSchema: {
      type: "array",
      items: {
        type: "object",
        properties: {
          recipeName: { type: "string" },
          ingredients: { type: "array", items: { type: "string" } },
        },
        required: ["recipeName", "ingredients"],
      },
    },
  },
});
console.log(response.text);

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"), 
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

schema := &genai.Schema{
	Type: genai.TypeArray,
	Items: &genai.Schema{
		Type: genai.TypeObject,
		Properties: map[string]*genai.Schema{
			"recipe_name": {Type: genai.TypeString},
			"ingredients": {
				Type:  genai.TypeArray,
				Items: &genai.Schema{Type: genai.TypeString},
			},
		},
		Required: []string{"recipe_name"},
	},
}

config := &genai.GenerateContentConfig{
	ResponseMIMEType: "application/json",
	ResponseSchema:   schema,
}

response, err := client.Models.GenerateContent(
	ctx,
	"gemini-3.7-flash",
	genai.Text("List a few popular cookie recipes."),
	config,
)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

Shell

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
    "contents": [{
      "parts":[
        {"text": "List 5 popular cookie recipes"}
        ]
    }],
    "generationConfig": {
        "response_mime_type": "application/json",
        "response_schema": {
          "type": "ARRAY",
          "items": {
            "type": "OBJECT",
            "properties": {
              "recipe_name": {"type":"STRING"},
            }
          }
        }
    }
}' 2> /dev/null | head

Java

Client client = new Client();

Schema recipeSchema = Schema.builder()
        .type(Array.class.getSimpleName())
        .items(Schema.builder()
                .type(Object.class.getSimpleName())
                .properties(
                        Map.of("recipe_name", Schema.builder()
                                        .type(String.class.getSimpleName())
                                        .build(),
                                "ingredients", Schema.builder()
                                        .type(Array.class.getSimpleName())
                                        .items(Schema.builder()
                                                .type(String.class.getSimpleName())
                                                .build())
                                        .build())
                )
                .required(List.of("recipe_name", "ingredients"))
                .build())
        .build();

GenerateContentConfig config =
        GenerateContentConfig.builder()
                .responseMimeType("application/json")
                .responseSchema(recipeSchema)
                .build();

GenerateContentResponse response =
        client.models.generateContent(
                "gemini-3.7-flash",
                "List a few popular cookie recipes.",
                config);

System.out.println(response.text());

Execução de código

Python

from google import genai
from google.genai import types

client = genai.Client()
response = client.models.generate_content(
    model="gemini-3.7-flash",
    contents=(
        "Write and execute code that calculates the sum of the first 50 prime numbers. "
        "Ensure that only the executable code and its resulting output are generated."
    ),
)
# Each part may contain text, executable code, or an execution result.
for part in response.candidates[0].content.parts:
    print(part, "\n")

print("-" * 80)
# The .text accessor concatenates the parts into a markdown-formatted text.
print("\n", response.text)

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

response, err := client.Models.GenerateContent(
	ctx,
	"gemini-3.7-flash",
	genai.Text(
		`Write and execute code that calculates the sum of the first 50 prime numbers.
		 Ensure that only the executable code and its resulting output are generated.`,
	),
	&genai.GenerateContentConfig{},
)
if err != nil {
	log.Fatal(err)
}

// Print the response.
printResponse(response)

fmt.Println("--------------------------------------------------------------------------------")
fmt.Println(response.Text())

Java

Client client = new Client();

String prompt = """
        Write and execute code that calculates the sum of the first 50 prime numbers.
        Ensure that only the executable code and its resulting output are generated.
        """;

GenerateContentResponse response =
        client.models.generateContent(
                "gemini-3.7-flash",
                prompt,
                null);

for (Part part : response.candidates().get().getFirst().content().get().parts().get()) {
    System.out.println(part + "\n");
}

System.out.println("-".repeat(80));
System.out.println(response.text());

Chamadas de função

Python

from google import genai
from google.genai import types

client = genai.Client()

def add(a: float, b: float) -> float:
    """returns a + b."""
    return a + b

def subtract(a: float, b: float) -> float:
    """returns a - b."""
    return a - b

def multiply(a: float, b: float) -> float:
    """returns a * b."""
    return a * b

def divide(a: float, b: float) -> float:
    """returns a / b."""
    return a / b

# Create a chat session; function calling (via tools) is enabled in the config.
chat = client.chats.create(
    model="gemini-3.7-flash",
    config=types.GenerateContentConfig(tools=[add, subtract, multiply, divide]),
)
response = chat.send_message(
    message="I have 57 cats, each owns 44 mittens, how many mittens is that in total?"
)
print(response.text)

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}
modelName := "gemini-3.7-flash"

// Create the function declarations for arithmetic operations.
addDeclaration := createArithmeticToolDeclaration("addNumbers", "Return the result of adding two numbers.")
subtractDeclaration := createArithmeticToolDeclaration("subtractNumbers", "Return the result of subtracting the second number from the first.")
multiplyDeclaration := createArithmeticToolDeclaration("multiplyNumbers", "Return the product of two numbers.")
divideDeclaration := createArithmeticToolDeclaration("divideNumbers", "Return the quotient of dividing the first number by the second.")

// Group the function declarations as a tool.
tools := []*genai.Tool{
	{
		FunctionDeclarations: []*genai.FunctionDeclaration{
			addDeclaration,
			subtractDeclaration,
			multiplyDeclaration,
			divideDeclaration,
		},
	},
}

// Create the content prompt.
contents := []*genai.Content{
	genai.NewContentFromText(
		"I have 57 cats, each owns 44 mittens, how many mittens is that in total?", genai.RoleUser,
	),
}

// Set up the generate content configuration with function calling enabled.
config := &genai.GenerateContentConfig{
	Tools: tools,
	ToolConfig: &genai.ToolConfig{
		FunctionCallingConfig: &genai.FunctionCallingConfig{
			// The mode equivalent to FunctionCallingConfigMode.ANY in JS.
			Mode: genai.FunctionCallingConfigModeAny,
		},
	},
}

genContentResp, err := client.Models.GenerateContent(ctx, modelName, contents, config)
if err != nil {
	log.Fatal(err)
}

// Assume the response includes a list of function calls.
if len(genContentResp.FunctionCalls()) == 0 {
	log.Println("No function call returned from the AI.")
	return nil
}
functionCall := genContentResp.FunctionCalls()[0]
log.Printf("Function call: %+v\n", functionCall)

// Marshal the Args map into JSON bytes.
argsMap, err := json.Marshal(functionCall.Args)
if err != nil {
	log.Fatal(err)
}

// Unmarshal the JSON bytes into the ArithmeticArgs struct.
var args ArithmeticArgs
if err := json.Unmarshal(argsMap, &args); err != nil {
	log.Fatal(err)
}

// Map the function name to the actual arithmetic function.
var result float64
switch functionCall.Name {
	case "addNumbers":
		result = add(args.FirstParam, args.SecondParam)
	case "subtractNumbers":
		result = subtract(args.FirstParam, args.SecondParam)
	case "multiplyNumbers":
		result = multiply(args.FirstParam, args.SecondParam)
	case "divideNumbers":
		result = divide(args.FirstParam, args.SecondParam)
	default:
		return fmt.Errorf("unimplemented function: %s", functionCall.Name)
}
log.Printf("Function result: %v\n", result)

// Prepare the final result message as content.
resultContents := []*genai.Content{
	genai.NewContentFromText("The final result is " + fmt.Sprintf("%v", result), genai.RoleUser),
}

// Use GenerateContent to send the final result.
finalResponse, err := client.Models.GenerateContent(ctx, modelName, resultContents, &genai.GenerateContentConfig{})
if err != nil {
	log.Fatal(err)
}

printResponse(finalResponse)

Node.js

  // Make sure to include the following import:
  // import {GoogleGenAI} from '@google/genai';
  const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });

  /**
   * The add function returns the sum of two numbers.
   * @param {number} a
   * @param {number} b
   * @returns {number}
   */
  function add(a, b) {
    return a + b;
  }

  /**
   * The subtract function returns the difference (a - b).
   * @param {number} a
   * @param {number} b
   * @returns {number}
   */
  function subtract(a, b) {
    return a - b;
  }

  /**
   * The multiply function returns the product of two numbers.
   * @param {number} a
   * @param {number} b
   * @returns {number}
   */
  function multiply(a, b) {
    return a * b;
  }

  /**
   * The divide function returns the quotient of a divided by b.
   * @param {number} a
   * @param {number} b
   * @returns {number}
   */
  function divide(a, b) {
    return a / b;
  }

  const addDeclaration = {
    name: "addNumbers",
    parameters: {
      type: "object",
      description: "Return the result of adding two numbers.",
      properties: {
        firstParam: {
          type: "number",
          description:
            "The first parameter which can be an integer or a floating point number.",
        },
        secondParam: {
          type: "number",
          description:
            "The second parameter which can be an integer or a floating point number.",
        },
      },
      required: ["firstParam", "secondParam"],
    },
  };

  const subtractDeclaration = {
    name: "subtractNumbers",
    parameters: {
      type: "object",
      description:
        "Return the result of subtracting the second number from the first.",
      properties: {
        firstParam: {
          type: "number",
          description: "The first parameter.",
        },
        secondParam: {
          type: "number",
          description: "The second parameter.",
        },
      },
      required: ["firstParam", "secondParam"],
    },
  };

  const multiplyDeclaration = {
    name: "multiplyNumbers",
    parameters: {
      type: "object",
      description: "Return the product of two numbers.",
      properties: {
        firstParam: {
          type: "number",
          description: "The first parameter.",
        },
        secondParam: {
          type: "number",
          description: "The second parameter.",
        },
      },
      required: ["firstParam", "secondParam"],
    },
  };

  const divideDeclaration = {
    name: "divideNumbers",
    parameters: {
      type: "object",
      description:
        "Return the quotient of dividing the first number by the second.",
      properties: {
        firstParam: {
          type: "number",
          description: "The first parameter.",
        },
        secondParam: {
          type: "number",
          description: "The second parameter.",
        },
      },
      required: ["firstParam", "secondParam"],
    },
  };

  // Step 1: Call generateContent with function calling enabled.
  const generateContentResponse = await ai.models.generateContent({
    model: "gemini-3.7-flash",
    contents:
      "I have 57 cats, each owns 44 mittens, how many mittens is that in total?",
    config: {
      toolConfig: {
        functionCallingConfig: {
          mode: FunctionCallingConfigMode.ANY,
        },
      },
      tools: [
        {
          functionDeclarations: [
            addDeclaration,
            subtractDeclaration,
            multiplyDeclaration,
            divideDeclaration,
          ],
        },
      ],
    },
  });

  // Step 2: Extract the function call.(
  // Assuming the response contains a 'functionCalls' array.
  const functionCall =
    generateContentResponse.functionCalls &&
    generateContentResponse.functionCalls[0];
  console.log(functionCall);

  // Parse the arguments.
  const args = functionCall.args;
  // Expected args format: { firstParam: number, secondParam: number }

  // Step 3: Invoke the actual function based on the function name.
  const functionMapping = {
    addNumbers: add,
    subtractNumbers: subtract,
    multiplyNumbers: multiply,
    divideNumbers: divide,
  };
  const func = functionMapping[functionCall.name];
  if (!func) {
    console.error("Unimplemented error:", functionCall.name);
    return generateContentResponse;
  }
  const resultValue = func(args.firstParam, args.secondParam);
  console.log("Function result:", resultValue);

  // Step 4: Use the chat API to send the result as the final answer.
  const chat = ai.chats.create({ model: "gemini-3.7-flash" });
  const chatResponse = await chat.sendMessage({
    message: "The final result is " + resultValue,
  });
  console.log(chatResponse.text);
  return chatResponse;
}

Shell


cat > tools.json << EOF
{
  "function_declarations": [
    {
      "name": "enable_lights",
      "description": "Turn on the lighting system."
    },
    {
      "name": "set_light_color",
      "description": "Set the light color. Lights must be enabled for this to work.",
      "parameters": {
        "type": "object",
        "properties": {
          "rgb_hex": {
            "type": "string",
            "description": "The light color as a 6-digit hex string, e.g. ff0000 for red."
          }
        },
        "required": [
          "rgb_hex"
        ]
      }
    },
    {
      "name": "stop_lights",
      "description": "Turn off the lighting system."
    }
  ]
} 
EOF

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
  -H 'Content-Type: application/json' \
  -d @<(echo '
  {
    "system_instruction": {
      "parts": {
        "text": "You are a helpful lighting system bot. You can turn lights on and off, and you can set the color. Do not perform any other tasks."
      }
    },
    "tools": ['$(cat tools.json)'],

    "tool_config": {
      "function_calling_config": {"mode": "auto"}
    },

    "contents": {
      "role": "user",
      "parts": {
        "text": "Turn on the lights please."
      }
    }
  }
') 2>/dev/null |sed -n '/"content"/,/"finishReason"/p'

Java

Client client = new Client();

FunctionDeclaration addFunction =
        FunctionDeclaration.builder()
                .name("addNumbers")
                .parameters(
                        Schema.builder()
                                .type("object")
                                .properties(Map.of(
                                        "firstParam", Schema.builder().type("number").description("First number").build(),
                                        "secondParam", Schema.builder().type("number").description("Second number").build()))
                                .required(Arrays.asList("firstParam", "secondParam"))
                                .build())
                .build();

FunctionDeclaration subtractFunction =
        FunctionDeclaration.builder()
                .name("subtractNumbers")
                .parameters(
                        Schema.builder()
                                .type("object")
                                .properties(Map.of(
                                        "firstParam", Schema.builder().type("number").description("First number").build(),
                                        "secondParam", Schema.builder().type("number").description("Second number").build()))
                                .required(Arrays.asList("firstParam", "secondParam"))
                                .build())
                .build();

FunctionDeclaration multiplyFunction =
        FunctionDeclaration.builder()
                .name("multiplyNumbers")
                .parameters(
                        Schema.builder()
                                .type("object")
                                .properties(Map.of(
                                        "firstParam", Schema.builder().type("number").description("First number").build(),
                                        "secondParam", Schema.builder().type("number").description("Second number").build()))
                                .required(Arrays.asList("firstParam", "secondParam"))
                                .build())
                .build();

FunctionDeclaration divideFunction =
        FunctionDeclaration.builder()
                .name("divideNumbers")
                .parameters(
                        Schema.builder()
                                .type("object")
                                .properties(Map.of(
                                        "firstParam", Schema.builder().type("number").description("First number").build(),
                                        "secondParam", Schema.builder().type("number").description("Second number").build()))
                                .required(Arrays.asList("firstParam", "secondParam"))
                                .build())
                .build();

GenerateContentConfig config = GenerateContentConfig.builder()
        .toolConfig(ToolConfig.builder().functionCallingConfig(
                FunctionCallingConfig.builder().mode("ANY").build()
        ).build())
        .tools(
                Collections.singletonList(
                        Tool.builder().functionDeclarations(
                                Arrays.asList(
                                        addFunction,
                                        subtractFunction,
                                        divideFunction,
                                        multiplyFunction
                                )
                        ).build()

                )
        )
        .build();

GenerateContentResponse response =
        client.models.generateContent(
                "gemini-3.7-flash",
                "I have 57 cats, each owns 44 mittens, how many mittens is that in total?",
                config);


if (response.functionCalls() == null || response.functionCalls().isEmpty()) {
    System.err.println("No function call received");
    return null;
}

var functionCall = response.functionCalls().getFirst();
String functionName = functionCall.name().get();
var arguments = functionCall.args();

Map<String, BiFunction<Double, Double, Double>> functionMapping = new HashMap<>();
functionMapping.put("addNumbers", (a, b) -> a + b);
functionMapping.put("subtractNumbers", (a, b) -> a - b);
functionMapping.put("multiplyNumbers", (a, b) -> a * b);
functionMapping.put("divideNumbers", (a, b) -> b != 0 ? a / b : Double.NaN);

BiFunction<Double, Double, Double> function = functionMapping.get(functionName);

Number firstParam = (Number) arguments.get().get("firstParam");
Number secondParam = (Number) arguments.get().get("secondParam");
Double result = function.apply(firstParam.doubleValue(), secondParam.doubleValue());

System.out.println(result);

Configuração de geração

Python

from google import genai
from google.genai import types

client = genai.Client()
response = client.models.generate_content(
    model="gemini-3.7-flash",
    contents="Tell me a story about a magic backpack.",
    config=types.GenerateContentConfig(
        candidate_count=1,
        stop_sequences=["x"],
        max_output_tokens=20,
        temperature=1.0,
    ),
)
print(response.text)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });

const response = await ai.models.generateContent({
  model: "gemini-3.7-flash",
  contents: "Tell me a story about a magic backpack.",
  config: {
    candidateCount: 1,
    stopSequences: ["x"],
    maxOutputTokens: 20,
    temperature: 1.0,
  },
});

console.log(response.text);

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

// Create local variables for parameters.
candidateCount := int32(1)
maxOutputTokens := int32(20)
temperature := float32(1.0)

response, err := client.Models.GenerateContent(
	ctx,
	"gemini-3.7-flash",
	genai.Text("Tell me a story about a magic backpack."),
	&genai.GenerateContentConfig{
		CandidateCount:  candidateCount,
		StopSequences:   []string{"x"},
		MaxOutputTokens: maxOutputTokens,
		Temperature:     &temperature,
	},
)
if err != nil {
	log.Fatal(err)
}

printResponse(response)

Shell

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
        "contents": [{
            "parts":[
                {"text": "Explain how AI works"}
            ]
        }],
        "generationConfig": {
            "stopSequences": [
                "Title"
            ],
            "temperature": 1.0,
            "maxOutputTokens": 800,
            "topP": 0.8,
            "topK": 10
        }
    }'  2> /dev/null | grep "text"

Java

Client client = new Client();

GenerateContentConfig config =
        GenerateContentConfig.builder()
                .candidateCount(1)
                .stopSequences(List.of("x"))
                .maxOutputTokens(20)
                .temperature(1.0F)
                .build();

GenerateContentResponse response =
        client.models.generateContent(
                "gemini-3.7-flash",
                "Tell me a story about a magic backpack.",
                config);

System.out.println(response.text());

Configurações de segurança

Python

from google import genai
from google.genai import types

client = genai.Client()
unsafe_prompt = (
    "I support Martians Soccer Club and I think Jupiterians Football Club sucks! "
    "Write a ironic phrase about them including expletives."
)
response = client.models.generate_content(
    model="gemini-3.7-flash",
    contents=unsafe_prompt,
    config=types.GenerateContentConfig(
        safety_settings=[
            types.SafetySetting(
                category="HARM_CATEGORY_HATE_SPEECH",
                threshold="BLOCK_MEDIUM_AND_ABOVE",
            ),
            types.SafetySetting(
                category="HARM_CATEGORY_HARASSMENT", threshold="BLOCK_ONLY_HIGH"
            ),
        ]
    ),
)
try:
    print(response.text)
except Exception:
    print("No information generated by the model.")

print(response.candidates[0].safety_ratings)

Node.js

  // Make sure to include the following import:
  // import {GoogleGenAI} from '@google/genai';
  const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
  const unsafePrompt =
    "I support Martians Soccer Club and I think Jupiterians Football Club sucks! Write a ironic phrase about them including expletives.";

  const response = await ai.models.generateContent({
    model: "gemini-3.7-flash",
    contents: unsafePrompt,
    config: {
      safetySettings: [
        {
          category: "HARM_CATEGORY_HATE_SPEECH",
          threshold: "BLOCK_MEDIUM_AND_ABOVE",
        },
        {
          category: "HARM_CATEGORY_HARASSMENT",
          threshold: "BLOCK_ONLY_HIGH",
        },
      ],
    },
  });

  try {
    console.log("Generated text:", response.text);
  } catch (error) {
    console.log("No information generated by the model.");
  }
  console.log("Safety ratings:", response.candidates[0].safetyRatings);
  return response;
}

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

unsafePrompt := "I support Martians Soccer Club and I think Jupiterians Football Club sucks! " +
	"Write a ironic phrase about them including expletives."

config := &genai.GenerateContentConfig{
	SafetySettings: []*genai.SafetySetting{
		{
			Category:  "HARM_CATEGORY_HATE_SPEECH",
			Threshold: "BLOCK_MEDIUM_AND_ABOVE",
		},
		{
			Category:  "HARM_CATEGORY_HARASSMENT",
			Threshold: "BLOCK_ONLY_HIGH",
		},
	},
}
contents := []*genai.Content{
	genai.NewContentFromText(unsafePrompt, genai.RoleUser),
}
response, err := client.Models.GenerateContent(ctx, "gemini-3.7-flash", contents, config)
if err != nil {
	log.Fatal(err)
}

// Print the generated text.
text := response.Text()
fmt.Println("Generated text:", text)

// Print the and safety ratings from the first candidate.
if len(response.Candidates) > 0 {
	fmt.Println("Finish reason:", response.Candidates[0].FinishReason)
	safetyRatings, err := json.MarshalIndent(response.Candidates[0].SafetyRatings, "", "  ")
	if err != nil {
		return err
	}
	fmt.Println("Safety ratings:", string(safetyRatings))
} else {
	fmt.Println("No candidate returned.")
}

Shell

echo '{
    "safetySettings": [
        {"category": "HARM_CATEGORY_HARASSMENT", "threshold": "BLOCK_ONLY_HIGH"},
        {"category": "HARM_CATEGORY_HATE_SPEECH", "threshold": "BLOCK_MEDIUM_AND_ABOVE"}
    ],
    "contents": [{
        "parts":[{
            "text": "'I support Martians Soccer Club and I think Jupiterians Football Club sucks! Write a ironic phrase about them.'"}]}]}' > request.json

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d @request.json 2> /dev/null

Java

Client client = new Client();

String unsafePrompt = """
         I support Martians Soccer Club and I think Jupiterians Football Club sucks!
         Write a ironic phrase about them including expletives.
        """;

GenerateContentConfig config =
        GenerateContentConfig.builder()
                .safetySettings(Arrays.asList(
                        SafetySetting.builder()
                                .category("HARM_CATEGORY_HATE_SPEECH")
                                .threshold("BLOCK_MEDIUM_AND_ABOVE")
                                .build(),
                        SafetySetting.builder()
                                .category("HARM_CATEGORY_HARASSMENT")
                                .threshold("BLOCK_ONLY_HIGH")
                                .build()
                )).build();

GenerateContentResponse response =
        client.models.generateContent(
                "gemini-3.7-flash",
                unsafePrompt,
                config);

try {
    System.out.println(response.text());
} catch (Exception e) {
    System.out.println("No information generated by the model");
}

System.out.println(response.candidates().get().getFirst().safetyRatings());

Instrução do sistema

Python

from google import genai
from google.genai import types

client = genai.Client()
response = client.models.generate_content(
    model="gemini-3.7-flash",
    contents="Good morning! How are you?",
    config=types.GenerateContentConfig(
        system_instruction="You are a cat. Your name is Neko."
    ),
)
print(response.text)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
const response = await ai.models.generateContent({
  model: "gemini-3.7-flash",
  contents: "Good morning! How are you?",
  config: {
    systemInstruction: "You are a cat. Your name is Neko.",
  },
});
console.log(response.text);

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

// Construct the user message contents.
contents := []*genai.Content{
	genai.NewContentFromText("Good morning! How are you?", genai.RoleUser),
}

// Set the system instruction as a *genai.Content.
config := &genai.GenerateContentConfig{
	SystemInstruction: genai.NewContentFromText("You are a cat. Your name is Neko.", genai.RoleUser),
}

response, err := client.Models.GenerateContent(ctx, "gemini-3.7-flash", contents, config)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

Shell

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-d '{ "system_instruction": {
    "parts":
      { "text": "You are a cat. Your name is Neko."}},
    "contents": {
      "parts": {
        "text": "Hello there"}}}'

Java

Client client = new Client();

Part textPart = Part.builder().text("You are a cat. Your name is Neko.").build();

Content content = Content.builder().role("system").parts(ImmutableList.of(textPart)).build();

GenerateContentConfig config = GenerateContentConfig.builder()
        .systemInstruction(content)
        .build();

GenerateContentResponse response =
        client.models.generateContent(
                "gemini-3.7-flash",
                "Good morning! How are you?",
                config);

System.out.println(response.text());

Corpo da resposta

Se a solicitação for bem-sucedida, o corpo da resposta conterá uma instância de GenerateContentResponse.

Método: models.streamGenerateContent

Gera uma resposta transmitida do modelo com base em uma entrada GenerateContentRequest.

Endpoint

post https://generativelanguage.googleapis.com/v1beta/{model=models/*}:streamGenerateContent

Parâmetros de caminho

model string

Obrigatório. O nome do Model a ser usado para gerar a conclusão.

Formato: models/{model}. Ele tem o formato models/{model}.

Corpo da solicitação

O corpo da solicitação contém dados com a seguinte estrutura:

Campos
contents[] object (Content)

Obrigatório. O conteúdo da conversa atual com o modelo.

Para consultas de turno único, esta é uma instância única. Para consultas multiturno, como chat, esse é um campo repetido que contém o histórico da conversa e a solicitação mais recente.

tools[] object (Tool)

Opcional. Uma lista de Tools que o Model pode usar para gerar a próxima resposta.

Uma Tool é uma parte do código que permite ao sistema interagir com sistemas externos para realizar uma ação ou conjunto de ações fora do conhecimento e do escopo do Model. Os Tools aceitos são Function e codeExecution. Consulte os guias Chamada de função e Execução de código para saber mais.

toolConfig object (ToolConfig)

Opcional. Configuração da ferramenta para qualquer Tool especificado na solicitação. Consulte o guia de chamada de função para ver um exemplo de uso.

safetySettings[] object (SafetySetting)

Opcional. Uma lista de instâncias SafetySetting exclusivas para bloquear conteúdo não seguro.

Isso será aplicado no GenerateContentRequest.contents e no GenerateContentResponse.candidates. Não pode haver mais de uma configuração para cada tipo de SafetyCategory. A API bloqueia conteúdos e respostas que não atendem aos limites definidos por essas configurações. Essa lista substitui as configurações padrão de cada SafetyCategory especificado em "safetySettings". Se não houver um SafetySetting para um determinado SafetyCategory fornecido na lista, a API vai usar a configuração de segurança padrão para essa categoria. As categorias de dano HARM_CATEGORY_HATE_SPEECH, HARM_CATEGORY_SEXUALLY_EXPLICIT, HARM_CATEGORY_DANGEROUS_CONTENT, HARM_CATEGORY_HARASSMENT, HARM_CATEGORY_CIVIC_INTEGRITY e HARM_CATEGORY_JAILBREAK são aceitas. Consulte o guia para informações detalhadas sobre as configurações de segurança disponíveis. Consulte também as orientações de segurança para saber como incorporar considerações de segurança aos seus aplicativos de IA.

systemInstruction object (Content)

Opcional. O desenvolvedor definiu instruções do sistema. No momento, apenas texto.

generationConfig object (GenerationConfig)

Opcional. Opções de configuração para geração e saídas de modelos.

cachedContent string

Opcional. O nome do conteúdo em cache a ser usado como contexto para disponibilizar a previsão. Formato: cachedContents/{cachedContent}

serviceTier enum (ServiceTier)

Opcional. O nível de serviço da solicitação.

store boolean

Opcional. Configura o comportamento de geração de registros para uma determinada solicitação. Se definido, ele terá precedência sobre a configuração de geração de registros no nível do projeto.

Exemplo de solicitação

Texto

Python

from google import genai

client = genai.Client()
response = client.models.generate_content_stream(
    model="gemini-3.7-flash", contents="Write a story about a magic backpack."
)
for chunk in response:
    print(chunk.text)
    print("_" * 80)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });

const response = await ai.models.generateContentStream({
  model: "gemini-3.7-flash",
  contents: "Write a story about a magic backpack.",
});
let text = "";
for await (const chunk of response) {
  console.log(chunk.text);
  text += chunk.text;
}

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}
contents := []*genai.Content{
	genai.NewContentFromText("Write a story about a magic backpack.", genai.RoleUser),
}
for response, err := range client.Models.GenerateContentStream(
	ctx,
	"gemini-3.7-flash",
	contents,
	nil,
) {
	if err != nil {
		log.Fatal(err)
	}
	fmt.Print(response.Candidates[0].Content.Parts[0].Text)
}

Shell

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:streamGenerateContent?alt=sse&key=${GEMINI_API_KEY}" \
        -H 'Content-Type: application/json' \
        --no-buffer \
        -d '{ "contents":[{"parts":[{"text": "Write a story about a magic backpack."}]}]}'

Java

Client client = new Client();

ResponseStream<GenerateContentResponse> responseStream =
        client.models.generateContentStream(
                "gemini-3.7-flash",
                "Write a story about a magic backpack.",
                null);

StringBuilder response = new StringBuilder();
for (GenerateContentResponse res : responseStream) {
    System.out.print(res.text());
    response.append(res.text());
}

responseStream.close();

Imagem

Python

from google import genai
import PIL.Image

client = genai.Client()
organ = PIL.Image.open(media / "organ.jpg")
response = client.models.generate_content_stream(
    model="gemini-3.7-flash", contents=["Tell me about this instrument", organ]
)
for chunk in response:
    print(chunk.text)
    print("_" * 80)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });

const organ = await ai.files.upload({
  file: path.join(media, "organ.jpg"),
});

const response = await ai.models.generateContentStream({
  model: "gemini-3.7-flash",
  contents: [
    createUserContent([
      "Tell me about this instrument", 
      createPartFromUri(organ.uri, organ.mimeType)
    ]),
  ],
});
let text = "";
for await (const chunk of response) {
  console.log(chunk.text);
  text += chunk.text;
}

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}
file, err := client.Files.UploadFromPath(
	ctx, 
	filepath.Join(getMedia(), "organ.jpg"), 
	&genai.UploadFileConfig{
		MIMEType : "image/jpeg",
	},
)
if err != nil {
	log.Fatal(err)
}
parts := []*genai.Part{
	genai.NewPartFromText("Tell me about this instrument"),
	genai.NewPartFromURI(file.URI, file.MIMEType),
}
contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}
for response, err := range client.Models.GenerateContentStream(
	ctx,
	"gemini-3.7-flash",
	contents,
	nil,
) {
	if err != nil {
		log.Fatal(err)
	}
	fmt.Print(response.Candidates[0].Content.Parts[0].Text)
}

Shell

cat > "$TEMP_JSON" << EOF
{
  "contents": [{
    "parts":[
      {"text": "Tell me about this instrument"},
      {
        "inline_data": {
          "mime_type":"image/jpeg",
          "data": "$(cat "$TEMP_B64")"
        }
      }
    ]
  }]
}
EOF

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:streamGenerateContent?alt=sse&key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d "@$TEMP_JSON" 2> /dev/null

Java

Client client = new Client();

String path = media_path + "organ.jpg";
byte[] imageData = Files.readAllBytes(Paths.get(path));

Content content =
        Content.fromParts(
                Part.fromText("Tell me about this instrument."),
                Part.fromBytes(imageData, "image/jpeg"));


ResponseStream<GenerateContentResponse> responseStream =
        client.models.generateContentStream(
                "gemini-3.7-flash",
                content,
                null);

StringBuilder response = new StringBuilder();
for (GenerateContentResponse res : responseStream) {
    System.out.print(res.text());
    response.append(res.text());
}

responseStream.close();

Áudio

Python

from google import genai

client = genai.Client()
sample_audio = client.files.upload(file=media / "sample.mp3")
response = client.models.generate_content_stream(
    model="gemini-3.7-flash",
    contents=["Give me a summary of this audio file.", sample_audio],
)
for chunk in response:
    print(chunk.text)
    print("_" * 80)

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

file, err := client.Files.UploadFromPath(
	ctx, 
	filepath.Join(getMedia(), "sample.mp3"), 
	&genai.UploadFileConfig{
		MIMEType : "audio/mpeg",
	},
)
if err != nil {
	log.Fatal(err)
}

parts := []*genai.Part{
	genai.NewPartFromText("Give me a summary of this audio file."),
	genai.NewPartFromURI(file.URI, file.MIMEType),
}

contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}

for result, err := range client.Models.GenerateContentStream(
	ctx,
	"gemini-3.7-flash",
	contents,
	nil,
) {
	if err != nil {
		log.Fatal(err)
	}
	fmt.Print(result.Candidates[0].Content.Parts[0].Text)
}

Shell

# Use File API to upload audio data to API request.
MIME_TYPE=$(file -b --mime-type "${AUDIO_PATH}")
NUM_BYTES=$(wc -c < "${AUDIO_PATH}")
DISPLAY_NAME=AUDIO

tmp_header_file=upload-header.tmp

# Initial resumable request defining metadata.
# The upload url is in the response headers dump them to a file.
curl "${BASE_URL}/upload/v1beta/files?key=${GEMINI_API_KEY}" \
  -D upload-header.tmp \
  -H "X-Goog-Upload-Protocol: resumable" \
  -H "X-Goog-Upload-Command: start" \
  -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \
  -H "Content-Type: application/json" \
  -d "{'file': {'display_name': '${DISPLAY_NAME}'}}" 2> /dev/null

upload_url=$(grep -i "x-goog-upload-url: " "${tmp_header_file}" | cut -d" " -f2 | tr -d "\r")
rm "${tmp_header_file}"

# Upload the actual bytes.
curl "${upload_url}" \
  -H "Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Offset: 0" \
  -H "X-Goog-Upload-Command: upload, finalize" \
  --data-binary "@${AUDIO_PATH}" 2> /dev/null > file_info.json

file_uri=$(jq ".file.uri" file_info.json)
echo file_uri=$file_uri

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:streamGenerateContent?alt=sse&key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts":[
          {"text": "Please describe this file."},
          {"file_data":{"mime_type": "audio/mpeg", "file_uri": '$file_uri'}}]
        }]
       }' 2> /dev/null > response.json

cat response.json
echo

Vídeo

Python

from google import genai
import time

client = genai.Client()
# Video clip (CC BY 3.0) from https://peach.blender.org/download/
myfile = client.files.upload(file=media / "Big_Buck_Bunny.mp4")
print(f"{myfile=}")

# Poll until the video file is completely processed (state becomes ACTIVE).
while not myfile.state or myfile.state.name != "ACTIVE":
    print("Processing video...")
    print("File state:", myfile.state)
    time.sleep(5)
    myfile = client.files.get(name=myfile.name)

response = client.models.generate_content_stream(
    model="gemini-3.7-flash", contents=[myfile, "Describe this video clip"]
)
for chunk in response:
    print(chunk.text)
    print("_" * 80)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });

let video = await ai.files.upload({
  file: path.join(media, 'Big_Buck_Bunny.mp4'),
});

// Poll until the video file is completely processed (state becomes ACTIVE).
while (!video.state || video.state.toString() !== 'ACTIVE') {
  console.log('Processing video...');
  console.log('File state: ', video.state);
  await sleep(5000);
  video = await ai.files.get({name: video.name});
}

const response = await ai.models.generateContentStream({
  model: "gemini-3.7-flash",
  contents: [
    createUserContent([
      "Describe this video clip",
      createPartFromUri(video.uri, video.mimeType),
    ]),
  ],
});
let text = "";
for await (const chunk of response) {
  console.log(chunk.text);
  text += chunk.text;
}

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

file, err := client.Files.UploadFromPath(
	ctx, 
	filepath.Join(getMedia(), "Big_Buck_Bunny.mp4"), 
	&genai.UploadFileConfig{
		MIMEType : "video/mp4",
	},
)
if err != nil {
	log.Fatal(err)
}

// Poll until the video file is completely processed (state becomes ACTIVE).
for file.State == genai.FileStateUnspecified || file.State != genai.FileStateActive {
	fmt.Println("Processing video...")
	fmt.Println("File state:", file.State)
	time.Sleep(5 * time.Second)

	file, err = client.Files.Get(ctx, file.Name, nil)
	if err != nil {
		log.Fatal(err)
	}
}

parts := []*genai.Part{
	genai.NewPartFromText("Describe this video clip"),
	genai.NewPartFromURI(file.URI, file.MIMEType),
}

contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}

for result, err := range client.Models.GenerateContentStream(
	ctx,
	"gemini-3.7-flash",
	contents,
	nil,
) {
	if err != nil {
		log.Fatal(err)
	}
	fmt.Print(result.Candidates[0].Content.Parts[0].Text)
}

Shell

# Use File API to upload audio data to API request.
MIME_TYPE=$(file -b --mime-type "${VIDEO_PATH}")
NUM_BYTES=$(wc -c < "${VIDEO_PATH}")
DISPLAY_NAME=VIDEO_PATH

# Initial resumable request defining metadata.
# The upload url is in the response headers dump them to a file.
curl "${BASE_URL}/upload/v1beta/files?key=${GEMINI_API_KEY}" \
  -D upload-header.tmp \
  -H "X-Goog-Upload-Protocol: resumable" \
  -H "X-Goog-Upload-Command: start" \
  -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \
  -H "Content-Type: application/json" \
  -d "{'file': {'display_name': '${DISPLAY_NAME}'}}" 2> /dev/null

upload_url=$(grep -i "x-goog-upload-url: " "${tmp_header_file}" | cut -d" " -f2 | tr -d "\r")
rm "${tmp_header_file}"

# Upload the actual bytes.
curl "${upload_url}" \
  -H "Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Offset: 0" \
  -H "X-Goog-Upload-Command: upload, finalize" \
  --data-binary "@${VIDEO_PATH}" 2> /dev/null > file_info.json

file_uri=$(jq ".file.uri" file_info.json)
echo file_uri=$file_uri

state=$(jq ".file.state" file_info.json)
echo state=$state

while [[ "($state)" = *"PROCESSING"* ]];
do
  echo "Processing video..."
  sleep 5
  # Get the file of interest to check state
  curl https://generativelanguage.googleapis.com/v1beta/files/$name > file_info.json
  state=$(jq ".file.state" file_info.json)
done

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:streamGenerateContent?alt=sse&key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts":[
          {"text": "Please describe this file."},
          {"file_data":{"mime_type": "video/mp4", "file_uri": '$file_uri'}}]
        }]
       }' 2> /dev/null > response.json

cat response.json
echo

PDF

Python

from google import genai

client = genai.Client()
sample_pdf = client.files.upload(file=media / "test.pdf")
response = client.models.generate_content_stream(
    model="gemini-3.7-flash",
    contents=["Give me a summary of this document:", sample_pdf],
)

for chunk in response:
    print(chunk.text)
    print("_" * 80)

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

file, err := client.Files.UploadFromPath(
	ctx, 
	filepath.Join(getMedia(), "test.pdf"), 
	&genai.UploadFileConfig{
		MIMEType : "application/pdf",
	},
)
if err != nil {
	log.Fatal(err)
}

parts := []*genai.Part{
	genai.NewPartFromText("Give me a summary of this document:"),
	genai.NewPartFromURI(file.URI, file.MIMEType),
}

contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}

for result, err := range client.Models.GenerateContentStream(
	ctx,
	"gemini-3.7-flash",
	contents,
	nil,
) {
	if err != nil {
		log.Fatal(err)
	}
	fmt.Print(result.Candidates[0].Content.Parts[0].Text)
}

Shell

MIME_TYPE=$(file -b --mime-type "${PDF_PATH}")
NUM_BYTES=$(wc -c < "${PDF_PATH}")
DISPLAY_NAME=TEXT


echo $MIME_TYPE
tmp_header_file=upload-header.tmp

# Initial resumable request defining metadata.
# The upload url is in the response headers dump them to a file.
curl "${BASE_URL}/upload/v1beta/files?key=${GEMINI_API_KEY}" \
  -D upload-header.tmp \
  -H "X-Goog-Upload-Protocol: resumable" \
  -H "X-Goog-Upload-Command: start" \
  -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \
  -H "Content-Type: application/json" \
  -d "{'file': {'display_name': '${DISPLAY_NAME}'}}" 2> /dev/null

upload_url=$(grep -i "x-goog-upload-url: " "${tmp_header_file}" | cut -d" " -f2 | tr -d "\r")
rm "${tmp_header_file}"

# Upload the actual bytes.
curl "${upload_url}" \
  -H "Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Offset: 0" \
  -H "X-Goog-Upload-Command: upload, finalize" \
  --data-binary "@${PDF_PATH}" 2> /dev/null > file_info.json

file_uri=$(jq ".file.uri" file_info.json)
echo file_uri=$file_uri

# Now generate content using that file
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:streamGenerateContent?alt=sse&key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts":[
          {"text": "Can you add a few more lines to this poem?"},
          {"file_data":{"mime_type": "application/pdf", "file_uri": '$file_uri'}}]
        }]
       }' 2> /dev/null > response.json

cat response.json
echo

Chat

Python

from google import genai
from google.genai import types

client = genai.Client()
chat = client.chats.create(
    model="gemini-3.7-flash",
    history=[
        types.Content(role="user", parts=[types.Part(text="Hello")]),
        types.Content(
            role="model",
            parts=[
                types.Part(
                    text="Great to meet you. What would you like to know?"
                )
            ],
        ),
    ],
)
response = chat.send_message_stream(message="I have 2 dogs in my house.")
for chunk in response:
    print(chunk.text)
    print("_" * 80)
response = chat.send_message_stream(message="How many paws are in my house?")
for chunk in response:
    print(chunk.text)
    print("_" * 80)

print(chat.get_history())

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
const chat = ai.chats.create({
  model: "gemini-3.7-flash",
  history: [
    {
      role: "user",
      parts: [{ text: "Hello" }],
    },
    {
      role: "model",
      parts: [{ text: "Great to meet you. What would you like to know?" }],
    },
  ],
});

console.log("Streaming response for first message:");
const stream1 = await chat.sendMessageStream({
  message: "I have 2 dogs in my house.",
});
for await (const chunk of stream1) {
  console.log(chunk.text);
  console.log("_".repeat(80));
}

console.log("Streaming response for second message:");
const stream2 = await chat.sendMessageStream({
  message: "How many paws are in my house?",
});
for await (const chunk of stream2) {
  console.log(chunk.text);
  console.log("_".repeat(80));
}

console.log(chat.getHistory());

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

history := []*genai.Content{
	genai.NewContentFromText("Hello", genai.RoleUser),
	genai.NewContentFromText("Great to meet you. What would you like to know?", genai.RoleModel),
}
chat, err := client.Chats.Create(ctx, "gemini-3.7-flash", nil, history)
if err != nil {
	log.Fatal(err)
}

for chunk, err := range chat.SendMessageStream(ctx, genai.Part{Text: "I have 2 dogs in my house."}) {
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println(chunk.Text())
	fmt.Println(strings.Repeat("_", 64))
}

for chunk, err := range chat.SendMessageStream(ctx, genai.Part{Text: "How many paws are in my house?"}) {
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println(chunk.Text())
	fmt.Println(strings.Repeat("_", 64))
}

fmt.Println(chat.History(false))

Shell

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:streamGenerateContent?alt=sse&key=$GEMINI_API_KEY \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [
        {"role":"user",
         "parts":[{
           "text": "Hello"}]},
        {"role": "model",
         "parts":[{
           "text": "Great to meet you. What would you like to know?"}]},
        {"role":"user",
         "parts":[{
           "text": "I have two dogs in my house. How many paws are in my house?"}]},
      ]
    }' 2> /dev/null | grep "text"

Corpo da resposta

Se a solicitação for bem-sucedida, o corpo da resposta vai conter um fluxo de instâncias de GenerateContentResponse.

GenerateContentResponse

Resposta do modelo que oferece suporte a várias respostas candidatas.

As classificações de segurança e a filtragem de conteúdo são informadas para os dois comandos em GenerateContentResponse.prompt_feedback e para cada candidato em finishReason e safetyRatings. A API: - Retorna todos os candidatos solicitados ou nenhum deles. - Não retorna nenhum candidato apenas se houver algo errado com o comando (verifique promptFeedback). - Informa o feedback sobre cada candidato em finishReason e safetyRatings.

Campos
candidates[] object (Candidate)

Respostas candidatas do modelo.

promptFeedback object (PromptFeedback)

Retorna o feedback do comando relacionado aos filtros de conteúdo.

usageMetadata object (UsageMetadata)

Apenas saída. Metadados sobre o uso de tokens das solicitações de geração.

modelVersion string

Apenas saída. A versão do modelo usada para gerar a resposta.

responseId string

Somente saída. O responseId é usado para identificar cada resposta.

modelStatus object (ModelStatus)

Apenas saída. O status atual do modelo.

Representação JSON
{
  "candidates": [
    {
      object (Candidate)
    }
  ],
  "promptFeedback": {
    object (PromptFeedback)
  },
  "usageMetadata": {
    object (UsageMetadata)
  },
  "modelVersion": string,
  "responseId": string,
  "modelStatus": {
    object (ModelStatus)
  }
}

PromptFeedback

Um conjunto dos metadados de feedback especificados na solicitação em GenerateContentRequest.content.

Campos
blockReason enum (BlockReason)

Opcional. Se definido, o comando foi bloqueado e nenhum candidato foi retornado. Reformule o comando.

safetyRatings[] object (SafetyRating)

Classificações de segurança do comando. Há no máximo uma classificação por categoria.

Representação JSON
{
  "blockReason": enum (BlockReason),
  "safetyRatings": [
    {
      object (SafetyRating)
    }
  ]
}

BlockReason

Especifica o motivo do bloqueio do comando.

Tipos enumerados
BLOCK_REASON_UNSPECIFIED Valor padrão. Esse valor não é usado.
SAFETY O comando foi bloqueado por motivos de segurança. Analise safetyRatings para entender qual categoria de segurança fez o bloqueio.
OTHER O comando foi bloqueado por motivos desconhecidos.
BLOCKLIST A solicitação foi bloqueada devido aos termos incluídos na lista de bloqueio de terminologia.
PROHIBITED_CONTENT O comando foi bloqueado devido a conteúdo proibido.
IMAGE_SAFETY Candidatos bloqueados devido a conteúdo não seguro de geração de imagens.

UsageMetadata

Metadados sobre o uso de tokens da solicitação de geração.

Campos
promptTokenCount integer

Número de tokens no comando. Quando cachedContent é definido, esse ainda é o tamanho total efetivo do comando, o que significa que inclui o número de tokens no conteúdo armazenado em cache.

cachedContentTokenCount integer

Número de tokens na parte armazenada em cache do comando (o conteúdo em cache)

candidatesTokenCount integer

Número total de tokens em todos os candidatos de resposta gerados.

toolUsePromptTokenCount integer

Apenas saída. Número de tokens presentes nos comandos de uso da ferramenta.

thoughtsTokenCount integer

Apenas saída. Número de tokens de ideias para modelos de raciocínio.

totalTokenCount integer

Contagem total de tokens para a solicitação de geração (comando + ideias + candidatos a resposta).

promptTokensDetails[] object (ModalityTokenCount)

Apenas saída. Lista de modalidades processadas na entrada da solicitação.

cacheTokensDetails[] object (ModalityTokenCount)

Apenas saída. Lista de modalidades do conteúdo em cache na entrada da solicitação.

candidatesTokensDetails[] object (ModalityTokenCount)

Apenas saída. Lista de modalidades retornadas na resposta.

toolUsePromptTokensDetails[] object (ModalityTokenCount)

Apenas saída. Lista de modalidades processadas para entradas de solicitação de uso de ferramentas.

serviceTier enum (ServiceTier)

Apenas saída. Nível de serviço da solicitação.

Representação JSON
{
  "promptTokenCount": integer,
  "cachedContentTokenCount": integer,
  "candidatesTokenCount": integer,
  "toolUsePromptTokenCount": integer,
  "thoughtsTokenCount": integer,
  "totalTokenCount": integer,
  "promptTokensDetails": [
    {
      object (ModalityTokenCount)
    }
  ],
  "cacheTokensDetails": [
    {
      object (ModalityTokenCount)
    }
  ],
  "candidatesTokensDetails": [
    {
      object (ModalityTokenCount)
    }
  ],
  "toolUsePromptTokensDetails": [
    {
      object (ModalityTokenCount)
    }
  ],
  "serviceTier": enum (ServiceTier)
}

ModelStatus

O status do modelo subjacente. Usado para indicar a fase do modelo subjacente e o tempo de desativação, se aplicável.

Campos
modelStage enum (ModelStage)

O estágio do modelo subjacente.

retirementTime string (Timestamp format)

O horário em que o modelo será desativado.

Usa o padrão RFC 3339, em que a saída gerada é sempre convertida em Z e tem 0, 3, 6 ou 9 dígitos fracionários. Além de "Z", outros ajustes também são aceitos. Exemplos: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" ou "2014-10-02T15:01:23+05:30".

message string

Uma mensagem explicando o status do modelo.

Representação JSON
{
  "modelStage": enum (ModelStage),
  "retirementTime": string,
  "message": string
}

ModelStage

Define a etapa do modelo subjacente.

Tipos enumerados
MODEL_STAGE_UNSPECIFIED Estágio do modelo não especificado.
UNSTABLE_EXPERIMENTAL

O modelo subjacente está sujeito a muitos ajustes.

EXPERIMENTAL Os modelos nessa fase são apenas para fins experimentais.
PREVIEW Os modelos nessa fase são mais maduros do que os experimentais.
STABLE Os modelos nessa fase são considerados estáveis e prontos para uso em produção.
LEGACY Se o modelo estiver nessa fase, significa que ele será descontinuado em breve. Apenas clientes atuais podem usar esse modelo.
DEPRECATED

Os modelos nessa fase são descontinuados. Esses modelos não podem ser usados.

RETIRED Os modelos nessa fase são desativados. Esses modelos não podem ser usados.

Candidato

Um candidato de resposta gerado pelo modelo.

Campos
content object (Content)

Apenas saída. Conteúdo gerado retornado pelo modelo.

finishReason enum (FinishReason)

Opcional. Apenas saída. É o motivo pelo qual o modelo parou de gerar tokens.

Se estiver vazio, o modelo não parou de gerar tokens.

safetyRatings[] object (SafetyRating)

Lista de classificações para a segurança de um candidato a resposta.

Há no máximo uma classificação por categoria.

citationMetadata object (CitationMetadata)

Apenas saída. Informações de citação para o candidato gerado pelo modelo.

Esse campo pode ser preenchido com informações de recitação para qualquer texto incluído no content. São trechos "recitados" de material protegido por direitos autorais nos dados de treinamento do LLM de base.

tokenCount integer

Apenas saída. Contagem de tokens para este candidato.

groundingAttributions[] object (GroundingAttribution)

Apenas saída. Informações de atribuição para fontes que contribuíram para uma resposta embasada.

Esse campo é preenchido para chamadas GenerateAnswer.

groundingMetadata object (GroundingMetadata)

Apenas saída. Metadados de embasamento para o candidato.

Esse campo é preenchido para chamadas GenerateContent.

avgLogprobs number

Apenas saída. Pontuação média de probabilidade de registro do candidato.

logprobsResult object (LogprobsResult)

Apenas saída. Pontuações de verossimilhança de registro para os tokens de resposta e os principais tokens

urlContextMetadata object (UrlContextMetadata)

Apenas saída. Metadados relacionados à ferramenta de recuperação de contexto de URL.

index integer

Apenas saída. Índice do candidato na lista de candidatos de resposta.

finishMessage string

Opcional. Apenas saída. Detalha o motivo pelo qual o modelo parou de gerar tokens. Isso só será preenchido quando finishReason estiver definido.

Representação JSON
{
  "content": {
    object (Content)
  },
  "finishReason": enum (FinishReason),
  "safetyRatings": [
    {
      object (SafetyRating)
    }
  ],
  "citationMetadata": {
    object (CitationMetadata)
  },
  "tokenCount": integer,
  "groundingAttributions": [
    {
      object (GroundingAttribution)
    }
  ],
  "groundingMetadata": {
    object (GroundingMetadata)
  },
  "avgLogprobs": number,
  "logprobsResult": {
    object (LogprobsResult)
  },
  "urlContextMetadata": {
    object (UrlContextMetadata)
  },
  "index": integer,
  "finishMessage": string
}

FinishReason

Define o motivo pelo qual o modelo parou de gerar tokens.

Tipos enumerados
FINISH_REASON_UNSPECIFIED Valor padrão. Esse valor não é usado.
STOP Ponto de parada natural do modelo ou sequência de paradas fornecida.
MAX_TOKENS O número máximo de tokens especificado na solicitação foi atingido.
SAFETY O conteúdo do candidato a resposta foi sinalizado por motivos de segurança.
RECITATION O conteúdo candidato à resposta foi sinalizado por motivos de recitação.
LANGUAGE O conteúdo da resposta foi sinalizado por usar um idioma sem suporte.
OTHER Motivo desconhecido.
BLOCKLIST A geração de tokens foi interrompida porque o conteúdo contém termos proibidos.
PROHIBITED_CONTENT A geração de tokens foi interrompida por conter conteúdo proibido.
SPII A geração de tokens foi interrompida porque o conteúdo pode conter informações sensíveis de identificação pessoal (SPII).
MALFORMED_FUNCTION_CALL A chamada de função gerada pelo modelo é inválida.
IMAGE_SAFETY A geração de tokens foi interrompida porque as imagens geradas contêm violações de segurança.
IMAGE_PROHIBITED_CONTENT A geração de imagens foi interrompida porque as imagens geradas têm outros conteúdos proibidos.
IMAGE_OTHER A geração de imagens foi interrompida devido a outro problema diverso.
NO_IMAGE O modelo deveria ter gerado uma imagem, mas não gerou nenhuma.
IMAGE_RECITATION A geração de imagens foi interrompida devido à recitação.
UNEXPECTED_TOOL_CALL O modelo gerou uma chamada de ferramenta, mas nenhuma ferramenta estava ativada na solicitação.
TOO_MANY_TOOL_CALLS O modelo chamou muitas ferramentas consecutivamente, então o sistema encerrou a execução.
MISSING_THOUGHT_SIGNATURE A solicitação não tem pelo menos uma assinatura de pensamento.
MALFORMED_RESPONSE Concluído devido a uma resposta incorreta.
ESCALATION A solicitação foi filtrada por uma regra de encaminhamento.

GroundingAttribution

Atribuição de uma fonte que contribuiu para uma resposta.

Campos
sourceId object (AttributionSourceId)

Apenas saída. Identificador da origem que contribui para essa atribuição.

content object (Content)

Conteúdo da fonte de embasamento que compõe essa atribuição.

Representação JSON
{
  "sourceId": {
    object (AttributionSourceId)
  },
  "content": {
    object (Content)
  }
}

AttributionSourceId

Identificador da origem que contribui para essa atribuição.

Campos
source Union type
source pode ser apenas de um dos tipos a seguir:
groundingPassage object (GroundingPassageId)

Identificador de uma passagem inline.

semanticRetrieverChunk object (SemanticRetrieverChunk)

Identificador de um Chunk buscado pelo Semantic Retriever.

Representação JSON
{

  // source
  "groundingPassage": {
    object (GroundingPassageId)
  },
  "semanticRetrieverChunk": {
    object (SemanticRetrieverChunk)
  }
  // Union type
}

GroundingPassageId

Identificador de uma parte em um GroundingPassage.

Campos
passageId string

Apenas saída. ID da passagem que corresponde ao GroundingPassage.id do GenerateAnswerRequest.

partIndex integer

Apenas saída. Índice da parte no GroundingPassage.content do GenerateAnswerRequest.

Representação JSON
{
  "passageId": string,
  "partIndex": integer
}

SemanticRetrieverChunk

Identificador de um Chunk recuperado pelo Semantic Retriever especificado no GenerateAnswerRequest usando SemanticRetrieverConfig.

Campos
source string

Apenas saída. Nome da origem que corresponde ao SemanticRetrieverConfig.source da solicitação. Exemplo: corpora/123 ou corpora/123/documents/abc

chunk string

Apenas saída. Nome do Chunk que contém o texto atribuído. Exemplo: corpora/123/documents/abc/chunks/xyz

Representação JSON
{
  "source": string,
  "chunk": string
}

GroundingMetadata

Metadados retornados ao cliente quando o embasamento está ativado.

Campos
groundingChunks[] object (GroundingChunk)

Lista de referências de apoio recuperadas da fonte de embasamento especificada. Ao fazer streaming, isso contém apenas os trechos de embasamento que não foram incluídos nos metadados de embasamento das respostas anteriores.

groundingSupports[] object (GroundingSupport)

Lista de suporte de embasamento.

webSearchQueries[] string

Consultas de pesquisa na Web para a pesquisa na Web de acompanhamento.

imageSearchQueries[] string

Consultas de pesquisa por imagens usadas para embasamento.

searchEntryPoint object (SearchEntryPoint)

Opcional. Entrada da Pesquisa Google para as pesquisas na Web de acompanhamento.

retrievalMetadata object (RetrievalMetadata)

Metadados relacionados à recuperação no fluxo de embasamento.

googleMapsWidgetContextToken string

Opcional. Nome do recurso do token de contexto do widget do Google Maps que pode ser usado com o widget PlacesContextElement para renderizar dados contextuais. Preenchido apenas se o embasamento com o Google Maps estiver ativado.

Representação JSON
{
  "groundingChunks": [
    {
      object (GroundingChunk)
    }
  ],
  "groundingSupports": [
    {
      object (GroundingSupport)
    }
  ],
  "webSearchQueries": [
    string
  ],
  "imageSearchQueries": [
    string
  ],
  "searchEntryPoint": {
    object (SearchEntryPoint)
  },
  "retrievalMetadata": {
    object (RetrievalMetadata)
  },
  "googleMapsWidgetContextToken": string
}

SearchEntryPoint

Ponto de entrada da Pesquisa Google.

Campos
renderedContent string

Opcional. Snippet de conteúdo da Web que pode ser incorporado a uma página da Web ou uma WebView de app.

sdkBlob string (bytes format)

Opcional. JSON codificado em Base64 que representa a matriz da tupla <termo de pesquisa, URL de pesquisa>.

Uma string codificada em base64.

Representação JSON
{
  "renderedContent": string,
  "sdkBlob": string
}

GroundingChunk

Um GroundingChunk representa um segmento de evidências que fundamentam a resposta do modelo. Pode ser um trecho da Web, um contexto recuperado de um arquivo ou informações do Google Maps.

Campos
chunk_type Union type
Tipo de trecho. chunk_type pode ser apenas de um dos tipos a seguir:
web object (Web)

Trecho de embasamento da Web.

image object (Image)

Opcional. Trecho de embasamento da pesquisa por imagens.

retrievedContext object (RetrievedContext)

Opcional. Trecho de embasamento do contexto recuperado pela ferramenta de pesquisa de arquivos.

maps object (Maps)

Opcional. Trecho de embasamento do Google Maps.

Representação JSON
{

  // chunk_type
  "web": {
    object (Web)
  },
  "image": {
    object (Image)
  },
  "retrievedContext": {
    object (RetrievedContext)
  },
  "maps": {
    object (Maps)
  }
  // Union type
}

Web

Trecho da Web.

Campos
uri string

Apenas saída. Referência de URI do trecho.

title string

Apenas saída. Título do trecho.

Representação JSON
{
  "uri": string,
  "title": string
}

Imagem

Bloco da pesquisa por imagens.

Campos
sourceUri string

O URI da página da Web para atribuição.

imageUri string

O URL do recurso de imagem.

title string

O título da página da Web de onde a imagem foi extraída.

domain string

O domínio raiz da página da Web de onde a imagem foi extraída, por exemplo, "example.com".

Representação JSON
{
  "sourceUri": string,
  "imageUri": string,
  "title": string,
  "domain": string
}

RetrievedContext

Trecho do contexto recuperado pela ferramenta de pesquisa de arquivos.

Campos
customMetadata[] object (CustomMetadata)

Opcional. Metadados fornecidos pelo usuário sobre o contexto recuperado.

uri string

Opcional. Referência de URI do documento de recuperação semântica.

title string

Opcional. Título do documento.

text string

Opcional. Texto do trecho.

fileSearchStore string

Opcional. Nome do FileSearchStore que contém o documento. Exemplo: fileSearchStores/123

pageNumber integer

Opcional. Número da página do contexto recuperado, se aplicável.

mediaId string

Opcional. O nome do recurso blob de mídia para resultados de pesquisa de arquivos multimodais. Formato: fileSearchStores/{file_search_store_id}/media/{blobId}

Representação JSON
{
  "customMetadata": [
    {
      object (CustomMetadata)
    }
  ],
  "uri": string,
  "title": string,
  "text": string,
  "fileSearchStore": string,
  "pageNumber": integer,
  "mediaId": string
}

CustomMetadata

Metadados fornecidos pelo usuário sobre o GroundingFact.

Campos
key string

A chave dos metadados.

value Union type
O valor dos metadados. Pode ser uma string, uma lista de strings ou um número. value pode ser apenas de um dos tipos a seguir:
stringValue string

Opcional. O valor da string dos metadados.

stringListValue object (StringList)

Opcional. Uma lista de valores de string para os metadados.

numericValue number

Opcional. O valor numérico dos metadados. O intervalo esperado para esse valor depende do key específico usado.

Representação JSON
{
  "key": string,

  // value
  "stringValue": string,
  "stringListValue": {
    object (StringList)
  },
  "numericValue": number
  // Union type
}

StringList

Uma lista de valores de string.

Campos
values[] string

Os valores de string da lista.

Representação JSON
{
  "values": [
    string
  ]
}

Maps

Um trecho de embasamento do Google Maps. Um trecho do Maps corresponde a um único lugar.

Campos
uri string

Referência de URI do lugar.

title string

Título do lugar.

text string

Descrição textual da resposta do lugar.

placeId string

O ID do lugar, no formato places/{placeId}. Um usuário pode usar esse ID para pesquisar o lugar.

placeAnswerSources object (PlaceAnswerSources)

Fontes que fornecem respostas sobre os recursos de um determinado lugar no Google Maps.

Representação JSON
{
  "uri": string,
  "title": string,
  "text": string,
  "placeId": string,
  "placeAnswerSources": {
    object (PlaceAnswerSources)
  }
}

PlaceAnswerSources

Coleção de fontes que fornecem respostas sobre os recursos de um determinado lugar no Google Maps. Cada mensagem "PlaceAnswerSources" corresponde a um lugar específico no Google Maps. A ferramenta do Google Maps usou essas fontes para responder a perguntas sobre recursos do lugar (por exemplo, "O Bar Foo tem Wi-Fi?" ou "O Foo Bar é acessível para cadeirantes?"). No momento, só aceitamos snippets de avaliações como fontes.

Campos
reviewSnippets[] object (ReviewSnippet)

Trechos de avaliações usados para gerar respostas sobre os recursos de um determinado lugar no Google Maps.

Representação JSON
{
  "reviewSnippets": [
    {
      object (ReviewSnippet)
    }
  ]
}

ReviewSnippet

Encapsula um trecho de uma avaliação do usuário que responde a uma pergunta sobre os recursos de um lugar específico no Google Maps.

Campos
reviewId string

O ID do snippet de avaliação.

googleMapsUri string

Um link que corresponde à avaliação do usuário no Google Maps.

title string

Título da avaliação.

Representação JSON
{
  "reviewId": string,
  "googleMapsUri": string,
  "title": string
}

GroundingSupport

Suporte para embasamento.

Campos
groundingChunkIndices[] integer

Opcional. Uma lista de índices (em "grounding_chunk" em response.candidate.grounding_metadata) que especificam as citações associadas à declaração. Por exemplo, [1,3,4] significa que grounding_chunk[1], grounding_chunk[3], grounding_chunk[4] são o conteúdo recuperado atribuído à declaração. Se a resposta estiver sendo transmitida, os groundingChunkIndices vão se referir aos índices em todas as respostas. É responsabilidade do cliente acumular os trechos de embasamento de todas as respostas (mantendo a mesma ordem).

confidenceScores[] number

Opcional. Pontuação de confiança das referências de suporte. Varia de 0 a 1. 1 é o mais confiante. Essa lista precisa ter o mesmo tamanho que "groundingChunkIndices".

renderedParts[] integer

Apenas saída. Índices no campo parts do conteúdo do candidato. Esses índices especificam quais partes renderizadas estão associadas a essa fonte de suporte.

segment object (Segment)

Segmento do conteúdo a que este suporte pertence.

Representação JSON
{
  "groundingChunkIndices": [
    integer
  ],
  "confidenceScores": [
    number
  ],
  "renderedParts": [
    integer
  ],
  "segment": {
    object (Segment)
  }
}

Segmento

Segmento do conteúdo.

Campos
partIndex integer

O índice de um objeto "Part" no objeto "Content" pai.

startIndex integer

Índice inicial na parte especificada, medido em bytes. Deslocamento do início da parte, inclusivo, começando em zero.

endIndex integer

Índice final na parte especificada, medido em bytes. Deslocamento do início da parte, exclusivo, começando em zero.

text string

O texto correspondente ao segmento da resposta.

Representação JSON
{
  "partIndex": integer,
  "startIndex": integer,
  "endIndex": integer,
  "text": string
}

RetrievalMetadata

Metadados relacionados à recuperação no fluxo de embasamento.

Campos
googleSearchDynamicRetrievalScore number

Opcional. Pontuação que indica a probabilidade de as informações da Pesquisa Google ajudarem a responder ao comando. A pontuação está no intervalo [0, 1], em que 0 é a menor probabilidade e 1 é a maior. Essa pontuação só é preenchida quando o embasamento da Pesquisa Google e a recuperação dinâmica estão ativados. Ele será comparado ao limite para determinar se a Pesquisa Google será acionada.

Representação JSON
{
  "googleSearchDynamicRetrievalScore": number
}

LogprobsResult

Resultado de Logprobs

Campos
topCandidates[] object (TopCandidates)

Comprimento = número total de etapas de decodificação.

chosenCandidates[] object (Candidate)

Comprimento = número total de etapas de decodificação. Os candidatos escolhidos podem ou não estar em topCandidates.

logProbabilitySum number

Soma das probabilidades de registro de todos os tokens.

Representação JSON
{
  "topCandidates": [
    {
      object (TopCandidates)
    }
  ],
  "chosenCandidates": [
    {
      object (Candidate)
    }
  ],
  "logProbabilitySum": number
}

TopCandidates

Candidatos com as principais probabilidades de registro em cada etapa de decodificação.

Campos
candidates[] object (Candidate)

Classificados por probabilidade logarítmica em ordem decrescente.

Representação JSON
{
  "candidates": [
    {
      object (Candidate)
    }
  ]
}

Candidato

Candidato ao token e à pontuação de logprobs.

Campos
token string

O valor da string do token do candidato.

tokenId integer

O valor do ID do token do candidato.

logProbability number

A probabilidade de registro do candidato.

Representação JSON
{
  "token": string,
  "tokenId": integer,
  "logProbability": number
}

UrlContextMetadata

Metadados relacionados à ferramenta de recuperação de contexto de URL.

Campos
urlMetadata[] object (UrlMetadata)

Lista de contextos de URL.

Representação JSON
{
  "urlMetadata": [
    {
      object (UrlMetadata)
    }
  ]
}

UrlMetadata

Contexto de uma única recuperação de URL.

Campos
retrievedUrl string

URL recuperado pela ferramenta.

urlRetrievalStatus enum (UrlRetrievalStatus)

Status da recuperação do URL.

Representação JSON
{
  "retrievedUrl": string,
  "urlRetrievalStatus": enum (UrlRetrievalStatus)
}

UrlRetrievalStatus

Status da recuperação do URL.

Tipos enumerados
URL_RETRIEVAL_STATUS_UNSPECIFIED Valor padrão. Esse valor não é usado.
URL_RETRIEVAL_STATUS_SUCCESS A recuperação do URL foi concluída.
URL_RETRIEVAL_STATUS_ERROR A recuperação do URL falhou devido a um erro.
URL_RETRIEVAL_STATUS_PAYWALL A recuperação do URL falhou porque o conteúdo está protegido por um paywall.
URL_RETRIEVAL_STATUS_UNSAFE A recuperação do URL falhou porque o conteúdo não é seguro.

CitationMetadata

Uma coleção de atribuições de origem para um conteúdo.

Campos
citationSources[] object (CitationSource)

Citações de fontes para uma resposta específica.

Representação JSON
{
  "citationSources": [
    {
      object (CitationSource)
    }
  ]
}

CitationSource

Uma citação de uma fonte para uma parte de uma resposta específica.

Campos
startIndex integer

Opcional. Início do segmento da resposta atribuído a esta fonte.

O índice indica o início do segmento, medido em bytes.

endIndex integer

Opcional. Fim do segmento atribuído, exclusivo.

uri string

Opcional. URI atribuído como fonte de uma parte do texto.

license string

Opcional. Licença do projeto do GitHub atribuída como uma fonte para o segmento.

As informações de licença são obrigatórias para citações de código.

Representação JSON
{
  "startIndex": integer,
  "endIndex": integer,
  "uri": string,
  "license": string
}

HarmCategory

A categoria de uma classificação.

Essas categorias abrangem vários tipos de danos que os desenvolvedores podem querer ajustar.

Tipos enumerados
HARM_CATEGORY_UNSPECIFIED A categoria não foi especificada.
HARM_CATEGORY_DEROGATORY PaLM: comentários negativos ou nocivos voltados à identidade e/ou atributos protegidos.
HARM_CATEGORY_TOXICITY PaLM: conteúdo grosseiro, desrespeitoso ou com linguagem obscena.
HARM_CATEGORY_VIOLENCE PaLM: descreve cenários que retratam violência contra um indivíduo ou grupo ou descrições gerais de sangue em excesso.
HARM_CATEGORY_SEXUAL PaLM: contém referências a atos sexuais ou outro conteúdo obsceno.
HARM_CATEGORY_MEDICAL PaLM: promove orientações médicas não verificadas.
HARM_CATEGORY_DANGEROUS PaLM: conteúdo perigoso que promove, facilita ou incentiva atos nocivos.
HARM_CATEGORY_HARASSMENT Gemini: conteúdo de assédio.
HARM_CATEGORY_HATE_SPEECH Gemini: discurso de ódio e conteúdo.
HARM_CATEGORY_SEXUALLY_EXPLICIT Gemini: conteúdo sexualmente explícito.
HARM_CATEGORY_DANGEROUS_CONTENT Gemini: conteúdo perigoso.
HARM_CATEGORY_CIVIC_INTEGRITY

Gemini: conteúdo que pode ser usado para prejudicar a integridade cívica. OBSOLETO: use enableEnhancedCivicAnswers.

HARM_CATEGORY_JAILBREAK Gemini: comandos que tentam burlar ou subverter as diretrizes de segurança do modelo (tentativas de jailbreak).

ModalityTokenCount

Representa informações de contagem de tokens para uma única modalidade.

Campos
modality enum (Modality)

A modalidade associada a essa contagem de tokens.

tokenCount integer

Número de tokens.

Representação JSON
{
  "modality": enum (Modality),
  "tokenCount": integer
}

Modalidade

Modalidade de parte do conteúdo

Tipos enumerados
MODALITY_UNSPECIFIED Modalidade não especificada.
TEXT Texto simples.
IMAGE Imagem.
VIDEO Vídeo.
AUDIO Áudio.
DOCUMENT Documento, por exemplo, PDF.

SafetyRating

Classificação de segurança de um conteúdo.

A classificação de segurança contém a categoria de dano e o nível de probabilidade de dano nessa categoria para um conteúdo. O conteúdo é classificado para segurança em várias categorias de danos, e a probabilidade da classificação de dano está incluída aqui.

Campos
category enum (HarmCategory)

Obrigatório. A categoria desta classificação.

probability enum (HarmProbability)

Obrigatório. A probabilidade de danos para esse conteúdo.

blocked boolean

O conteúdo foi bloqueado por causa dessa classificação?

Representação JSON
{
  "category": enum (HarmCategory),
  "probability": enum (HarmProbability),
  "blocked": boolean
}

HarmProbability

A probabilidade de um conteúdo ser nocivo.

O sistema de classificação informa a probabilidade de o conteúdo não ser seguro. Isso não indica a gravidade do dano para um conteúdo.

Tipos enumerados
HARM_PROBABILITY_UNSPECIFIED A probabilidade não foi especificada.
NEGLIGIBLE O conteúdo tem uma chance mínima de não ser seguro.
LOW O conteúdo tem uma baixa probabilidade de não ser seguro.
MEDIUM O conteúdo tem uma chance média de não ser seguro.
HIGH O conteúdo tem alta probabilidade de não ser seguro.

SafetySetting

Configuração de segurança que afeta o comportamento de bloqueio de segurança.

Ao transmitir uma configuração de segurança para uma categoria, a probabilidade permitida de bloqueio de conteúdo muda.

Campos
category enum (HarmCategory)

Obrigatório. A categoria dessa configuração.

threshold enum (HarmBlockThreshold)

Obrigatório. Controla o limite de probabilidade em que o dano é bloqueado.

Representação JSON
{
  "category": enum (HarmCategory),
  "threshold": enum (HarmBlockThreshold)
}

HarmBlockThreshold

Bloquear em e além de uma probabilidade de dano especificada.

Tipos enumerados
HARM_BLOCK_THRESHOLD_UNSPECIFIED O limite não foi especificado.
BLOCK_LOW_AND_ABOVE Conteúdo com NEGLIGIBLE será permitido.
BLOCK_MEDIUM_AND_ABOVE Conteúdo com níveis "NEGLIGIBLE" e "LOW" será permitido.
BLOCK_ONLY_HIGH Conteúdo com gravidade NEGLIGENCIÁVEL, BAIXA e MÉDIA será permitido.
BLOCK_NONE Todo o conteúdo será permitido.
OFF Desative o filtro de segurança.

ServiceTier

Nível de serviço da solicitação.

Tipos enumerados
unspecified Nível de serviço padrão, que é "padrão".
standard Nível de serviço Standard.
flex Nível de serviço flexível.
priority Nível de serviço de prioridade.

Conteúdo

O tipo de dados estruturados de base que contém várias partes de uma mensagem.

Um Content inclui um campo role que designa o produtor do Content e um campo parts que contém dados de várias partes com o conteúdo da vez da mensagem.

Campos
parts[] object (Part)

Parts ordenados que constituem uma única mensagem. As partes podem ter diferentes tipos MIME.

role string

Opcional. O produtor do conteúdo. Precisa ser "user" ou "model".

Útil para definir conversas multiturno. Caso contrário, pode ser deixado em branco ou não definido.

Representação JSON
{
  "parts": [
    {
      object (Part)
    }
  ],
  "role": string
}

Parte

Um tipo de dados que contém mídia que faz parte de uma mensagem Content de várias partes.

Um Part consiste em dados que têm um tipo de dados associado. Um Part só pode conter um dos tipos aceitos em Part.data.

Um Part precisa ter um tipo MIME IANA fixo que identifique o tipo e o subtipo da mídia se o campo inlineData for preenchido com bytes brutos.

Campos
thought boolean

Opcional. Indica se a parte foi gerada pelo modelo.

thoughtSignature string (bytes format)

Opcional. Uma assinatura opaca para o pensamento, para que ele possa ser reutilizado em solicitações subsequentes.

Uma string codificada em base64.

partMetadata object (Struct format)

Metadados personalizados associados à parte. Os agentes que usam genai.Part como representação de conteúdo podem precisar acompanhar as informações adicionais. Por exemplo, pode ser o nome de um arquivo/fonte de onde a parte se origina ou uma maneira de multiplexar vários fluxos de partes.

mediaResolution object (MediaResolution)

Opcional. Resolução da mídia de entrada.

mediaProcessing enum (MediaProcessing)

Opcional. Como o modelo processa a mídia desta parte para compreensão. Só é relevante para partes de vídeo (inlineData ou fileData com MIME de vídeo). As partes que não são de vídeo ignoram esse campo.

data Union type
data pode ser apenas de um dos tipos a seguir:
text string

Texto inline.

inlineData object (Blob)

Bytes de mídia inline.

functionCall object (FunctionCall)

Um FunctionCall previsto retornado do modelo que contém uma string que representa o FunctionDeclaration.name com os argumentos e os valores deles.

functionResponse object (FunctionResponse)

A saída resultante de uma FunctionCall que contém uma string que representa o FunctionDeclaration.name e um objeto JSON estruturado com qualquer saída da função é usada como contexto para o modelo.

fileData object (FileData)

Dados baseados em URI.

executableCode object (ExecutableCode)

Código gerado pelo modelo para ser executado.

codeExecutionResult object (CodeExecutionResult)

Resultado da execução do ExecutableCode.

toolCall object (ToolCall)

Chamada de ferramenta do lado do servidor. Esse campo é preenchido quando o modelo prevê uma invocação de ferramenta que precisa ser executada no servidor. O cliente deve repetir essa mensagem para a API.

toolResponse object (ToolResponse)

A saída de uma execução de ToolCall do lado do servidor. Esse campo é preenchido pelo cliente com os resultados da execução do ToolCall correspondente.

metadata Union type
Controla o pré-processamento extra de dados. metadata pode ser apenas de um dos tipos a seguir:
videoMetadata object (VideoMetadata)

Opcional. Metadados do vídeo. Os metadados só devem ser especificados enquanto os dados do vídeo estiverem apresentados em inlineData ou fileData.

Representação JSON
{
  "thought": boolean,
  "thoughtSignature": string,
  "partMetadata": {
    object
  },
  "mediaResolution": {
    object (MediaResolution)
  },
  "mediaProcessing": enum (MediaProcessing),

  // data
  "text": string,
  "inlineData": {
    object (Blob)
  },
  "functionCall": {
    object (FunctionCall)
  },
  "functionResponse": {
    object (FunctionResponse)
  },
  "fileData": {
    object (FileData)
  },
  "executableCode": {
    object (ExecutableCode)
  },
  "codeExecutionResult": {
    object (CodeExecutionResult)
  },
  "toolCall": {
    object (ToolCall)
  },
  "toolResponse": {
    object (ToolResponse)
  }
  // Union type

  // metadata
  "videoMetadata": {
    object (VideoMetadata)
  }
  // Union type
}

Blob

Bytes de mídia brutos.

O texto não pode ser enviado como bytes brutos. Use o campo "text".

Campos
mimeType string

O tipo MIME padrão da IANA dos dados de origem. Exemplos de tipos aceitos: - Imagens: image/png, image/jpeg, image/jpg, image/webp, image/heic, image/heif, image/gif, image/avif - Áudio: audio/*, video/audio/s16le, video/audio/wav - Vídeo: video/* - Texto: text/plain, text/html, text/css, text/javascript, text/x-typescript, text/csv, text/markdown, text/x-python, text/xml, text/rtf, video/text/timestamp - Aplicativos: application/x-javascript, application/x-typescript, application/x-python-code, application/json, application/x-ipynb+json, application/rtf, application/pdf Para mais contexto, consulte Formatos de arquivo aceitos. //

data string (bytes format)

Bytes brutos para formatos de mídia.

Uma string codificada em base64.

Representação JSON
{
  "mimeType": string,
  "data": string
}

FunctionCall

Um FunctionCall previsto retornado do modelo que contém uma string que representa o FunctionDeclaration.name com os argumentos e os valores deles.

Campos
id string

Opcional. Identificador exclusivo da chamada de função. Se preenchido, o cliente vai executar o functionCall e retornar a resposta com o id correspondente.

name string

Obrigatório. O nome da função a ser chamada. Precisa ser az, AZ, 0-9 ou conter sublinhados e traços, com um tamanho máximo de 128.

args object (Struct format)

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

Representação JSON
{
  "id": string,
  "name": string,
  "args": {
    object
  }
}

FunctionResponse

A saída resultante de uma FunctionCall que contém uma string que representa o FunctionDeclaration.name e um objeto JSON estruturado com qualquer saída da função é usada como contexto para o modelo. Ela precisa conter o resultado de umaFunctionCall feita com base na previsão do modelo.

Campos
id string

Opcional. O identificador da chamada de função a que esta resposta se refere. Preenchido pelo cliente para corresponder à chamada de função id.

name string

Obrigatório. O nome da função a ser chamada. Precisa ser az, AZ, 0-9 ou conter sublinhados e traços, com um tamanho máximo de 128.

response object (Struct format)

Obrigatório. A resposta da função no formato de objeto JSON. Os chamadores podem usar qualquer chave que se ajuste à sintaxe da função para retornar a saída dela, por exemplo, "output", "result" etc. Em particular, se a chamada de função não for executada, a resposta poderá ter uma chave "error" para retornar detalhes do erro ao modelo.

Para incluir multimídia, use um subobjeto que contenha uma única chave "$ref" cujo valor seja o inlineData.display_name de um FunctionResponsePart que contenha a multimídia. Consulte https://ai.google.dev/gemini-api/docs/function-calling#multimodal.

parts[] object (FunctionResponsePart)

Opcional. Parts ordenados que constituem uma resposta de função. As partes podem ter diferentes tipos MIME IANA.

willContinue boolean

Opcional. Sinaliza que a chamada de função continua e mais respostas serão retornadas, transformando a chamada de função em um gerador. É aplicável apenas a chamadas de função NON_BLOCKING. Caso contrário, é ignorado. Se for definido como "false", as respostas futuras não serão consideradas. É permitido retornar response vazio com willContinue=False para sinalizar que a chamada de função foi concluída. Isso ainda pode acionar a geração do modelo. Para evitar o acionamento da geração e concluir a chamada de função, defina scheduling como SILENT.

scheduling enum (Scheduling)

Opcional. Especifica como a resposta deve ser programada na conversa. Aplicável apenas a chamadas de função NON_BLOCKING. Caso contrário, é ignorado. O padrão é WHEN_IDLE.

Representação JSON
{
  "id": string,
  "name": string,
  "response": {
    object
  },
  "parts": [
    {
      object (FunctionResponsePart)
    }
  ],
  "willContinue": boolean,
  "scheduling": enum (Scheduling)
}

FunctionResponsePart

Um tipo de dados que contém mídia que faz parte de uma mensagem FunctionResponse.

Um FunctionResponsePart consiste em dados que têm um tipo de dados associado. Um FunctionResponsePart só pode conter um dos tipos aceitos em FunctionResponsePart.data.

Um FunctionResponsePart precisa ter um tipo MIME IANA fixo que identifique o tipo e o subtipo da mídia se o campo inlineData for preenchido com bytes brutos.

Campos
data Union type
Os dados da parte de resposta da função. data pode ser apenas de um dos tipos a seguir:
inlineData object (FunctionResponseBlob)

Bytes de mídia inline.

Representação JSON
{

  // data
  "inlineData": {
    object (FunctionResponseBlob)
  }
  // Union type
}

FunctionResponseBlob

Bytes de mídia brutos para resposta da função.

O texto não deve ser enviado como bytes brutos. Use o campo "FunctionResponse.response".

Campos
mimeType string

O tipo MIME padrão da IANA dos dados de origem. Exemplos: - image/png - image/jpeg Se um tipo MIME sem suporte for fornecido, um erro será retornado. Para uma lista completa de tipos compatíveis, consulte Formatos de arquivo compatíveis.

data string (bytes format)

Bytes brutos para formatos de mídia.

Uma string codificada em base64.

Representação JSON
{
  "mimeType": string,
  "data": string
}

Programação

Especifica como a resposta deve ser programada na conversa.

Tipos enumerados
SCHEDULING_UNSPECIFIED Esse valor não é usado.
SILENT Adicione apenas o resultado ao contexto da conversa, sem interromper ou acionar a geração.
WHEN_IDLE Adicione o resultado ao contexto da conversa e peça para gerar a saída sem interromper a geração em andamento.
INTERRUPT Adicione o resultado ao contexto da conversa, interrompa a geração em andamento e peça para gerar a saída.

FileData

Dados baseados em URI.

Campos
mimeType string

Opcional. O tipo MIME padrão da IANA dos dados de origem.

fileUri string

Obrigatório. URI.

Representação JSON
{
  "mimeType": string,
  "fileUri": string
}

ExecutableCode

Código gerado pelo modelo para ser executado e o resultado retornado ao modelo.

Gerado apenas ao usar a ferramenta CodeExecution, em que o código é executado automaticamente e um CodeExecutionResult correspondente também é gerado.

Campos
id string

Opcional. Identificador exclusivo da parte ExecutableCode. O servidor retorna o CodeExecutionResult com o id correspondente.

language enum (Language)

Obrigatório. Linguagem de programação do code.

code string

Obrigatório. O código a ser executado.

Representação JSON
{
  "id": string,
  "language": enum (Language),
  "code": string
}

Idioma

Linguagens de programação compatíveis com o código gerado.

Tipos enumerados
LANGUAGE_UNSPECIFIED Idioma não especificado. Esse valor não deve ser usado.
PYTHON Python >= 3.10, com numpy e simpy disponíveis. O Python é o idioma padrão.

CodeExecutionResult

Resultado da execução do ExecutableCode.

Gerado somente quando a ferramenta CodeExecution é usada.

Campos
id string

Opcional. O identificador da parte ExecutableCode a que este resultado se refere. Preenchido apenas se o ExecutableCode correspondente tiver um ID.

outcome enum (Outcome)

Obrigatório. Resultado da execução de código.

output string

Opcional. Contém stdout quando a execução de código é bem-sucedida, stderr ou outra descrição.

Representação JSON
{
  "id": string,
  "outcome": enum (Outcome),
  "output": string
}

Resultado

Enumeração dos possíveis resultados da execução de código.

Tipos enumerados
OUTCOME_UNSPECIFIED Status não especificado. Esse valor não deve ser usado.
OUTCOME_OK A execução de código foi concluída com sucesso. output contém o stdout, se houver.
OUTCOME_FAILED Falha na execução do código. output contém stderr e stdout, se houver.
OUTCOME_DEADLINE_EXCEEDED A execução de código durou muito tempo e foi cancelada. Pode ou não haver um output parcial.

ToolCall

Um ToolCall previsto do lado do servidor retornado pelo modelo. Essa mensagem contém informações sobre uma ferramenta que o modelo quer invocar. Não é esperado que o cliente execute esse ToolCall. Em vez disso, o cliente precisa transmitir esse ToolCall de volta à API em uma próxima vez em uma mensagem Content, junto com o ToolResponse correspondente.

Campos
id string

Opcional. Identificador exclusivo da chamada de função. O servidor retorna a resposta da ferramenta com o id correspondente.

toolName string

Opcional. O nome da ferramenta que foi chamada.

toolType enum (ToolType)

Obrigatório. O tipo de ferramenta que foi chamada.

args object (Struct format)

Opcional. Os argumentos da chamada de ferramenta. Exemplo: {"arg1" : "value1", "arg2" : "value2" , ...}

Representação JSON
{
  "id": string,
  "toolName": string,
  "toolType": enum (ToolType),
  "args": {
    object
  }
}

ToolType

O tipo de ferramenta na chamada de função.

Tipos enumerados
TOOL_TYPE_UNSPECIFIED Tipo de ferramenta não especificado.
GOOGLE_SEARCH_WEB Ferramenta de pesquisa do Google, mapeada para Tool.google_search.search_types.web_search.
GOOGLE_SEARCH_IMAGE Ferramenta de pesquisa por imagens, mapeada para Tool.google_search.search_types.image_search.
URL_CONTEXT Ferramenta de contexto de URL, mapeada para Tool.url_context.
GOOGLE_MAPS Ferramenta do Google Maps, mapeada para Tool.google_maps.

ToolResponse

A saída de uma execução de ToolCall do lado do servidor. Essa mensagem contém os resultados de uma invocação de ferramenta iniciada por um ToolCall do modelo. O cliente precisa transmitir esse ToolResponse de volta para a API em uma próxima vez em uma mensagem Content, junto com o ToolCall correspondente.

Campos
id string

Opcional. O identificador da chamada de função a que esta resposta se refere.

toolType enum (ToolType)

Obrigatório. O tipo de ferramenta que foi chamada, correspondente ao toolType no ToolCall correspondente.

response object (Struct format)

Opcional. A resposta da ferramenta.

Representação JSON
{
  "id": string,
  "toolType": enum (ToolType),
  "response": {
    object
  }
}

VideoMetadata

Descontinuado: use GenerateContentRequest.processing_options. Os metadados descrevem o conteúdo do vídeo de entrada.

Campos
startOffset string (Duration format)

Opcional. O deslocamento inicial do vídeo.

Duração em segundos com até nove dígitos fracionários, terminando em "s". Exemplo: "3.5s".

endOffset string (Duration format)

Opcional. O deslocamento final do vídeo.

Duração em segundos com até nove dígitos fracionários, terminando em "s". Exemplo: "3.5s".

fps number

Opcional. A taxa de frames do vídeo enviado ao modelo. Se não for especificado, o valor padrão será 1,0. O intervalo de fps é (0,0, 24,0].

Representação JSON
{
  "startOffset": string,
  "endOffset": string,
  "fps": number
}

MediaResolution

Resolução de mídia para tokenização.

Campos
value Union type
O nível de resolução da mídia. value pode ser apenas de um dos tipos a seguir:
level enum (Level)

A qualidade da tokenização usada para determinada mídia. para suporte à API Gemini .

Representação JSON
{

  // value
  "level": enum (Level)
  // Union type
}

Nível

O nível de resolução da mídia.

Tipos enumerados
MEDIA_RESOLUTION_UNSPECIFIED A resolução da mídia não foi definida.
MEDIA_RESOLUTION_LOW A resolução de mídia está definida como baixa.
MEDIA_RESOLUTION_MEDIUM A resolução de mídia foi definida como média.
MEDIA_RESOLUTION_HIGH A resolução da mídia está definida como alta.
MEDIA_RESOLUTION_ULTRA_HIGH A resolução da mídia está definida como ultra alta.

MediaProcessing

Como o modelo processa a mídia de entrada para entender.

Tipos enumerados
MEDIA_PROCESSING_UNSPECIFIED Padrão. Usa o processamento específico do modelo (3.5 Pro+ -> AGENTIC, modelos mais antigos -> STATIC).
STATIC Extração de quadros com taxa fixa. Todos os frames colocados em contexto.
AGENTIC Navegação dinâmica orientada por modelo. Recomendado para a maioria dos casos de uso.

Ambiente

Um ambiente de execução para um agente.

Campos
id string

Obrigatório. Apenas saída. O ID do ambiente.

sources[] object (Source)

Fontes a serem montadas no ambiente.

created string

Apenas saída. O horário em que o ambiente foi criado no formato ISO 8601 (AAAA-MM-DDThh:mm:ssZ).

updated string

Apenas saída. A hora em que o ambiente foi atualizado pela última vez no formato ISO 8601 (AAAA-MM-DDThh:mm:ssZ).

lastAccessed string

Apenas saída. A hora em que o ambiente foi acessado pela última vez no formato ISO 8601 (AAAA-MM-DDThh:mm:ssZ).

status enum (Status)

Apenas saída. O status do contêiner de ambiente.

fileCount string (int64 format)

Apenas saída. O número de arquivos no ambiente, somente saída.

sizeBytes string (int64 format)

Apenas saída. O tamanho total dos arquivos do ambiente em bytes, somente saída.

network Union type
Configuração de rede para o ambiente. network pode ser apenas de um dos tipos a seguir:
networkAllowlist object (EnvironmentNetworkEgressAllowlist)

Permitir apenas domínios específicos.

networkMode enum (NetworkMode)

Modo de saída de rede.

Representação JSON
{
  "id": string,
  "sources": [
    {
      object (Source)
    }
  ],
  "created": string,
  "updated": string,
  "lastAccessed": string,
  "status": enum (Status),
  "fileCount": string,
  "sizeBytes": string,

  // network
  "networkAllowlist": {
    object (EnvironmentNetworkEgressAllowlist)
  },
  "networkMode": enum (NetworkMode)
  // Union type
}

Status

Status do ambiente.

Tipos enumerados
STATUS_UNSPECIFIED
ACTIVE
EXPIRED

NetworkMode

Modo de saída de rede para configurações que não estão na lista de permissões.

Tipos enumerados
NETWORK_MODE_UNSPECIFIED Valor padrão. Não utilizado.
DISABLED Toda a saída de rede é bloqueada.

Esquema

O objeto Schema permite a definição de tipos de dados de entrada e saída. Esses tipos podem ser objetos, mas também primitivos e matrizes. Representa um subconjunto selecionado de um objeto de esquema da OpenAPI 3.0.

Campos
type enum (Type)

Obrigatório. Tipo de dados.

format string

Opcional. O formato dos dados. Qualquer valor é permitido, mas a maioria não aciona nenhuma funcionalidade especial.

title string

Opcional. O título do esquema.

description string

Opcional. Uma breve descrição do parâmetro. Isso pode conter exemplos de uso. A descrição do parâmetro pode ser formatada como Markdown.

nullable boolean

Opcional. Indica se o valor pode ser nulo.

enum[] string

Opcional. Valores possíveis do elemento de Type.STRING com formato de enumeração. Por exemplo, podemos definir uma direção de tipo enumerado como : {type:STRING, format:enum, enum:["EAST", NORTH", "SOUTH", "WEST"]}

maxItems string (int64 format)

Opcional. Número máximo de elementos para Type.ARRAY.

minItems string (int64 format)

Opcional. Número mínimo de elementos para Type.ARRAY.

properties map (key: string, value: object (Schema))

Opcional. Propriedades de Type.OBJECT.

Um objeto com uma lista de pares "key": value. Exemplo: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

required[] string

Opcional. Propriedades obrigatórias de Type.OBJECT.

minProperties string (int64 format)

Opcional. Número mínimo de propriedades para Type.OBJECT.

maxProperties string (int64 format)

Opcional. Número máximo de propriedades para Type.OBJECT.

minLength string (int64 format)

Opcional. CAMPOS DE ESQUEMA PARA O TIPO STRING Comprimento mínimo do Type.STRING

maxLength string (int64 format)

Opcional. Comprimento máximo de Type.STRING

pattern string

Opcional. Padrão do Type.STRING para restringir uma string a uma expressão regular.

example value (Value format)

Opcional. Exemplo do objeto. Só será preenchido quando o objeto for a raiz.

anyOf[] object (Schema)

Opcional. O valor precisa ser validado em relação a qualquer um (um ou mais) dos subesquemas na lista.

propertyOrdering[] string

Opcional. A ordem das propriedades. Não é um campo padrão na especificação da API aberta. Usado para determinar a ordem das propriedades na resposta.

default value (Value format)

Opcional. Valor padrão do campo. De acordo com o esquema JSON, esse campo é destinado a geradores de documentação e não afeta a validação. Por isso, ele está incluído aqui e é ignorado para que os desenvolvedores que enviam esquemas com um campo default não recebam erros de campo desconhecido.

items object (Schema)

Opcional. Esquema dos elementos de Type.ARRAY.

minimum number

Opcional. CAMPOS DE ESQUEMA PARA TIPO INTEGER e NUMBER Valor mínimo de Type.INTEGER e Type.NUMBER

maximum number

Opcional. Valor máximo de Type.INTEGER e Type.NUMBER

Representação JSON
{
  "type": enum (Type),
  "format": string,
  "title": string,
  "description": string,
  "nullable": boolean,
  "enum": [
    string
  ],
  "maxItems": string,
  "minItems": string,
  "properties": {
    string: {
      object (Schema)
    },
    ...
  },
  "required": [
    string
  ],
  "minProperties": string,
  "maxProperties": string,
  "minLength": string,
  "maxLength": string,
  "pattern": string,
  "example": value,
  "anyOf": [
    {
      object (Schema)
    }
  ],
  "propertyOrdering": [
    string
  ],
  "default": value,
  "items": {
    object (Schema)
  },
  "minimum": number,
  "maximum": number
}

Tipo

O tipo contém a lista de tipos de dados da OpenAPI, conforme definido em https://spec.openapis.org/oas/v3.0.3#data-types

Tipos enumerados
TYPE_UNSPECIFIED Não especificado, não pode ser usado.
STRING Tipo de string.
NUMBER Tipo de número.
INTEGER Tipo inteiro.
BOOLEAN Tipo booleano.
ARRAY Tipo de matriz.
OBJECT Tipo de objeto.
NULL Tipo nulo.

Ferramenta

Detalhes da ferramenta que o modelo pode usar para gerar uma resposta.

Uma Tool é uma parte do código que permite ao sistema interagir com sistemas externos para realizar uma ação ou conjunto de ações fora do conhecimento e do escopo do modelo.

Próximo ID: 17

Campos
functionDeclarations[] object (FunctionDeclaration)

Opcional. Uma lista de FunctionDeclarations disponíveis para o modelo que podem ser usados para chamada de função.

O modelo ou sistema não executa a função. Em vez disso, a função definida pode ser retornada como um FunctionCall com argumentos para o lado do cliente para execução. O modelo pode decidir chamar um subconjunto dessas funções preenchendo FunctionCall na resposta. A próxima vez que você falar pode conter um FunctionResponse com o contexto de geração Content.role "function" para a próxima vez que o modelo falar.

googleSearchRetrieval object (GoogleSearchRetrieval)

Opcional. Ferramenta de recuperação com tecnologia da Pesquisa Google.

codeExecution object (CodeExecution)

Opcional. Permite que o modelo execute código como parte da geração.

computerUse object (ComputerUse)

Opcional. Ferramenta para ajudar o modelo a interagir diretamente com o computador. Se ativado, ele preenche automaticamente as declarações de função específicas para uso do computador.

urlContext object (UrlContext)

Opcional. Ferramenta para oferecer suporte à recuperação de contexto de URL.

mcpServers[] object (McpServer)

Opcional. Servidores MCP a serem conectados.

googleMaps object (GoogleMaps)

Opcional. Ferramenta que permite embasar a resposta do modelo com contexto geoespacial relacionado à consulta do usuário.

Representação JSON
{
  "functionDeclarations": [
    {
      object (FunctionDeclaration)
    }
  ],
  "googleSearchRetrieval": {
    object (GoogleSearchRetrieval)
  },
  "codeExecution": {
    object (CodeExecution)
  },
  "googleSearch": {
    object (GoogleSearch)
  },
  "computerUse": {
    object (ComputerUse)
  },
  "urlContext": {
    object (UrlContext)
  },
  "fileSearch": {
    object (FileSearch)
  },
  "mcpServers": [
    {
      object (McpServer)
    }
  ],
  "googleMaps": {
    object (GoogleMaps)
  }
}

FunctionDeclaration

Representação estruturada de uma declaração de função, conforme definido pela especificação OpenAPI 3.03. O nome e os parâmetros da função estão incluídos nessa declaração. Essa FunctionDeclaration é uma representação de um bloco de código que pode ser usado como uma Tool pelo modelo e executado pelo cliente.

Campos
name string

Obrigatório. O nome da função. Precisa ser az, AZ, 0-9 ou conter sublinhados, dois-pontos, pontos e traços, com um tamanho máximo de 128.

description string

Obrigatório. Uma breve descrição da função.

behavior enum (Behavior)

Opcional. Especifica o comportamento da função. No momento, só há suporte para o método BidiGenerateContent.

parameters object (Schema)

Opcional. Descreve os parâmetros dessa função. Reflete a chave de string do objeto de parâmetro da API aberta 3.03: o nome do parâmetro. Os nomes de parâmetros diferenciam maiúsculas de minúsculas. Valor do esquema: o esquema que define o tipo usado para o parâmetro.

parametersJsonSchema value (Value format)

Opcional. Descreve os parâmetros da função no formato de esquema JSON. O esquema precisa descrever um objeto em que as propriedades são os parâmetros da função. Exemplo:

{
  "type": "object",
  "properties": {
    "name": { "type": "string" },
    "age": { "type": "integer" }
  },
  "additionalProperties": false,
  "required": ["name", "age"],
  "propertyOrdering": ["name", "age"]
}

Esse campo é mutuamente exclusivo com parameters.

response object (Schema)

Opcional. Descreve a saída dessa função no formato de esquema JSON. Reflete o objeto de resposta da API aberta 3.03. O esquema define o tipo usado para o valor da resposta da função.

responseJsonSchema value (Value format)

Opcional. Descreve a saída dessa função no formato de esquema JSON. O valor especificado pelo esquema é o valor da resposta da função.

Esse campo é mutuamente exclusivo com response.

Representação JSON
{
  "name": string,
  "description": string,
  "behavior": enum (Behavior),
  "parameters": {
    object (Schema)
  },
  "parametersJsonSchema": value,
  "response": {
    object (Schema)
  },
  "responseJsonSchema": value
}

Comportamento

Define o comportamento da função. O valor padrão é BLOCKING.

Tipos enumerados
UNSPECIFIED Esse valor não é usado.
BLOCKING Se definido, o sistema vai esperar receber a resposta da função antes de continuar a conversa.
NON_BLOCKING Se definido, o sistema não vai esperar para receber a resposta da função. Em vez disso, ele vai tentar processar as respostas de função à medida que elas ficarem disponíveis, mantendo a conversa entre o usuário e o modelo.

GoogleSearchRetrieval

Ferramenta para recuperar dados públicos da Web para embasamento, desenvolvida pelo Google.

Campos
dynamicRetrievalConfig object (DynamicRetrievalConfig)

Especifica a configuração de recuperação dinâmica para a origem especificada.

Representação JSON
{
  "dynamicRetrievalConfig": {
    object (DynamicRetrievalConfig)
  }
}

DynamicRetrievalConfig

Descreve as opções para personalizar a recuperação dinâmica.

Campos
mode enum (Mode)

O modo do preditor a ser usado na recuperação dinâmica.

dynamicThreshold number

O limite a ser usado na recuperação dinâmica. Se não for definido, um valor padrão do sistema será usado.

Representação JSON
{
  "mode": enum (Mode),
  "dynamicThreshold": number
}

Modo

O modo do preditor a ser usado na recuperação dinâmica.

Tipos enumerados
MODE_UNSPECIFIED Sempre acione a recuperação.
MODE_DYNAMIC Execute a recuperação somente quando o sistema decidir que é necessário.

CodeExecution

Esse tipo não tem campos.

Ferramenta que executa o código gerado pelo modelo e retorna automaticamente o resultado para ele.

Consulte também ExecutableCode e CodeExecutionResult, que só são gerados ao usar essa ferramenta.

GoogleSearch

Tipo de ferramenta GoogleSearch. Ferramenta para oferecer suporte à Pesquisa Google no modelo. Tecnologia do Google.

Campos
timeRangeFilter object (Interval)

Opcional. Filtre os resultados da pesquisa para um período específico. Se os clientes definirem um horário de início, eles também precisarão definir um horário de término (e vice-versa).

searchTypes object (SearchTypes)

Opcional. O conjunto de tipos de pesquisa a serem ativados. Se não for definida, a pesquisa na Web será ativada por padrão.

Representação JSON
{
  "timeRangeFilter": {
    object (Interval)
  },
  "searchTypes": {
    object (SearchTypes)
  }
}

Intervalo

Representa um intervalo de tempo, codificado como um início de carimbo de data/hora (incluído) e um fim de carimbo de data/hora (não incluído).

O início precisa ser menor ou igual ao fim. Quando o início é igual ao fim, o intervalo fica vazio (não corresponde a nenhum horário). Quando o início e o fim não são especificados, o intervalo corresponde a qualquer momento.

Campos
startTime string (Timestamp format)

Opcional. Início inclusivo do intervalo.

Se especificado, um carimbo de data/hora correspondente a esse intervalo precisará ser igual ou posterior ao início.

Usa o padrão RFC 3339, em que a saída gerada é sempre convertida em Z e tem 0, 3, 6 ou 9 dígitos fracionários. Além de "Z", outros ajustes também são aceitos. Exemplos: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" ou "2014-10-02T15:01:23+05:30".

endTime string (Timestamp format)

Opcional. Fim exclusivo do intervalo.

Se especificado, um carimbo de data/hora correspondente a esse intervalo precisará ser anterior ao fim.

Usa o padrão RFC 3339, em que a saída gerada é sempre convertida em Z e tem 0, 3, 6 ou 9 dígitos fracionários. Além de "Z", outros ajustes também são aceitos. Exemplos: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" ou "2014-10-02T15:01:23+05:30".

Representação JSON
{
  "startTime": string,
  "endTime": string
}

SearchTypes

Diferentes tipos de pesquisa que podem ser ativados na ferramenta GoogleSearch.

Campos
Representação JSON
{
  "webSearch": {
    object (WebSearch)
  },
  "imageSearch": {
    object (ImageSearch)
  }
}

WebSearch

Esse tipo não tem campos.

Pesquisa na Web padrão para embasamento e configurações relacionadas.

ImageSearch

Esse tipo não tem campos.

Pesquisa por imagens para embasamento e configurações relacionadas.

ComputerUse

Tipo de ferramenta "Uso do computador".

Campos
environment enum (Environment)

Obrigatório. O ambiente em operação.

excludedPredefinedFunctions[] string

Opcional. Por padrão, as funções predefinidas são incluídas na chamada do modelo final. Alguns deles podem ser excluídos explicitamente da inclusão automática. Isso pode ter duas finalidades: 1. Usar um espaço de ação mais restrito / diferente. 2. Melhorar as definições / instruções de funções predefinidas.

enablePromptInjectionDetection boolean

Opcional. Define se a verificação de detecção de injeção de comandos deve ser ativada em solicitações de uso do computador.

disabledSafetyPolicies[] enum (SafetyPolicy)

Opcional. Políticas de segurança desativadas para uso do computador.

Representação JSON
{
  "environment": enum (Environment),
  "excludedPredefinedFunctions": [
    string
  ],
  "enablePromptInjectionDetection": boolean,
  "disabledSafetyPolicies": [
    enum (SafetyPolicy)
  ]
}

Ambiente

Representa o ambiente em que a operação está sendo realizada, como um navegador da Web.

Tipos enumerados
ENVIRONMENT_UNSPECIFIED O padrão é "browser".
ENVIRONMENT_BROWSER Funciona em um navegador da Web.
ENVIRONMENT_MOBILE Operar em um ambiente móvel.
ENVIRONMENT_DESKTOP Funciona em um ambiente de computador.

SafetyPolicy

Políticas de segurança predefinidas para uso de computadores.

Tipos enumerados
SAFETY_POLICY_UNSPECIFIED Política de segurança não especificada.
FINANCIAL_TRANSACTIONS Política de segurança para transações financeiras.
SENSITIVE_DATA_MODIFICATION Política de segurança para modificação de dados sensíveis.
COMMUNICATION_TOOL Política de segurança para ferramentas de comunicação (por exemplo, Gmail, Chat, Meet).
ACCOUNT_CREATION Política de segurança para criação de contas.
DATA_MODIFICATION Política de segurança para modificação de dados.
LEGAL_TERMS_AND_AGREEMENTS Política de segurança para termos e contratos legais.

UrlContext

Esse tipo não tem campos.

Ferramenta para oferecer suporte à recuperação de contexto de URL.

FileSearch

A ferramenta FileSearch que recupera conhecimento de corpora de recuperação semântica. Os arquivos são importados para os corpus de recuperação semântica usando a API ImportFile.

Campos
fileSearchStoreNames[] string

Obrigatório. Os nomes dos fileSearchStores a serem recuperados. Exemplo: fileSearchStores/my-file-search-store-123

metadataFilter string

Opcional. Filtro de metadados a ser aplicado aos documentos e partes da recuperação semântica.

topK integer

Opcional. O número de partes da recuperação semântica a serem recuperadas.

Representação JSON
{
  "fileSearchStoreNames": [
    string
  ],
  "metadataFilter": string,
  "topK": integer
}

McpServer

Um MCPServer é um servidor que pode ser chamado pelo modelo para realizar ações. É um servidor que implementa o protocolo MCP. Próximo código: 4

Campos
name string

O nome do MCPServer.

transport Union type
O transporte usado para se conectar ao MCPServer. transport pode ser apenas de um dos tipos a seguir:
streamableHttpTransport object (StreamableHttpTransport)

Um transporte que pode transmitir solicitações e respostas HTTP.

Representação JSON
{
  "name": string,

  // transport
  "streamableHttpTransport": {
    object (StreamableHttpTransport)
  }
  // Union type
}

StreamableHttpTransport

Um transporte que pode transmitir solicitações e respostas HTTP. Próximo código: 4

Campos
url string

O URL completo do endpoint MCPServer. Exemplo: "https://api.example.com/mcp"

headers map (key: string, value: string)

Opcional: campos para cabeçalhos de autenticação, tempos limite etc., se necessário.

Um objeto com uma lista de pares "key": value. Exemplo: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

timeout string (Duration format)

Tempo limite HTTP para operações regulares.

Duração em segundos com até nove dígitos fracionários, terminando em "s". Exemplo: "3.5s".

sseReadTimeout string (Duration format)

Tempo limite para operações de leitura de SSE.

Duração em segundos com até nove dígitos fracionários, terminando em "s". Exemplo: "3.5s".

terminateOnClose boolean

Define se a sessão do cliente será fechada quando o transporte for fechado.

Representação JSON
{
  "url": string,
  "headers": {
    string: string,
    ...
  },
  "timeout": string,
  "sseReadTimeout": string,
  "terminateOnClose": boolean
}

GoogleMaps

A ferramenta do Google Maps que fornece contexto geoespacial para a consulta do usuário.

Campos
enableWidget boolean

Opcional. Se um token de contexto de widget deve ser retornado no GroundingMetadata da resposta. Os desenvolvedores podem usar o token de contexto do widget para renderizar um widget do Google Maps com contexto geoespacial relacionado aos lugares que o modelo referencia na resposta.

Representação JSON
{
  "enableWidget": boolean
}

Recurso REST: auth_tokens

Recurso: AuthToken

Uma solicitação para criar um token de autenticação temporário.

Campos
name string

Apenas saída. Identificador. O próprio token.

expireTime string (Timestamp format)

Opcional. Somente entrada. Imutável. Um horário opcional após o qual, ao usar o token resultante, as mensagens em sessões BidiGenerateContent serão rejeitadas. O Gemini pode fechar a sessão antes desse período.

Se não for definido, o padrão será 30 minutos no futuro. Se definido, esse valor precisa ser menor que 20 horas no futuro.

Usa o padrão RFC 3339, em que a saída gerada é sempre convertida em Z e tem 0, 3, 6 ou 9 dígitos fracionários. Além de "Z", outros ajustes também são aceitos. Exemplos: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" ou "2014-10-02T15:01:23+05:30".

newSessionExpireTime string (Timestamp format)

Opcional. Somente entrada. Imutável. O período após o qual novas sessões da API Live usando o token resultante desta solicitação serão rejeitadas.

Se não for definido, o padrão será 60 segundos no futuro. Se definido, esse valor precisa ser menor que 20 horas no futuro.

Usa o padrão RFC 3339, em que a saída gerada é sempre convertida em Z e tem 0, 3, 6 ou 9 dígitos fracionários. Além de "Z", outros ajustes também são aceitos. Exemplos: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" ou "2014-10-02T15:01:23+05:30".

fieldMask string (FieldMask format)

Opcional. Somente entrada. Imutável. Se "fieldMask" estiver vazio e bidiGenerateContentSetup não estiver presente, a mensagem BidiGenerateContentSetup efetiva será extraída da conexão da API Live.

Se fieldMask estiver vazio e bidiGenerateContentSetup estiver presente, a mensagem BidiGenerateContentSetup efetiva será extraída inteiramente de bidiGenerateContentSetup nesta solicitação. A mensagem de configuração da conexão da API Live é ignorada.

Se fieldMask não estiver vazio, os campos correspondentes de bidiGenerateContentSetup vão substituir os campos da mensagem de configuração na conexão da API Live.

É uma lista separada por vírgulas de nomes de campos totalmente qualificados. Exemplo: "user.displayName,photo".

config Union type
A configuração específica do método para o token resultante. config pode ser apenas de um dos tipos a seguir:
bidiGenerateContentSetup object (BidiGenerateContentSetup)

Opcional. Somente entrada. Imutável. Configuração específica para BidiGenerateContent.

uses integer

Opcional. Somente entrada. Imutável. O número de vezes que o token pode ser usado. Se esse valor for zero, nenhum limite será aplicado. Retomar uma sessão da API Live não conta como um uso. Se não for especificado, o padrão será 1.

Representação JSON
{
  "name": string,
  "expireTime": string,
  "newSessionExpireTime": string,
  "fieldMask": string,

  // config
  "bidiGenerateContentSetup": {
    object (BidiGenerateContentSetup)
  }
  // Union type
  "uses": integer
}

BidiGenerateContentSetup

Mensagem a ser enviada no primeiro (e apenas no primeiro) BidiGenerateContentClientMessage. Contém a configuração que será aplicada durante a RPC de streaming.

Os clientes precisam aguardar uma mensagem BidiGenerateContentSetupComplete antes de enviar outras mensagens.

Campos
model string

Obrigatório. O nome do recurso do modelo. Ele serve como um ID para o modelo usar.

Formato: models/{model}

generationConfig object (GenerationConfig)

Opcional. Configuração de geração.

Os seguintes campos não são compatíveis:

  • responseLogprobs
  • responseMimeType
  • logprobs
  • responseSchema
  • responseJsonSchema
  • stop_sequence
  • skipResponseCache
  • routing_config
  • audio_timestamp
systemInstruction object (Content)

Opcional. O usuário forneceu instruções do sistema para o modelo.

Observação: use apenas texto em partes, e o conteúdo de cada parte ficará em um parágrafo separado.

tools[] object (Tool)

Opcional. Uma lista de Tools que o modelo pode usar para gerar a próxima resposta.

Uma Tool é uma parte do código que permite ao sistema interagir com sistemas externos para realizar uma ação ou conjunto de ações fora do conhecimento e do escopo do modelo.

realtimeInputConfig object (RealtimeInputConfig)

Opcional. Configura o processamento de entradas em tempo real.

sessionResumption object (SessionResumptionConfig)

Opcional. Configura o mecanismo de retomada da sessão.

Se incluído, o servidor vai enviar mensagens SessionResumptionUpdate.

contextWindowCompression object (ContextWindowCompressionConfig)

Opcional. Configura um mecanismo de compactação de janela de contexto.

Se incluído, o servidor vai reduzir automaticamente o tamanho do contexto quando ele exceder o comprimento configurado.

inputAudioTranscription object (AudioTranscriptionConfig)

Opcional. Se definido, permite a transcrição da entrada de texto por voz. A transcrição é alinhada ao idioma do áudio de entrada, se configurado.

outputAudioTranscription object (AudioTranscriptionConfig)

Opcional. Se definido, ativa a transcrição da saída de áudio do modelo. A transcrição é alinhada ao código de idioma especificado para o áudio de saída, se configurado.

historyConfig object (HistoryConfig)

Opcional. Configura a troca de histórico entre o cliente e o servidor.

Representação JSON
{
  "model": string,
  "generationConfig": {
    object (GenerationConfig)
  },
  "systemInstruction": {
    object (Content)
  },
  "tools": [
    {
      object (Tool)
    }
  ],
  "realtimeInputConfig": {
    object (RealtimeInputConfig)
  },
  "sessionResumption": {
    object (SessionResumptionConfig)
  },
  "contextWindowCompression": {
    object (ContextWindowCompressionConfig)
  },
  "inputAudioTranscription": {
    object (AudioTranscriptionConfig)
  },
  "outputAudioTranscription": {
    object (AudioTranscriptionConfig)
  },
  "historyConfig": {
    object (HistoryConfig)
  }
}

GenerationConfig

Opções de configuração para geração e saídas de modelos. Nem todos os parâmetros são configuráveis para todos os modelos.

Campos
stopSequences[] string

Opcional. O conjunto de sequências de caracteres (até 5) que vão interromper a geração de saída. Se especificado, a API vai parar na primeira aparição de um stop_sequence. A sequência de paradas não será incluída como parte da resposta.

responseMimeType string

Opcional. Tipo MIME do texto candidato gerado. Os tipos MIME compatíveis são: text/plain: (padrão) saída de texto. application/json: resposta JSON nos candidatos de resposta. text/x.enum: ENUM como uma resposta de string nos candidatos de resposta. Consulte os documentos para ver uma lista de todos os tipos MIME de texto compatíveis.

responseSchema
(deprecated)
object (Schema)

Opcional. Esquema de saída do texto candidato gerado. Os esquemas precisam ser um subconjunto do esquema OpenAPI e podem ser objetos, primitivos ou matrizes.

Se definido, um responseMimeType compatível também precisa ser definido. Tipos MIME compatíveis: application/json: esquema para resposta JSON. Consulte o guia de geração de texto JSON para mais detalhes.

_responseJsonSchema
(deprecated)
value (Value format)

Opcional. Esquema de saída da resposta gerada. Essa é uma alternativa a responseSchema que aceita esquema JSON.

Se definido, responseSchema precisa ser omitido, mas responseMimeType é obrigatório.

Embora o esquema JSON completo possa ser enviado, nem todos os recursos são compatíveis. Especificamente, apenas as seguintes propriedades são compatíveis:

  • $id
  • $defs
  • $ref
  • $anchor
  • type
  • format
  • title
  • description
  • enum (para strings e números)
  • items
  • prefixItems
  • minItems
  • maxItems
  • minimum
  • maximum
  • anyOf
  • oneOf (interpretado da mesma forma que anyOf)
  • properties
  • additionalProperties
  • required

A propriedade não padrão propertyOrdering também pode ser definida.

As referências cíclicas são desenroladas até um grau limitado e, portanto, só podem ser usadas em propriedades não obrigatórias. (Propriedades anuláveis não são suficientes.) Se $ref estiver definido em um subesquema, nenhuma outra propriedade, exceto aquelas que começam como $, poderá ser definida.

responseJsonSchema value (Value format)

Opcional. Um detalhe interno. Use responseJsonSchema em vez deste campo.

responseModalities[] enum (Modality)

Opcional. As modalidades solicitadas da resposta. Representa o conjunto de modalidades que o modelo pode retornar e que devem ser esperadas na resposta. Essa é uma correspondência exata com as modalidades da resposta.

Um modelo pode ter várias combinações de modalidades compatíveis. Se as modalidades solicitadas não corresponderem a nenhuma das combinações compatíveis, um erro será retornado.

Uma lista vazia equivale a solicitar apenas texto.

candidateCount integer

Opcional. Número de respostas geradas a serem retornadas. Se não for definido, o padrão será 1. Observação: isso não funciona para modelos de geração anterior (família Gemini 1.0).

maxOutputTokens integer

Opcional. O número máximo de tokens a serem incluídos em um candidato a resposta.

Observação: o valor padrão varia de acordo com o modelo. Consulte o atributo Model.output_token_limit do Model retornado pela função getModel.

temperature number

Opcional. Controla a aleatoriedade da saída.

Observação: o valor padrão varia de acordo com o modelo. Consulte o atributo Model.temperature do Model retornado pela função getModel.

Os valores podem variar de [0,0, 2,0].

topP number

Opcional. A probabilidade cumulativa máxima de tokens a serem considerados na amostragem.

O modelo usa amostragem combinada Top-k e Top-p (núcleo).

Os tokens são classificados com base nas probabilidades atribuídas para que apenas os mais prováveis sejam considerados. A amostragem top-k limita diretamente o número máximo de tokens a serem considerados, enquanto a amostragem de núcleo limita o número de tokens com base na probabilidade cumulativa.

Observação: o valor padrão varia de acordo com o Model e é especificado pelo atributo Model.top_p retornado da função getModel. Um atributo topK vazio indica que o modelo não aplica a amostragem top-k e não permite definir topK em solicitações.

topK integer

Opcional. O número máximo de tokens a serem considerados ao fazer a amostragem.

Os modelos do Gemini usam amostragem Top-p (de núcleo) ou uma combinação de amostragem Top-k e de núcleo. A amostragem Top-k considera o conjunto dos topK tokens mais prováveis. Os modelos executados com amostragem de núcleo não permitem a configuração de topK.

Observação: o valor padrão varia de acordo com o Model e é especificado pelo atributo Model.top_p retornado da função getModel. Um atributo topK vazio indica que o modelo não aplica a amostragem top-k e não permite definir topK em solicitações.

seed integer

Opcional. Seed usada na decodificação. Se não for definido, a solicitação usará uma seed gerada aleatoriamente.

presencePenalty number

Opcional. Penalidade de presença aplicada às logprobs do próximo token se ele já tiver sido visto na resposta.

Essa penalidade é binária (ativada/desativada) e não depende do número de vezes que o token é usado (após a primeira). Use frequencyPenalty para uma penalidade que aumenta a cada uso.

Uma penalidade positiva desencoraja o uso de tokens que já foram usados na resposta, aumentando o vocabulário.

Uma penalidade negativa incentiva o uso de tokens que já foram usados na resposta, diminuindo o vocabulário.

frequencyPenalty number

Opcional. Penalidade de frequência aplicada às logprobs do próximo token, multiplicada pelo número de vezes que cada token foi visto na resposta até agora.

Uma penalidade positiva desencoraja o uso de tokens que já foram usados, proporcionalmente ao número de vezes que o token foi usado: quanto mais um token é usado, mais difícil é para o modelo usar esse token novamente, aumentando o vocabulário das respostas.

Atenção: uma penalidade negativa incentiva o modelo a reutilizar tokens proporcionalmente ao número de vezes que o token foi usado. Valores negativos pequenos reduzem o vocabulário de uma resposta. Valores negativos maiores fazem com que o modelo comece a repetir um token comum até atingir o limite de maxOutputTokens.

responseLogprobs boolean

Opcional. Se verdadeiro, exporte os resultados de logprobs na resposta.

logprobs integer

Opcional. Válido apenas se responseLogprobs=True. Isso define o número de logprobs principais, incluindo o candidato escolhido, a serem retornados em cada etapa de decodificação no Candidate.logprobs_result. O número precisa estar no intervalo [0, 20].

enableEnhancedCivicAnswers boolean

Opcional. Ativa respostas cívicas aprimoradas. Talvez ele não esteja disponível para todos os modelos.

speechConfig object (SpeechConfig)

Opcional. A configuração de geração de fala.

thinkingConfig object (ThinkingConfig)

Opcional. Configuração para recursos de pensamento. Um erro será retornado se esse campo for definido para modelos que não oferecem suporte ao pensamento.

imageConfig object (ImageConfig)

Opcional. Configuração para geração de imagens. Um erro será retornado se esse campo for definido para modelos que não oferecem suporte a essas opções de configuração.

mediaResolution enum (MediaResolution)

Opcional. Se especificado, a resolução de mídia especificada será usada.

enableAffectiveDialog boolean

Opcional. Se ativada, o modelo vai detectar emoções e adaptar as respostas de acordo com elas.

responseFormat object (ResponseFormatConfig)

Opcional. Configuração para o formato de saída da resposta. Permite especificar a configuração de saída por modalidade (texto, áudio, imagem) em uma estrutura simples.

translationConfig object (TranslationConfig)

Opcional. Configuração para tradução.

audioTranscriptionConfig object (AudioTranscriptionConfig)

Opcional. Configuração para transcrição de áudio (reconhecimento de fala).

Representação JSON
{
  "stopSequences": [
    string
  ],
  "responseMimeType": string,
  "responseSchema": {
    object (Schema)
  },
  "_responseJsonSchema": value,
  "responseJsonSchema": value,
  "responseModalities": [
    enum (Modality)
  ],
  "candidateCount": integer,
  "maxOutputTokens": integer,
  "temperature": number,
  "topP": number,
  "topK": integer,
  "seed": integer,
  "presencePenalty": number,
  "frequencyPenalty": number,
  "responseLogprobs": boolean,
  "logprobs": integer,
  "enableEnhancedCivicAnswers": boolean,
  "speechConfig": {
    object (SpeechConfig)
  },
  "thinkingConfig": {
    object (ThinkingConfig)
  },
  "imageConfig": {
    object (ImageConfig)
  },
  "mediaResolution": enum (MediaResolution),
  "enableAffectiveDialog": boolean,
  "responseFormat": {
    object (ResponseFormatConfig)
  },
  "translationConfig": {
    object (TranslationConfig)
  },
  "audioTranscriptionConfig": {
    object (AudioTranscriptionConfig)
  }
}

Modalidade

Modalidades compatíveis da resposta.

Tipos enumerados
MODALITY_UNSPECIFIED Valor padrão.
TEXT Indica que o modelo precisa retornar texto.
IMAGE Indica que o modelo precisa retornar imagens.
AUDIO Indica que o modelo precisa retornar áudio.

SpeechConfig

Configuração para geração e transcrição de voz.

Campos
voiceConfig object (VoiceConfig)

A configuração em caso de saída de voz única.

multiSpeakerVoiceConfig object (MultiSpeakerVoiceConfig)

Opcional. A configuração para a configuração de vários alto-falantes. É mutuamente exclusivo com o campo "voiceConfig".

languageCode string

Opcional. O código de idioma BCP-47 do IETF que o usuário configurou para o app usar. Usado para reconhecimento e síntese de fala.

Os valores válidos são: de-DE, en-AU, en-GB, en-IN, en-US, es-US, fr-FR, hi-IN, pt-BR, ar-XA, es-ES, fr-CA, id-ID, it-IT, ja-JP, tr-TR, vi-VN, bn-IN, gu-IN, kn-IN, ml-IN, mr-IN, ta-IN, te-IN, nl-NL, ko-KR, cmn-CN, pl-PL, ru-RU e th-TH.

Representação JSON
{
  "voiceConfig": {
    object (VoiceConfig)
  },
  "multiSpeakerVoiceConfig": {
    object (MultiSpeakerVoiceConfig)
  },
  "languageCode": string
}

VoiceConfig

A configuração da voz a ser usada.

Campos
voice_config Union type
A configuração que o alto-falante vai usar. voice_config pode ser apenas de um dos tipos a seguir:
prebuiltVoiceConfig object (PrebuiltVoiceConfig)

A configuração da voz pré-criada a ser usada.

Representação JSON
{

  // voice_config
  "prebuiltVoiceConfig": {
    object (PrebuiltVoiceConfig)
  }
  // Union type
}

PrebuiltVoiceConfig

A configuração do alto-falante pré-criado a ser usado.

Campos
voiceName string

O nome da voz predefinida a ser usada.

Representação JSON
{
  "voiceName": string
}

MultiSpeakerVoiceConfig

A configuração para a configuração de vários alto-falantes.

Campos
speakerVoiceConfigs[] object (SpeakerVoiceConfig)

Obrigatório. Todas as vozes de alto-falante ativadas.

Representação JSON
{
  "speakerVoiceConfigs": [
    {
      object (SpeakerVoiceConfig)
    }
  ]
}

SpeakerVoiceConfig

A configuração de um único alto-falante em uma configuração com vários alto-falantes.

Campos
speaker string

Obrigatório. O nome do alto-falante a ser usado. Precisa ser igual ao do comando.

voiceConfig object (VoiceConfig)

Obrigatório. A configuração da voz a ser usada.

Representação JSON
{
  "speaker": string,
  "voiceConfig": {
    object (VoiceConfig)
  }
}

ThinkingConfig

Configuração para recursos de pensamento.

Campos
includeThoughts boolean

Indica se os pensamentos devem ser incluídos na resposta. Se for "true", as ideias serão retornadas apenas quando estiverem disponíveis.

thinkingBudget integer

O número de tokens de ideias que o modelo deve gerar.

thinkingLevel enum (ThinkingLevel)

Opcional. Controla a profundidade máxima do processo de raciocínio interno do modelo antes de produzir uma resposta. O valor padrão depende do modelo. Consulte o guia de níveis de pensamento para mais detalhes. Recomendado para modelos do Gemini 3 ou mais recentes. O uso com modelos anteriores resulta em um erro.

Representação JSON
{
  "includeThoughts": boolean,
  "thinkingBudget": integer,
  "thinkingLevel": enum (ThinkingLevel)
}

ThinkingLevel

Permitir que o usuário especifique quanto tempo pensar usando enum em vez de orçamento inteiro.

Tipos enumerados
THINKING_LEVEL_UNSPECIFIED Valor padrão.
MINIMAL Pouco ou nenhum pensamento.
LOW Nível de raciocínio baixo.
MEDIUM Nível de raciocínio médio.
HIGH Alto nível de raciocínio.

ImageConfig

Configuração para recursos de geração de imagens.

Campos
aspectRatio string

Opcional. A proporção da imagem a ser gerada. Proporções aceitas: 1:1, 1:4, 4:1, 1:8, 8:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9 ou 21:9.

Se não for especificado, o modelo vai escolher uma proporção padrão com base nas imagens de referência fornecidas.

imageSize string

Opcional. Especifica o tamanho das imagens geradas. Os valores aceitos são 512, 1K, 2K e 4K. Se não for especificado, o modelo vai usar o valor padrão 1K.

Representação JSON
{
  "aspectRatio": string,
  "imageSize": string
}

MediaResolution

Resolução da mídia de entrada.

Tipos enumerados
MEDIA_RESOLUTION_UNSPECIFIED A resolução da mídia não foi definida.
MEDIA_RESOLUTION_LOW Resolução de mídia definida como baixa (64 tokens).
MEDIA_RESOLUTION_MEDIUM Resolução de mídia definida como média (256 tokens).
MEDIA_RESOLUTION_HIGH Resolução de mídia definida como alta (enquadramento com zoom e 256 tokens).

ResponseFormatConfig

Configuração para o formato de saída da resposta. É um objeto simples em que cada subcampo opcional configura uma modalidade de saída específica.

Campos
text object (TextResponseFormat)

Opcional. Configuração do formato de saída de texto.

audio object (AudioResponseFormat)

Opcional. Configuração do formato de saída de áudio.

image object (ImageResponseFormat)

Opcional. Configuração do formato de saída da imagem.

Representação JSON
{
  "text": {
    object (TextResponseFormat)
  },
  "audio": {
    object (AudioResponseFormat)
  },
  "image": {
    object (ImageResponseFormat)
  }
}

TextResponseFormat

Configuração para o formato de saída de texto.

Campos
mimeType enum (MimeType)

Opcional. O tipo MIME da saída de texto.

schema value (Value format)

Opcional. O esquema JSON que a saída precisa seguir. Aplicável somente quando mimeType é APPLICATION_JSON.

Representação JSON
{
  "mimeType": enum (MimeType),
  "schema": value
}

MimeType

Tipos MIME compatíveis para saída de texto.

Tipos enumerados
MIME_TYPE_UNSPECIFIED Valor padrão. Esse valor não é usado.
APPLICATION_JSON Formato de saída JSON.
TEXT_PLAIN Formato de saída de texto simples.

AudioResponseFormat

Configuração para o formato de saída de áudio.

Campos
mimeType enum (MimeType)

Opcional. O tipo MIME da saída de áudio.

delivery enum (Delivery)

Opcional. O modo de transferência da saída de áudio.

sampleRate integer

Opcional. Taxa de amostragem em Hz.

bitRate integer

Opcional. Taxa de bits em bits por segundo (bps). Aplicável apenas a formatos compactados (MP3, Opus).

Representação JSON
{
  "mimeType": enum (MimeType),
  "delivery": enum (Delivery),
  "sampleRate": integer,
  "bitRate": integer
}

MimeType

Tipos MIME compatíveis para saída de áudio.

Tipos enumerados
MIME_TYPE_UNSPECIFIED Valor padrão. Esse valor não é usado.
AUDIO_MP3 Formato de áudio MP3.
AUDIO_OGG_OPUS Formato de áudio OGG Opus.
AUDIO_L16 Formato de áudio PCM bruto (L16).
AUDIO_WAV Formato de áudio WAV.
AUDIO_ALAW Formato de áudio A-law.
AUDIO_MULAW Formato de áudio Mu-law.

Entrega

Modo de transferência para saída de áudio.

Tipos enumerados
DELIVERY_UNSPECIFIED Valor padrão. Esse valor não é usado.
INLINE Os dados de áudio são retornados inline na resposta.
URI Os dados de áudio são retornados como um URI.

ImageResponseFormat

Configuração para o formato de saída da imagem.

Campos
mimeType enum (MimeType)

Opcional. O tipo MIME da saída de imagem.

delivery enum (Delivery)

Opcional. O modo de transferência da saída de imagem.

aspectRatio enum (AspectRatio)

Opcional. É a proporção da saída de imagem.

imageSize enum (ImageSize)

Opcional. O tamanho da saída da imagem.

Representação JSON
{
  "mimeType": enum (MimeType),
  "delivery": enum (Delivery),
  "aspectRatio": enum (AspectRatio),
  "imageSize": enum (ImageSize)
}

MimeType

Tipos MIME compatíveis para saída de imagem.

Tipos enumerados
MIME_TYPE_UNSPECIFIED Valor padrão. Esse valor não é usado.
IMAGE_JPEG Formato de imagem JPEG.

Entrega

Modo de transferência para saída de imagem.

Tipos enumerados
DELIVERY_UNSPECIFIED Valor padrão. Esse valor não é usado.
INLINE Os dados de imagem são retornados inline na resposta.
URI Os dados de imagem são retornados como um URI.

AspectRatio

Proporções compatíveis para saída de imagem.

Tipos enumerados
ASPECT_RATIO_UNSPECIFIED Valor padrão. Esse valor não é usado.
ASPECT_RATIO_ONE_BY_ONE Proporção 1:1.
ASPECT_RATIO_TWO_BY_THREE Proporção 2:3.
ASPECT_RATIO_THREE_BY_TWO Proporção 3:2.
ASPECT_RATIO_THREE_BY_FOUR Proporção 3:4.
ASPECT_RATIO_FOUR_BY_THREE Proporção 4:3.
ASPECT_RATIO_FOUR_BY_FIVE Proporção 4:5.
ASPECT_RATIO_FIVE_BY_FOUR Proporção 5:4.
ASPECT_RATIO_NINE_BY_SIXTEEN Proporção 9:16.
ASPECT_RATIO_SIXTEEN_BY_NINE Proporção 16:9.
ASPECT_RATIO_TWENTY_ONE_BY_NINE Proporção 21:9.
ASPECT_RATIO_ONE_BY_EIGHT Proporção 1:8.
ASPECT_RATIO_EIGHT_BY_ONE Proporção 8:1.
ASPECT_RATIO_ONE_BY_FOUR Proporção 1:4.
ASPECT_RATIO_FOUR_BY_ONE Proporção 4:1.

ImageSize

Tamanhos de imagem aceitos para saída de imagem.

Tipos enumerados
IMAGE_SIZE_UNSPECIFIED Valor padrão. Esse valor não é usado.
IMAGE_SIZE_FIVE_TWELVE Tamanho da imagem de 512 px.
IMAGE_SIZE_ONE_K Tamanho da imagem de 1K.
IMAGE_SIZE_TWO_K Tamanho da imagem em 2K.
IMAGE_SIZE_FOUR_K Tamanho da imagem 4K.

TranslationConfig

Configuração para recursos de tradução.

Campos
targetLanguageCode string

Obrigatório. O idioma de destino da tradução. Os valores aceitos são códigos de idioma BCP-47 (por exemplo, "en", "es", "fr").

echoTargetLanguage boolean

Opcional. Se for verdadeiro, o modelo vai gerar áudio quando o idioma de destino for falado, essencialmente repetindo a entrada. Se for "false", não vamos produzir áudio no idioma de destino.

Representação JSON
{
  "targetLanguageCode": string,
  "echoTargetLanguage": boolean
}

AudioTranscriptionConfig

A configuração de transcrição de áudio.

Campos
languageCodes[] string

Opcional. Códigos de idioma BCP-47 que fornecem dicas sobre os idiomas presentes no áudio. Se for omitido ou ficar em branco, o padrão será a detecção automática de idioma.

adaptationPhrases[]
(deprecated)
string

Opcional. Uma lista de frases usadas para adaptação de fala, que polariza o modelo de ASR para melhorar o reconhecimento desses termos específicos.

customVocabulary[] string

Opcional. Uma lista de frases de vocabulário personalizado para polarizar o modelo de reconhecimento de fala e reconhecer termos específicos (nomes de produtos, substantivos próprios, jargões).

wordTimestamp boolean

Opcional. Configura a geração de carimbos de data/hora no nível da palavra.

diarization boolean

Opcional. Configura a diarização de locutor.

language_config Union type
Descontinuado: use language_codes de nível superior. language_config pode ser apenas de um dos tipos a seguir:
languageAuto
(deprecated)
object (LanguageAuto)

Opcional. O modelo detecta o idioma automaticamente.

languageHints
(deprecated)
object (LanguageHints)

Opcional. Especifica um ou mais idiomas no áudio.

Representação JSON
{
  "languageCodes": [
    string
  ],
  "adaptationPhrases": [
    string
  ],
  "customVocabulary": [
    string
  ],
  "wordTimestamp": boolean,
  "diarization": boolean,

  // language_config
  "languageAuto": {
    object (LanguageAuto)
  },
  "languageHints": {
    object (LanguageHints)
  }
  // Union type
}

LanguageAuto

Esse tipo não tem campos.

Indica que o idioma do áudio deve ser detectado automaticamente.

LanguageHints

Fornece dicas ao modelo sobre possíveis idiomas presentes no áudio.

Campos
languageCodes[]
(deprecated)
string

Obrigatório. Códigos de idioma BCP-47.

Representação JSON
{
  "languageCodes": [
    string
  ]
}

RealtimeInputConfig

Configura o comportamento de entrada em tempo real em BidiGenerateContent.

Campos
automaticActivityDetection object (AutomaticActivityDetection)

Opcional. Se não for definido, a detecção automática de atividade será ativada por padrão. Se a detecção automática de voz estiver desativada, o cliente precisará enviar indicadores de atividade.

activityHandling enum (ActivityHandling)

Opcional. Define o efeito da atividade.

turnCoverage enum (TurnCoverage)

Opcional. Define qual entrada é incluída na vez do usuário.

Representação JSON
{
  "automaticActivityDetection": {
    object (AutomaticActivityDetection)
  },
  "activityHandling": enum (ActivityHandling),
  "turnCoverage": enum (TurnCoverage)
}

AutomaticActivityDetection

Configura a detecção automática de atividade.

Campos
disabled boolean

Opcional. Se ativada (como é o padrão), a entrada de voz e texto detectada conta como atividade. Se estiver desativado, o cliente precisará enviar indicadores de atividade.

startOfSpeechSensitivity enum (StartSensitivity)

Opcional. Determina a probabilidade de a fala ser detectada.

prefixPaddingMs integer

Opcional. A duração necessária da fala detectada antes do início da fala ser confirmado. Quanto menor esse valor, mais sensível é a detecção do início da fala, e falas mais curtas podem ser reconhecidas. No entanto, isso também aumenta a probabilidade de falsos positivos.

endOfSpeechSensitivity enum (EndSensitivity)

Opcional. Determina a probabilidade de a fala detectada ter terminado.

silenceDurationMs integer

Opcional. A duração necessária do silêncio detectado antes do fim da fala. Quanto maior esse valor, mais longos podem ser os intervalos de fala sem interromper a atividade do usuário, mas isso aumenta a latência do modelo.

Representação JSON
{
  "disabled": boolean,
  "startOfSpeechSensitivity": enum (StartSensitivity),
  "prefixPaddingMs": integer,
  "endOfSpeechSensitivity": enum (EndSensitivity),
  "silenceDurationMs": integer
}

StartSensitivity

Determina como o início da fala é detectado.

Tipos enumerados
START_SENSITIVITY_UNSPECIFIED O padrão é START_SENSITIVITY_HIGH.
START_SENSITIVITY_HIGH A detecção automática vai detectar o início da fala com mais frequência.
START_SENSITIVITY_LOW A detecção automática vai detectar o início da fala com menos frequência.

EndSensitivity

Determina como o fim da fala é detectado.

Tipos enumerados
END_SENSITIVITY_UNSPECIFIED O padrão é END_SENSITIVITY_HIGH.
END_SENSITIVITY_HIGH A detecção automática encerra a fala com mais frequência.
END_SENSITIVITY_LOW A detecção automática encerra a fala com menos frequência.

ActivityHandling

As diferentes maneiras de processar a atividade do usuário.

Tipos enumerados
ACTIVITY_HANDLING_UNSPECIFIED Se não for especificado, o comportamento padrão será START_OF_ACTIVITY_INTERRUPTS.
START_OF_ACTIVITY_INTERRUPTS Se for verdadeiro, o início da atividade vai interromper a resposta do modelo (também chamada de "interrupção"). A resposta atual do modelo será interrompida no momento da interrupção. Esse é o comportamento padrão.
NO_INTERRUPTION A resposta do modelo não será interrompida.

TurnCoverage

Opções sobre qual entrada está incluída na vez do usuário.

Tipos enumerados
TURN_COVERAGE_UNSPECIFIED Se não for especificado, um comportamento padrão será selecionado com base no modelo. Por exemplo, para o Gemini 2.5, o padrão é TURN_INCLUDES_ONLY_ACTIVITY, enquanto para o Gemini 3.1 e versões mais recentes, é TURN_INCLUDES_AUDIO_ACTIVITY_AND_ALL_VIDEO.
TURN_INCLUDES_ONLY_ACTIVITY Inclui a atividade desde a última vez, excluindo a inatividade (por exemplo, silêncio no stream de áudio).
TURN_INCLUDES_ALL_INPUT Inclui todas as entradas em tempo real desde a última vez, incluindo inatividade (por exemplo, silêncio no stream de áudio).
TURN_INCLUDES_AUDIO_ACTIVITY_AND_ALL_VIDEO Inclui atividade de áudio e todos os vídeos desde a última vez. Com a detecção automática de atividade, a atividade de áudio significa fala e exclui o silêncio.

SessionResumptionConfig

Configuração de retomada da sessão.

Essa mensagem é incluída na configuração da sessão como BidiGenerateContentSetup.session_resumption. Se configurado, o servidor vai enviar mensagens SessionResumptionUpdate.

Campos
handle string

O identificador de uma sessão anterior. Se não estiver presente, uma nova sessão será criada.

Os identificadores de sessão vêm de valores SessionResumptionUpdate.token em conexões anteriores.

Representação JSON
{
  "handle": string
}

ContextWindowCompressionConfig

Ativa a compactação da janela de contexto, um mecanismo para gerenciar a janela de contexto do modelo para que ela não exceda um determinado comprimento.

Campos
compression_mechanism Union type
O mecanismo de compactação da janela de contexto usado. compression_mechanism pode ser apenas de um dos tipos a seguir:
slidingWindow object (SlidingWindow)

Um mecanismo de janela deslizante.

triggerTokens string (int64 format)

O número de tokens (antes de executar um turno) necessários para acionar uma compactação da janela de contexto.

Isso pode ser usado para equilibrar a qualidade e a latência, já que janelas de contexto mais curtas podem resultar em respostas mais rápidas do modelo. No entanto, qualquer operação de compressão causa um aumento temporário da latência e, portanto, não deve ser acionada com frequência.

Se não for definido, o padrão será 80% do limite da janela de contexto do modelo. Isso deixa 20% para a próxima solicitação do usuário/resposta do modelo.

Representação JSON
{

  // compression_mechanism
  "slidingWindow": {
    object (SlidingWindow)
  }
  // Union type
  "triggerTokens": string
}

SlidingWindow

O método SlidingWindow descarta o conteúdo no início da janela de contexto. O contexto resultante sempre começa no início de uma vez do papel de USUÁRIO. As instruções do sistema e qualquer BidiGenerateContentSetup.prefix_turns sempre vão ficar no início do resultado.

Campos
targetTokens string (int64 format)

O número de destino de tokens a serem mantidos. O valor padrão é triggerTokens/2.

Descartar partes da janela de contexto causa um aumento temporário na latência. Portanto, esse valor precisa ser calibrado para evitar operações de compactação frequentes.

Representação JSON
{
  "targetTokens": string
}

HistoryConfig

Configuração do histórico.

Essa mensagem é incluída na configuração da sessão como BidiGenerateContentSetup.history_config. Configura a troca de mensagens do histórico.

Campos
initialHistoryInClientContent boolean

Opcional. Se for verdadeiro, depois de enviar setupComplete, o servidor vai esperar e, a princípio, processar mensagens clientContent até que turnComplete seja true. Esse histórico inicial não vai acionar uma chamada de modelo e pode terminar com a função MODEL. Depois que turnComplete for true, o cliente poderá iniciar a conversa em tempo real usando realtimeInput.

Representação JSON
{
  "initialHistoryInClientContent": boolean
}

Método: auth_tokens.create

Cria um token que pode ser usado para restringir o comportamento de uma sessão BidiGenerateContent.

Endpoint

post https://generativelanguage.googleapis.com/v1beta/auth_tokens

Corpo da solicitação

O corpo da solicitação contém uma instância de AuthToken.

Campos
expireTime string (Timestamp format)

Opcional. Somente entrada. Imutável. Um horário opcional após o qual, ao usar o token resultante, as mensagens em sessões BidiGenerateContent serão rejeitadas. O Gemini pode fechar a sessão antes desse período.

Se não for definido, o padrão será 30 minutos no futuro. Se definido, esse valor precisa ser menor que 20 horas no futuro.

Usa o padrão RFC 3339, em que a saída gerada é sempre convertida em Z e tem 0, 3, 6 ou 9 dígitos fracionários. Além de "Z", outros ajustes também são aceitos. Exemplos: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" ou "2014-10-02T15:01:23+05:30".

newSessionExpireTime string (Timestamp format)

Opcional. Somente entrada. Imutável. O período após o qual novas sessões da API Live usando o token resultante desta solicitação serão rejeitadas.

Se não for definido, o padrão será 60 segundos no futuro. Se definido, esse valor precisa ser menor que 20 horas no futuro.

Usa o padrão RFC 3339, em que a saída gerada é sempre convertida em Z e tem 0, 3, 6 ou 9 dígitos fracionários. Além de "Z", outros ajustes também são aceitos. Exemplos: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" ou "2014-10-02T15:01:23+05:30".

fieldMask string (FieldMask format)

Opcional. Somente entrada. Imutável. Se "fieldMask" estiver vazio e bidiGenerateContentSetup não estiver presente, a mensagem BidiGenerateContentSetup efetiva será extraída da conexão da API Live.

Se fieldMask estiver vazio e bidiGenerateContentSetup estiver presente, a mensagem BidiGenerateContentSetup efetiva será extraída inteiramente de bidiGenerateContentSetup nesta solicitação. A mensagem de configuração da conexão da API Live é ignorada.

Se fieldMask não estiver vazio, os campos correspondentes de bidiGenerateContentSetup vão substituir os campos da mensagem de configuração na conexão da API Live.

É uma lista separada por vírgulas de nomes de campos totalmente qualificados. Exemplo: "user.displayName,photo".

config Union type
A configuração específica do método para o token resultante. config pode ser apenas de um dos tipos a seguir:
bidiGenerateContentSetup object (BidiGenerateContentSetup)

Opcional. Somente entrada. Imutável. Configuração específica para BidiGenerateContent.

uses integer

Opcional. Somente entrada. Imutável. O número de vezes que o token pode ser usado. Se esse valor for zero, nenhum limite será aplicado. Retomar uma sessão da API Live não conta como um uso. Se não for especificado, o padrão será 1.

Corpo da resposta

Se a solicitação for bem-sucedida, o corpo da resposta incluirá uma instância de AuthToken.