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 vai bloquear qualquer conteúdo e resposta que não atender 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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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 vai bloquear qualquer conteúdo e resposta que não atender 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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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 O comando foi bloqueado 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.
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 bloco.

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)

Classificado por probabilidade de registro em ordem decrescente.

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

Candidato

Candidato para o token e a 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 contexto 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

Categorias de danos que podem ser detectadas em entradas de usuários e respostas de modelos.

Tipos enumerados
HARM_CATEGORY_UNSPECIFIED Valor padrão. Esse valor não é usado.
HARM_CATEGORY_HATE_SPEECH Conteúdo que promova violência ou incite ódio contra pessoas ou grupos com base em determinados atributos.
HARM_CATEGORY_DANGEROUS_CONTENT Conteúdo que promove, facilita ou permite atividades perigosas.
HARM_CATEGORY_HARASSMENT Conteúdo abusivo, ameaçador ou destinado a praticar bullying, atormentar ou ridicularizar.
HARM_CATEGORY_SEXUALLY_EXPLICIT Conteúdo sexualmente explícito.
HARM_CATEGORY_CIVIC_INTEGRITY

Descontinuado: o filtro de eleição não é mais compatível. A categoria de dano é integridade cívica.

HARM_CATEGORY_IMAGE_HATE Imagens que contêm discurso de ódio.
HARM_CATEGORY_IMAGE_DANGEROUS_CONTENT Imagens com conteúdo perigoso.
HARM_CATEGORY_IMAGE_HARASSMENT Imagens que contenham assédio.
HARM_CATEGORY_IMAGE_SEXUALLY_EXPLICIT Imagens com conteúdo sexualmente explícito.
HARM_CATEGORY_JAILBREAK Comandos projetados para burlar os filtros de segurança.

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 danos e o nível de probabilidade de danos 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 do 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 níveis NEGLIGENCIÁVEL, BAIXO e MÉDIO será permitido.
BLOCK_NONE Todo o conteúdo será permitido.
OFF Desative o filtro de segurança.

ServiceTier

O nível de serviço da interação.

Tipos enumerados
SERVICE_TIER_UNSPECIFIED Nível de serviço padrão, que é "padrão".
SERVICE_TIER_FLEX Nível de serviço flexível.
SERVICE_TIER_STANDARD Nível de serviço Standard.
SERVICE_TIER_PRIORITY Nível de serviço de prioridade.

AllowedTools

A configuração para ferramentas permitidas.

Campos
mode enum (ToolChoiceType)

O modo da escolha de ferramenta.

tools[] string

Os nomes das ferramentas permitidas.

Representação JSON
{
  "mode": enum (ToolChoiceType),
  "tools": [
    string
  ]
}

Annotation

Informações de citação para conteúdo gerado pelo modelo.

Campos
startIndex integer

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

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

endIndex integer

Fim do segmento atribuído, exclusivo.

type Union type
O tipo de anotação. type pode ser apenas de um dos tipos a seguir:
urlCitation object (UrlCitation)

Uma anotação de citação de URL.

fileCitation object (FileCitation)

Uma anotação de citação de arquivo.

placeCitation object (PlaceCitation)

Uma anotação de citação de lugar.

Representação JSON
{
  "startIndex": integer,
  "endIndex": integer,

  // type
  "urlCitation": {
    object (UrlCitation)
  },
  "fileCitation": {
    object (FileCitation)
  },
  "placeCitation": {
    object (PlaceCitation)
  }
  // Union type
}

UrlCitation

Uma anotação de citação de URL.

Campos
url string

O URL.

title string

O título do URL.

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

FileCitation

Uma anotação de citação de arquivo.

Campos
documentUri string

O URI do arquivo.

fileName string

O nome do arquivo.

source string

Fonte atribuída a uma parte do texto.

customMetadata object (Struct)

Metadados fornecidos pelo usuário sobre o contexto recuperado.

pageNumber integer

Número da página do documento citado, se aplicável.

mediaId string

ID da mídia em caso de citações de imagens, se aplicável.

Representação JSON
{
  "documentUri": string,
  "fileName": string,
  "source": string,
  "customMetadata": {
    object (Struct)
  },
  "pageNumber": integer,
  "mediaId": string
}

PlaceCitation

Uma anotação de citação de lugar.

Campos
placeId string

O ID do lugar, no formato places/{placeId}.

name string

Título do lugar.

url string

Referência de URI do lugar.

reviewSnippets[] object (ReviewSnippet)

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

Representação JSON
{
  "placeId": string,
  "name": string,
  "url": string,
  "reviewSnippets": [
    {
      object (ReviewSnippet)
    }
  ]
}

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.

AudioResponseFormat

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

Campos
mimeType enum (MimeType)

O tipo MIME da saída de áudio.

delivery enum (Delivery)

O modo de transferência da saída de áudio.

sampleRate integer

Taxa de amostragem em Hz.

bitRate integer

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
}

CodeExecution

Esse tipo não tem campos.

Uma ferramenta que pode ser usada pelo modelo para executar código.

CodeExecutionCallStep

Etapa de chamada de execução de código.

Campos
arguments object (CodeExecutionCallStepArguments)

Obrigatório. Os argumentos a serem transmitidos para a execução de código.

Representação JSON
{
  "arguments": {
    object (CodeExecutionCallStepArguments)
  }
}

CodeExecutionCallStepArguments

Os argumentos a serem transmitidos para a execução de código.

Campos
language enum (Language)

Linguagem de programação do code.

code string

O código a ser executado.

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

CodeExecutionResultStep

Etapa de resultado da execução de código.

Campos
result string

Obrigatório. A saída da execução do código.

isError boolean

Se a execução de código resultou em um erro.

Representação JSON
{
  "result": string,
  "isError": boolean
}

ComputerUse

Uma ferramenta que pode ser usada pelo modelo para interagir com o computador.

Campos
environment enum (Environment)

O ambiente em operação.

excludedPredefinedFunctions[] string

A lista de funções predefinidas que são excluídas da chamada de modelo.

enablePromptInjectionDetection boolean

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)
  ]
}

Conteúdo

O conteúdo da resposta.

Campos
type Union type
type pode ser apenas de um dos tipos a seguir:
text object (TextContent)
image object (ImageContent)
audio object (AudioContent)
document object (DocumentContent)
video object (VideoContent)
thought
(deprecated)
object (ThoughtContent)
toolCall
(deprecated)
object (ToolCallContent)
toolResult
(deprecated)
object (ToolResultContent)
Representação JSON
{

  // type
  "text": {
    object (TextContent)
  },
  "image": {
    object (ImageContent)
  },
  "audio": {
    object (AudioContent)
  },
  "document": {
    object (DocumentContent)
  },
  "video": {
    object (VideoContent)
  },
  "thought": {
    object (ThoughtContent)
  },
  "toolCall": {
    object (ToolCallContent)
  },
  "toolResult": {
    object (ToolResultContent)
  }
  // Union type
}

TextContent

Um bloco de conteúdo de texto.

Campos
text string

Obrigatório. O conteúdo do texto.

annotations[] object (Annotation)

Informações de citação para conteúdo gerado pelo modelo.

Representação JSON
{
  "text": string,
  "annotations": [
    {
      object (Annotation)
    }
  ]
}

ImageContent

Um bloco de conteúdo de imagem.

Campos
mimeType enum (MimeType)

O tipo MIME da imagem.

resolution enum (MediaResolution)

A resolução da mídia.

data_or_uri Union type
O conteúdo da imagem. data_or_uri pode ser apenas de um dos tipos a seguir:
data string (bytes format)

O conteúdo da imagem.

Uma string codificada em base64.

uri string

O URI da imagem.

Representação JSON
{
  "mimeType": enum (MimeType),
  "resolution": enum (MediaResolution),

  // data_or_uri
  "data": string,
  "uri": string
  // Union type
}

AudioContent

Um bloco de conteúdo de áudio.

Campos
mimeType enum (MimeType)

O tipo MIME do áudio.

channels integer

O número de canais de áudio.

sampleRate integer

A taxa de amostragem do áudio.

data_or_uri Union type
O conteúdo de áudio. data_or_uri pode ser apenas de um dos tipos a seguir:
data string (bytes format)

O conteúdo de áudio.

Uma string codificada em base64.

uri string

O URI do áudio.

Representação JSON
{
  "mimeType": enum (MimeType),
  "channels": integer,
  "sampleRate": integer,

  // data_or_uri
  "data": string,
  "uri": string
  // Union type
}

DocumentContent

Um bloco de conteúdo de documento.

Campos
mimeType enum (MimeType)

O tipo MIME do documento.

data_or_uri Union type
O conteúdo do documento. data_or_uri pode ser apenas de um dos tipos a seguir:
data string (bytes format)

O conteúdo do documento.

Uma string codificada em base64.

uri string

O URI do documento.

Representação JSON
{
  "mimeType": enum (MimeType),

  // data_or_uri
  "data": string,
  "uri": string
  // Union type
}

VideoContent

Um bloco de conteúdo em vídeo.

Campos
mimeType enum (MimeType)

O tipo MIME do vídeo.

resolution enum (MediaResolution)

A resolução da mídia.

data_or_uri Union type
O conteúdo do vídeo. data_or_uri pode ser apenas de um dos tipos a seguir:
data string (bytes format)

O conteúdo do vídeo.

Uma string codificada em base64.

uri string

O URI do vídeo.

Representação JSON
{
  "mimeType": enum (MimeType),
  "resolution": enum (MediaResolution),

  // data_or_uri
  "data": string,
  "uri": string
  // Union type
}

ThoughtContent

Um bloco de conteúdo de pensamento.

Campos
signature string (bytes format)

Assinatura para corresponder à origem do back-end que fará parte da geração.

Uma string codificada em base64.

summary[] object (ThoughtSummaryContent)

Um resumo do pensamento.

Representação JSON
{
  "signature": string,
  "summary": [
    {
      object (ThoughtSummaryContent)
    }
  ]
}

ThoughtSummaryContent

Campos
type Union type
type pode ser apenas de um dos tipos a seguir:
text object (TextContent)
image object (ImageContent)
Representação JSON
{

  // type
  "text": {
    object (TextContent)
  },
  "image": {
    object (ImageContent)
  }
  // Union type
}

ToolCallContent

Conteúdo da chamada de ferramenta.

Campos
id string

Obrigatório. Um ID exclusivo para essa chamada de função específica.

signature string (bytes format)

Um hash de assinatura para validação de back-end.

Uma string codificada em base64.

type Union type
type pode ser apenas de um dos tipos a seguir:
functionCall object (FunctionCallContent)
codeExecutionCall object (CodeExecutionCallContent)
urlContextCall object (UrlContextCallContent)
mcpServerToolCall object (McpServerToolCallContent)
googleSearchCall object (GoogleSearchCallContent)
fileSearchCall object (FileSearchCallContent)
googleMapsCall object (GoogleMapsCallContent)
Representação JSON
{
  "id": string,
  "signature": string,

  // type
  "functionCall": {
    object (FunctionCallContent)
  },
  "codeExecutionCall": {
    object (CodeExecutionCallContent)
  },
  "urlContextCall": {
    object (UrlContextCallContent)
  },
  "mcpServerToolCall": {
    object (McpServerToolCallContent)
  },
  "googleSearchCall": {
    object (GoogleSearchCallContent)
  },
  "fileSearchCall": {
    object (FileSearchCallContent)
  },
  "googleMapsCall": {
    object (GoogleMapsCallContent)
  }
  // Union type
}

FunctionCallContent

Um bloco de conteúdo de chamada de ferramenta de função.

Campos
name string

Obrigatório. O nome da ferramenta a ser chamada.

arguments object (Struct)

Obrigatório. Os argumentos a serem transmitidos para a função.

Representação JSON
{
  "name": string,
  "arguments": {
    object (Struct)
  }
}

CodeExecutionCallContent

Conteúdo de execução de código.

Campos
arguments object (CodeExecutionCallArguments)

Obrigatório. Os argumentos a serem transmitidos para a execução de código.

Representação JSON
{
  "arguments": {
    object (CodeExecutionCallArguments)
  }
}

CodeExecutionCallArguments

Os argumentos a serem transmitidos para a execução de código.

Campos
language enum (Language)

Linguagem de programação do code.

code string

O código a ser executado.

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

UrlContextCallContent

Conteúdo do contexto de URL.

Campos
arguments object (UrlContextCallArguments)

Obrigatório. Os argumentos a serem transmitidos para o contexto do URL.

Representação JSON
{
  "arguments": {
    object (UrlContextCallArguments)
  }
}

UrlContextCallArguments

Os argumentos a serem transmitidos para o contexto do URL.

Campos
urls[] string

Os URLs a serem buscados.

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

McpServerToolCallContent

Conteúdo da chamada de ferramenta MCPServer.

Campos
name string

Obrigatório. O nome da ferramenta que foi chamada.

serverName string

Obrigatório. O nome do servidor MCP usado.

arguments object (Struct)

Obrigatório. O objeto JSON de argumentos para a função.

Representação JSON
{
  "name": string,
  "serverName": string,
  "arguments": {
    object (Struct)
  }
}

GoogleSearchCallContent

Conteúdo da Pesquisa Google.

Campos
arguments object (GoogleSearchCallArguments)

Obrigatório. Os argumentos a serem transmitidos para a Pesquisa Google.

searchType enum (SearchType)

O tipo de embasamento da pesquisa ativado.

Representação JSON
{
  "arguments": {
    object (GoogleSearchCallArguments)
  },
  "searchType": enum (SearchType)
}

GoogleSearchCallArguments

Os argumentos a serem transmitidos para a Pesquisa Google.

Campos
queries[] string

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

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

FileSearchCallContent

Esse tipo não tem campos.

Conteúdo da Pesquisa de arquivos.

GoogleMapsCallContent

Conteúdo do Google Maps.

Campos
arguments object (GoogleMapsCallArguments)

Os argumentos a serem transmitidos para a ferramenta do Google Maps.

Representação JSON
{
  "arguments": {
    object (GoogleMapsCallArguments)
  }
}

GoogleMapsCallArguments

Os argumentos a serem transmitidos para a ferramenta do Google Maps.

Campos
queries[] string

As consultas a serem executadas.

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

ToolResultContent

Conteúdo do resultado da ferramenta.

Campos
callId string

Obrigatório. ID para corresponder ao ID do bloco de chamada de função.

signature string (bytes format)

Um hash de assinatura para validação de back-end.

Uma string codificada em base64.

type Union type
type pode ser apenas de um dos tipos a seguir:
functionResult object (FunctionResultContent)
codeExecutionResult object (CodeExecutionResultContent)
urlContextResult object (UrlContextResultContent)
googleSearchResult object (GoogleSearchResultContent)
mcpServerToolResult object (McpServerToolResultContent)
fileSearchResult object (FileSearchResultContent)
googleMapsResult object (GoogleMapsResultContent)
Representação JSON
{
  "callId": string,
  "signature": string,

  // type
  "functionResult": {
    object (FunctionResultContent)
  },
  "codeExecutionResult": {
    object (CodeExecutionResultContent)
  },
  "urlContextResult": {
    object (UrlContextResultContent)
  },
  "googleSearchResult": {
    object (GoogleSearchResultContent)
  },
  "mcpServerToolResult": {
    object (McpServerToolResultContent)
  },
  "fileSearchResult": {
    object (FileSearchResultContent)
  },
  "googleMapsResult": {
    object (GoogleMapsResultContent)
  }
  // Union type
}

FunctionResultContent

Um bloco de conteúdo de resultado da ferramenta de função.

Campos
name string

O nome da ferramenta que foi chamada.

isError boolean

Se a chamada de função resultou em um erro.

result Union type
O resultado da chamada de ferramenta. result pode ser apenas de um dos tipos a seguir:
structResult object (Struct)
contentList object (FunctionResultSubcontentList)
stringResult string
Representação JSON
{
  "name": string,
  "isError": boolean,

  // result
  "structResult": {
    object (Struct)
  },
  "contentList": {
    object (FunctionResultSubcontentList)
  },
  "stringResult": string
  // Union type
}

FunctionResultSubcontentList

Campos
contents[] object (FunctionResultSubcontent)
Representação JSON
{
  "contents": [
    {
      object (FunctionResultSubcontent)
    }
  ]
}

FunctionResultSubcontent

Campos
type Union type
type pode ser apenas de um dos tipos a seguir:
text object (TextContent)
image object (ImageContent)
Representação JSON
{

  // type
  "text": {
    object (TextContent)
  },
  "image": {
    object (ImageContent)
  }
  // Union type
}

CodeExecutionResultContent

Conteúdo do resultado da execução de código.

Campos
result string

Obrigatório. A saída da execução do código.

isError boolean

Se a execução de código resultou em um erro.

Representação JSON
{
  "result": string,
  "isError": boolean
}

UrlContextResultContent

Conteúdo do resultado do contexto de URL.

Campos
result[] object (UrlContextResult)

Obrigatório. Os resultados do contexto do URL.

isError boolean

Indica se o contexto do URL resultou em um erro.

Representação JSON
{
  "result": [
    {
      object (UrlContextResult)
    }
  ],
  "isError": boolean
}

UrlContextResult

O resultado do contexto do URL.

Campos
url string

O URL buscado.

status enum (Status)

O status da recuperação do URL.

Representação JSON
{
  "url": string,
  "status": enum (Status)
}

GoogleSearchResultContent

Conteúdo do resultado da pesquisa do Google.

Campos
result[] object (GoogleSearchResult)

Obrigatório. Os resultados da Pesquisa Google.

isError boolean

Se a Pesquisa Google resultou em um erro.

Representação JSON
{
  "result": [
    {
      object (GoogleSearchResult)
    }
  ],
  "isError": boolean
}

GoogleSearchResult

O resultado da Pesquisa Google.

Campos
searchSuggestions string

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

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

McpServerToolResultContent

Conteúdo do resultado da ferramenta MCPServer.

Campos
name string

Nome da ferramenta chamada para essa chamada de função específica.

serverName string

O nome do servidor MCP usado.

result Union type
A saída da chamada do servidor MCP. Pode ser texto simples ou conteúdo avançado. result pode ser apenas de um dos tipos a seguir:
structResult object (Struct)
contentList object (FunctionResultSubcontentList)
stringResult string
Representação JSON
{
  "name": string,
  "serverName": string,

  // result
  "structResult": {
    object (Struct)
  },
  "contentList": {
    object (FunctionResultSubcontentList)
  },
  "stringResult": string
  // Union type
}

FileSearchResultContent

Conteúdo dos resultados da Pesquisa de arquivos.

Campos
result[] object (FileSearchResult)

Opcional. Os resultados da pesquisa de arquivos.

Representação JSON
{
  "result": [
    {
      object (FileSearchResult)
    }
  ]
}

FileSearchResult

Esse tipo não tem campos.

O resultado da pesquisa de arquivos.

GoogleMapsResultContent

Conteúdo dos resultados do Google Maps.

Campos
result[] object (GoogleMapsResult)

Obrigatório. Os resultados do Google Maps.

Representação JSON
{
  "result": [
    {
      object (GoogleMapsResult)
    }
  ]
}

GoogleMapsResult

O resultado do Google Maps.

Campos
places[] object (Places)

Os lugares encontrados.

widgetContextToken string

Nome do recurso do token de contexto do widget do Google Maps.

Representação JSON
{
  "places": [
    {
      object (Places)
    }
  ],
  "widgetContextToken": string
}

Lugares

Campos
placeId string

O ID do lugar, no formato places/{placeId}.

name string

Título do lugar.

url string

Referência de URI do lugar.

reviewSnippets[] object (ReviewSnippet)

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

Representação JSON
{
  "placeId": string,
  "name": string,
  "url": string,
  "reviewSnippets": [
    {
      object (ReviewSnippet)
    }
  ]
}

ContentList

Uma lista de conteúdo.

Campos
contents[] object (Content)

O conteúdo da lista.

Representação JSON
{
  "contents": [
    {
      object (Content)
    }
  ]
}

CreateInteractionRequest

Parâmetros de configuração para criar uma interação.

Campos
stream boolean

Somente entrada. Se a interação será transmitida por streaming.

store boolean

Somente entrada. Indica se a resposta e a solicitação serão armazenadas para recuperação posterior.

interaction object (Interaction)

A interação a ser criada.

background boolean

Somente entrada. Se a interação do modelo será executada em segundo plano.

Representação JSON
{
  "stream": boolean,
  "store": boolean,
  "interaction": {
    object (Interaction)
  },
  "background": boolean
}

Interação

Resposta para "InteractionService.CreateInteraction".

Campos
id string

Obrigatório. Apenas saída. Um identificador exclusivo para a conclusão da interação.

status enum (Status)

Obrigatório. Apenas saída. O status da interação.

created string

Obrigatório. Apenas saída. O horário em que a resposta foi criada no formato ISO 8601 (AAAA-MM-DDThh:mm:ssZ).

updated string

Obrigatório. Apenas saída. A hora em que a resposta foi atualizada pela última vez no formato ISO 8601 (AAAA-MM-DDThh:mm:ssZ).

role
(deprecated)
string

Apenas saída. A função da interação.

outputs[]
(deprecated)
object (Content)

Apenas saída. Respostas do modelo.

systemInstruction string

Instrução do sistema para a interação.

tools[] object (Tool)

Uma lista de declarações de ferramentas que o modelo pode chamar durante a interação.

usage object (Usage)

Apenas saída. Estatísticas sobre o uso de tokens da solicitação de interação.

responseModalities[]
(deprecated)
enum (ResponseModality)

As modalidades solicitadas da resposta (TEXT, IMAGE, AUDIO).

responseMimeType
(deprecated)
string

O tipo MIME da resposta. Isso é obrigatório se "responseFormat" estiver definido.

previousInteractionId string

O ID da interação anterior, se houver.

environmentId string

Apenas saída. O ID do ambiente da interação. Preenchido apenas se a configuração do ambiente for definida na solicitação.

serviceTier enum (ServiceTier)

O nível de serviço da interação.

webhookConfig object (WebhookConfig)

Opcional. Configuração de webhook para receber notificações quando a interação for concluída.

steps[] object (Step)

Obrigatório. Apenas saída. As etapas que compõem a interação.

input Union type
A entrada para a interação. input pode ser apenas de um dos tipos a seguir:
contentList
(deprecated)
object (ContentList)

As entradas da interação.

stringContent string

Uma entrada de string para a interação, que será processada como uma única entrada de texto.

turnList
(deprecated)
object (TurnList)

As rodadas da interação.

stepList object (StepList)

Somente entrada. As etapas da interação.

content object (Content)

O conteúdo da interação.

response_format_config Union type
response_format_config pode ser apenas de um dos tipos a seguir:
responseFormat
(deprecated)
object (Value)

Força que a resposta gerada seja um objeto JSON que esteja em conformidade com o esquema JSON especificado neste campo.

responseFormatList object (ResponseFormatList)
responseFormatSingleton object (ResponseFormat)
request_type Union type
O tipo de solicitação da interação. request_type pode ser apenas de um dos tipos a seguir:
modelInteraction object (ModelInteraction)

Interação para gerar a conclusão usando modelos.

agentInteraction object (AgentInteraction)

Interação para gerar a conclusão usando agentes.

environment Union type
A configuração do ambiente para a interação. environment pode ser apenas de um dos tipos a seguir:
envId string

O ID do ambiente da interação. Pode ser "remoto" para o ambiente padrão.

remoteEnvironment object (EnvironmentConfig)
localEnvironment object (LocalEnvironmentConfig)

O ambiente do agente fica na conexão do cliente: as operações de ambiente integradas (operações do sistema de arquivos e comandos em execução) são transferidas para o cliente para execução, em vez de serem executadas em um sandbox gerenciado pelo servidor. Mutuamente exclusivo com remoteEnvironment. Independente de qualquer ferramenta de função declarada pelo cliente, que é sempre executada no cliente, independente desse campo.

Representação JSON
{
  "id": string,
  "status": enum (Status),
  "created": string,
  "updated": string,
  "role": string,
  "outputs": [
    {
      object (Content)
    }
  ],
  "systemInstruction": string,
  "tools": [
    {
      object (Tool)
    }
  ],
  "usage": {
    object (Usage)
  },
  "responseModalities": [
    enum (ResponseModality)
  ],
  "responseMimeType": string,
  "previousInteractionId": string,
  "environmentId": string,
  "serviceTier": enum (ServiceTier),
  "webhookConfig": {
    object (WebhookConfig)
  },
  "steps": [
    {
      object (Step)
    }
  ],

  // input
  "contentList": {
    object (ContentList)
  },
  "stringContent": string,
  "turnList": {
    object (TurnList)
  },
  "stepList": {
    object (StepList)
  },
  "content": {
    object (Content)
  }
  // Union type

  // response_format_config
  "responseFormat": {
    object (Value)
  },
  "responseFormatList": {
    object (ResponseFormatList)
  },
  "responseFormatSingleton": {
    object (ResponseFormat)
  }
  // Union type

  // request_type
  "modelInteraction": {
    object (ModelInteraction)
  },
  "agentInteraction": {
    object (AgentInteraction)
  }
  // Union type

  // environment
  "envId": string,
  "remoteEnvironment": {
    object (EnvironmentConfig)
  },
  "localEnvironment": {
    object (LocalEnvironmentConfig)
  }
  // Union type
}

TurnList

Uma lista de turnos.

Campos
turns[] object (Turn)
Representação JSON
{
  "turns": [
    {
      object (Turn)
    }
  ]
}

CANNOT TRANSLATE

Campos
role string

O criador desta vez. Precisa ser "user" para entrada ou "model" para saída do modelo.

content Union type
content pode ser apenas de um dos tipos a seguir:
contentList object (ContentList)

O conteúdo da vez. Uma matriz de objetos "Content".

contentString string

O conteúdo da vez. Uma única string.

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

  // content
  "contentList": {
    object (ContentList)
  },
  "contentString": string
  // Union type
}

StepList

Uma lista de etapas.

Campos
steps[] object (Step)

As etapas da lista.

Representação JSON
{
  "steps": [
    {
      object (Step)
    }
  ]
}

Etapa

Uma etapa da interação.

Campos
type Union type
type pode ser apenas de um dos tipos a seguir:
thought object (ThoughtStep)
toolCall object (ToolCallStep)
toolResult object (ToolResultStep)
userInput object (UserInputStep)

NÃO USE. Estes são apenas para JSON de terceiros.

modelOutput object (ModelOutputStep)
text
(deprecated)
object (LegacyTextContent)
image
(deprecated)
object (LegacyImageContent)
audio
(deprecated)
object (LegacyAudioContent)
document
(deprecated)
object (LegacyDocumentContent)
video
(deprecated)
object (LegacyVideoContent)
Representação JSON
{

  // type
  "thought": {
    object (ThoughtStep)
  },
  "toolCall": {
    object (ToolCallStep)
  },
  "toolResult": {
    object (ToolResultStep)
  },
  "userInput": {
    object (UserInputStep)
  },
  "modelOutput": {
    object (ModelOutputStep)
  },
  "text": {
    object (LegacyTextContent)
  },
  "image": {
    object (LegacyImageContent)
  },
  "audio": {
    object (LegacyAudioContent)
  },
  "document": {
    object (LegacyDocumentContent)
  },
  "video": {
    object (LegacyVideoContent)
  }
  // Union type
}

ThoughtStep

Uma etapa de raciocínio.

Campos
signature string (bytes format)

Um hash de assinatura para validação de back-end.

Uma string codificada em base64.

summary[] object (Content)

Um resumo do pensamento.

Representação JSON
{
  "signature": string,
  "summary": [
    {
      object (Content)
    }
  ]
}

ToolCallStep

Etapa de chamada de ferramenta.

Campos
id string

Obrigatório. Um ID exclusivo para essa chamada de função específica.

signature string (bytes format)

Um hash de assinatura para validação de back-end.

Uma string codificada em base64.

type Union type
type pode ser apenas de um dos tipos a seguir:
functionCall object (FunctionCallStep)
codeExecutionCall object (CodeExecutionCallStep)
urlContextCall object (UrlContextCallStep)
mcpServerToolCall object (McpServerToolCallStep)
googleSearchCall object (GoogleSearchCallStep)
fileSearchCall object (FileSearchCallStep)
googleMapsCall object (GoogleMapsCallStep)
retrievalCall object (RetrievalCallStep)
Representação JSON
{
  "id": string,
  "signature": string,

  // type
  "functionCall": {
    object (FunctionCallStep)
  },
  "codeExecutionCall": {
    object (CodeExecutionCallStep)
  },
  "urlContextCall": {
    object (UrlContextCallStep)
  },
  "mcpServerToolCall": {
    object (McpServerToolCallStep)
  },
  "googleSearchCall": {
    object (GoogleSearchCallStep)
  },
  "fileSearchCall": {
    object (FileSearchCallStep)
  },
  "googleMapsCall": {
    object (GoogleMapsCallStep)
  },
  "retrievalCall": {
    object (RetrievalCallStep)
  }
  // Union type
}

FunctionCallStep

Uma etapa de chamada de ferramenta de função.

Campos
name string

Obrigatório. O nome da ferramenta a ser chamada.

arguments object (Struct)

Obrigatório. Os argumentos a serem transmitidos para a função.

Representação JSON
{
  "name": string,
  "arguments": {
    object (Struct)
  }
}

UrlContextCallStep

Etapa de chamada de contexto de URL.

Campos
arguments object (UrlContextCallStepArguments)

Obrigatório. Os argumentos a serem transmitidos para o contexto do URL.

Representação JSON
{
  "arguments": {
    object (UrlContextCallStepArguments)
  }
}

UrlContextCallStepArguments

Os argumentos a serem transmitidos para o contexto do URL.

Campos
urls[] string

Os URLs a serem buscados.

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

McpServerToolCallStep

Etapa de chamada de ferramenta MCPServer.

Campos
name string

Obrigatório. O nome da ferramenta que foi chamada.

serverName string

Obrigatório. O nome do servidor MCP usado.

arguments object (Struct)

Obrigatório. O objeto JSON de argumentos para a função.

Representação JSON
{
  "name": string,
  "serverName": string,
  "arguments": {
    object (Struct)
  }
}

GoogleSearchCallStep

Etapa de chamada da Pesquisa Google.

Campos
arguments object (GoogleSearchCallStepArguments)

Obrigatório. Os argumentos a serem transmitidos para a Pesquisa Google.

searchType enum (SearchType)

O tipo de embasamento da pesquisa ativado.

Representação JSON
{
  "arguments": {
    object (GoogleSearchCallStepArguments)
  },
  "searchType": enum (SearchType)
}

GoogleSearchCallStepArguments

Os argumentos a serem transmitidos para a Pesquisa Google.

Campos
queries[] string

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

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

FileSearchCallStep

Esse tipo não tem campos.

Etapa de chamada da pesquisa de arquivos.

GoogleMapsCallStep

Etapa de chamada do Google Maps.

Campos
arguments object (GoogleMapsCallStepArguments)

Os argumentos a serem transmitidos para a ferramenta do Google Maps.

Representação JSON
{
  "arguments": {
    object (GoogleMapsCallStepArguments)
  }
}

GoogleMapsCallStepArguments

Os argumentos a serem transmitidos para a ferramenta do Google Maps.

Campos
queries[] string

As consultas a serem executadas.

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

ToolResultStep

Etapa de resultado da ferramenta.

Campos
callId string

Obrigatório. ID para corresponder ao ID do bloco de chamada de função.

signature string (bytes format)

Um hash de assinatura para validação de back-end.

Uma string codificada em base64.

type Union type
type pode ser apenas de um dos tipos a seguir:
functionResult object (FunctionResultStep)
codeExecutionResult object (CodeExecutionResultStep)
urlContextResult object (UrlContextResultStep)
googleSearchResult object (GoogleSearchResultStep)
mcpServerToolResult object (McpServerToolResultStep)
fileSearchResult object (FileSearchResultStep)
googleMapsResult object (GoogleMapsResultStep)
retrievalResult object (RetrievalResultStep)
Representação JSON
{
  "callId": string,
  "signature": string,

  // type
  "functionResult": {
    object (FunctionResultStep)
  },
  "codeExecutionResult": {
    object (CodeExecutionResultStep)
  },
  "urlContextResult": {
    object (UrlContextResultStep)
  },
  "googleSearchResult": {
    object (GoogleSearchResultStep)
  },
  "mcpServerToolResult": {
    object (McpServerToolResultStep)
  },
  "fileSearchResult": {
    object (FileSearchResultStep)
  },
  "googleMapsResult": {
    object (GoogleMapsResultStep)
  },
  "retrievalResult": {
    object (RetrievalResultStep)
  }
  // Union type
}

FunctionResultStep

Resultado de uma chamada de ferramenta de função.

Campos
name string

O nome da ferramenta que foi chamada.

isError boolean

Se a chamada de função resultou em um erro.

result object (Value)

Obrigatório. O resultado da chamada de ferramenta.

Representação JSON
{
  "name": string,
  "isError": boolean,
  "result": {
    object (Value)
  }
}

UrlContextResultStep

Etapa de resultado do contexto de URL.

Campos
result[] object (UrlContextResultItem)

Obrigatório. Os resultados do contexto do URL.

isError boolean

Indica se o contexto do URL resultou em um erro.

Representação JSON
{
  "result": [
    {
      object (UrlContextResultItem)
    }
  ],
  "isError": boolean
}

UrlContextResultItem

O resultado do contexto do URL.

Campos
url string

O URL buscado.

status enum (Status)

O status da recuperação do URL.

Representação JSON
{
  "url": string,
  "status": enum (Status)
}

GoogleSearchResultStep

Etapa de resultado da pesquisa do Google.

Campos
result[] object (GoogleSearchResultItem)

Obrigatório. Os resultados da Pesquisa Google.

isError boolean

Se a Pesquisa Google resultou em um erro.

Representação JSON
{
  "result": [
    {
      object (GoogleSearchResultItem)
    }
  ],
  "isError": boolean
}

GoogleSearchResultItem

O resultado da Pesquisa Google.

Campos
searchSuggestions string

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

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

McpServerToolResultStep

Etapa de resultado da ferramenta MCPServer.

Campos
name string

Nome da ferramenta chamada para essa chamada de função específica.

serverName string

O nome do servidor MCP usado.

result object (Value)

Obrigatório. A saída da chamada do servidor MCP. Pode ser texto simples ou conteúdo avançado.

Representação JSON
{
  "name": string,
  "serverName": string,
  "result": {
    object (Value)
  }
}

FileSearchResultStep

Esse tipo não tem campos.

Etapa de resultado da pesquisa de arquivos.

GoogleMapsResultStep

Etapa de resultado do Google Maps.

Campos
result[] object (GoogleMapsResultItem)
Representação JSON
{
  "result": [
    {
      object (GoogleMapsResultItem)
    }
  ]
}

GoogleMapsResultItem

O resultado do Google Maps.

Campos
places[] object (GoogleMapsResultPlaces)
widgetContextToken string
Representação JSON
{
  "places": [
    {
      object (GoogleMapsResultPlaces)
    }
  ],
  "widgetContextToken": string
}

GoogleMapsResultPlaces

Campos
placeId string
name string
url string
reviewSnippets[] object (ReviewSnippet)
Representação JSON
{
  "placeId": string,
  "name": string,
  "url": string,
  "reviewSnippets": [
    {
      object (ReviewSnippet)
    }
  ]
}

UserInputStep

Entrada fornecida pelo usuário.

Campos
content Union type
content pode ser apenas de um dos tipos a seguir:
contentList object (ContentList)

O conteúdo da etapa. Uma matriz de objetos "Content".

contentString string

O conteúdo da etapa. Uma única string.

Representação JSON
{

  // content
  "contentList": {
    object (ContentList)
  },
  "contentString": string
  // Union type
}

ModelOutputStep

Saída gerada pelo modelo.

Campos
content[] object (Content)
Representação JSON
{
  "content": [
    {
      object (Content)
    }
  ]
}

ResponseFormatList

Campos
responseFormats[] object (ResponseFormat)
Representação JSON
{
  "responseFormats": [
    {
      object (ResponseFormat)
    }
  ]
}

ResponseFormat

Campos
type Union type
type pode ser apenas de um dos tipos a seguir:
audio object (AudioResponseFormat)
text object (TextResponseFormat)
image object (ImageResponseFormat)
video object (VideoResponseFormat)
structValue object (Struct)

Os valores de vários discriminadores já estão ativados no GAOS

Representação JSON
{

  // type
  "audio": {
    object (AudioResponseFormat)
  },
  "text": {
    object (TextResponseFormat)
  },
  "image": {
    object (ImageResponseFormat)
  },
  "video": {
    object (VideoResponseFormat)
  },
  "structValue": {
    object (Struct)
  }
  // Union type
}

TextResponseFormat

Configuração para o formato de saída de texto.

Campos
mimeType enum (MimeType)

O tipo MIME da saída de texto.

schema object (Struct)

O esquema JSON que a saída precisa seguir. Aplicável somente quando mimeType é application/json.

Representação JSON
{
  "mimeType": enum (MimeType),
  "schema": {
    object (Struct)
  }
}

ImageResponseFormat

Configuração para o formato de saída da imagem.

Campos
mimeType enum (MimeType)

O tipo MIME da saída de imagem.

delivery enum (Delivery)

O modo de transferência da saída de imagem.

aspectRatio enum (AspectRatio)

É a proporção da saída de imagem.

imageSize enum (ImageSize)

O tamanho da saída da imagem.

Representação JSON
{
  "mimeType": enum (MimeType),
  "delivery": enum (Delivery),
  "aspectRatio": enum (AspectRatio),
  "imageSize": enum (ImageSize)
}

VideoResponseFormat

Configuração para o formato de saída de vídeo.

Campos
delivery enum (Delivery)

O modo de transferência da saída de vídeo.

aspectRatio enum (AspectRatio)

É a proporção da saída de vídeo.

duration string (Duration format)

A duração da saída de vídeo.

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

Representação JSON
{
  "delivery": enum (Delivery),
  "aspectRatio": enum (AspectRatio),
  "duration": string
}

ModelInteraction

Interação para gerar a conclusão usando modelos.

Campos
model string

O nome do Model usado para gerar a conclusão.

generationConfig object (GenerationConfig)

Somente entrada. Parâmetros de configuração para a interação do modelo.

Representação JSON
{
  "model": string,
  "generationConfig": {
    object (GenerationConfig)
  }
}

GenerationConfig

Parâmetros de configuração para interações do modelo.

Campos
temperature number

Controla a aleatoriedade da saída.

topP number

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

seed integer

Seed usada na decodificação para reprodutibilidade.

stopSequences[] string

Uma lista de sequências de caracteres que vão interromper a interação de saída.

thinkingLevel enum (ThinkingLevel)

O nível de tokens de pensamento que o modelo deve gerar.

thinkingSummaries enum (ThinkingSummaries)

Define se os resumos de pensamento serão incluídos na resposta.

maxOutputTokens integer

O número máximo de tokens a serem incluídos na resposta.

speechConfig[] object (SpeechConfig)

Configuração para interação de fala.

imageConfig
(deprecated)
object (ImageConfig)

Configuração para interação com imagens.

videoConfig object (VideoConfig)

Configuração para geração de vídeo.

tool_choice Union type
A configuração de escolha da ferramenta. tool_choice pode ser apenas de um dos tipos a seguir:
toolChoiceMode enum (ToolChoiceType)

O modo da escolha de ferramenta.

toolChoiceConfig object (ToolChoiceConfig)

A configuração para a escolha da ferramenta.

Representação JSON
{
  "temperature": number,
  "topP": number,
  "seed": integer,
  "stopSequences": [
    string
  ],
  "thinkingLevel": enum (ThinkingLevel),
  "thinkingSummaries": enum (ThinkingSummaries),
  "maxOutputTokens": integer,
  "speechConfig": [
    {
      object (SpeechConfig)
    }
  ],
  "imageConfig": {
    object (ImageConfig)
  },
  "videoConfig": {
    object (VideoConfig)
  },

  // tool_choice
  "toolChoiceMode": enum (ToolChoiceType),
  "toolChoiceConfig": {
    object (ToolChoiceConfig)
  }
  // Union type
}

ToolChoiceConfig

A configuração de escolha de ferramenta que contém as ferramentas permitidas.

Campos
allowedTools object (AllowedTools)

As ferramentas permitidas.

Representação JSON
{
  "allowedTools": {
    object (AllowedTools)
  }
}

SpeechConfig

A configuração para interação por voz.

Campos
voice string

A voz do alto-falante.

language string

O idioma da fala.

speaker string

O nome do falante precisa corresponder ao nome informado no comando.

Representação JSON
{
  "voice": string,
  "language": string,
  "speaker": string
}

ImageConfig

A configuração para interação com imagens.

Campos
aspectRatio string

A proporção da imagem a ser gerada. Proporções compatíveis: 1:1, 2:3, 3:2, 3:4, 4:3, 9:16, 16:9, 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

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

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

VideoConfig

Opções de configuração para geração de vídeo.

Campos
task enum (Task)

Modo de tarefa opcional para geração de vídeo. Se não for especificado, o modelo vai determinar automaticamente o modo adequado com base no comando de texto e na mídia de entrada fornecidos.

Representação JSON
{
  "task": enum (Task)
}

EnvironmentConfig

Configuração para um ambiente personalizado.

Campos
sources[] object (Source)
environmentId string

Opcional. O ID do ambiente da interação. Se especificado, a solicitação vai atualizar o ambiente atual em vez de criar um novo.

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
{
  "sources": [
    {
      object (Source)
    }
  ],
  "environmentId": string,

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

EnvironmentNetworkEgressAllowlist

Configuração de saída de rede para o ambiente.

Campos
allowlist[] object (EgressRule)

Lista de domínios permitidos e suas configurações.

Representação JSON
{
  "allowlist": [
    {
      object (EgressRule)
    }
  ]
}

EgressRule

Uma regra de saída de rede que controla quais domínios externos o ambiente pode alcançar. Cada regra identifica um domínio de destino e, opcionalmente, um conjunto de cabeçalhos HTTP para injetar em cada solicitação de saída correspondente.

Campos
domain string

O padrão de domínio a ser correspondido para esta regra. Use um nome de host exato (por exemplo, github.com), um prefixo curinga (por exemplo, *.googleapis.com) ou * para corresponder a todos os domínios.

transform map (key: string, value: string)

Cabeçalhos a serem injetados em solicitações que correspondem a essa regra. Chave: nome do cabeçalho (por exemplo, "Authorization"). Valor: valor do cabeçalho (por exemplo, "Bearer your-token").

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

Representação JSON
{
  "domain": string,
  "transform": {
    string: string,
    ...
  }
}

Origem

Uma origem a ser montada no ambiente.

Campos
type enum (Type)
source string

A origem do ambiente. Para o GCS, esse é o caminho do GCS. No GitHub, esse é o caminho do GitHub.

target string

Onde a origem deve aparecer no ambiente.

content string

O conteúdo inline se type for INLINE.

encoding string

Codificação opcional para conteúdo inline (por exemplo, base64).

Representação JSON
{
  "type": enum (Type),
  "source": string,
  "target": string,
  "content": string,
  "encoding": string
}

LocalEnvironmentConfig

Esse tipo não tem campos.

Configuração de um ambiente que fica na conexão do cliente, e não em uma sandbox gerenciada pelo servidor.

Quando definido (via Interaction.local_environment), o sistema de arquivos e o shell do agente são tratados como se estivessem no cliente: as operações de ambiente integradas do agente (por exemplo, leitura/listagem/edição de arquivos e execução de comandos) são suspensas no servidor e retornadas ao cliente para execução, com os resultados retornados em uma próxima vez. Isso é mutuamente exclusivo com um EnvironmentConfig gerenciado pelo servidor (remoteEnvironment), já que o ambiente está no cliente ou em uma sandbox do servidor, nunca nos dois.

Isso rege apenas o ambiente integrado do agente. As ferramentas de função declaradas pelo cliente são sempre executadas no cliente, independentemente desse campo.

Ferramenta

Uma ferramenta que pode ser usada pelo modelo.

Campos
type Union type
A ferramenta a ser usada. type pode ser apenas de um dos tipos a seguir:
function object (Function)

Uma função que pode ser usada pelo modelo.

codeExecution object (CodeExecution)

Uma ferramenta que pode ser usada pelo modelo para executar código.

urlContext object (UrlContext)

Uma ferramenta que pode ser usada pelo modelo para buscar o contexto do URL.

computerUse object (ComputerUse)

Ferramenta para ajudar o modelo a interagir diretamente com o computador.

mcpServer object (McpServer)

Um MCPServer é um servidor que pode ser chamado pelo modelo para realizar ações.

googleMaps object (GoogleMaps)

Uma ferramenta que pode ser usada pelo modelo para pesquisar no Google Maps.

retrieval object (Retrieval)

Uma ferramenta que pode ser usada pelo modelo para recuperar arquivos.

Representação JSON
{

  // type
  "function": {
    object (Function)
  },
  "codeExecution": {
    object (CodeExecution)
  },
  "urlContext": {
    object (UrlContext)
  },
  "computerUse": {
    object (ComputerUse)
  },
  "mcpServer": {
    object (McpServer)
  },
  "googleSearch": {
    object (GoogleSearch)
  },
  "fileSearch": {
    object (FileSearch)
  },
  "googleMaps": {
    object (GoogleMaps)
  },
  "retrieval": {
    object (Retrieval)
  }
  // Union type
}

Função

Uma ferramenta que pode ser usada pelo modelo.

Campos
name string

O nome da função.

description string

Uma descrição da função.

parameters object (Value)

O esquema JSON para os parâmetros da função.

Representação JSON
{
  "name": string,
  "description": string,
  "parameters": {
    object (Value)
  }
}

UrlContext

Esse tipo não tem campos.

Uma ferramenta que pode ser usada pelo modelo para buscar o contexto do URL.

McpServer

Um MCPServer é um servidor que pode ser chamado pelo modelo para realizar ações.

Campos
name string

O nome do MCPServer.

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" }.

allowedTools[] object (AllowedTools)

As ferramentas permitidas.

Representação JSON
{
  "name": string,
  "url": string,
  "headers": {
    string: string,
    ...
  },
  "allowedTools": [
    {
      object (AllowedTools)
    }
  ]
}

GoogleSearch

Uma ferramenta que pode ser usada pelo modelo para pesquisar no Google.

Campos
searchTypes[] enum (SearchType)

Os tipos de embasamento de pesquisa a serem ativados.

Representação JSON
{
  "searchTypes": [
    enum (SearchType)
  ]
}

FileSearch

Uma ferramenta que pode ser usada pelo modelo para pesquisar arquivos.

Campos
fileSearchStoreNames[] string

Os nomes das lojas de pesquisa de arquivos a serem pesquisados.

topK integer

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

metadataFilter string

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

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

GoogleMaps

Uma ferramenta que pode ser usada pelo modelo para chamar o Google Maps.

Campos
enableWidget boolean

Se é necessário retornar um token de contexto de widget no resultado da chamada de ferramenta da resposta.

latitude number

A latitude da localização do usuário.

longitude number

A longitude da localização do usuário.

Representação JSON
{
  "enableWidget": boolean,
  "latitude": number,
  "longitude": number
}

Uso

Estatísticas sobre o uso de tokens da solicitação de interação.

Campos
totalInputTokens integer

Número de tokens no comando (contexto).

inputTokensByModality[] object (ModalityTokens)

Um detalhamento do uso de tokens de entrada por modalidade.

totalCachedTokens integer

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

cachedTokensByModality[] object (ModalityTokens)

Um detalhamento do uso de tokens em cache por modalidade.

totalOutputTokens integer

Número total de tokens em todas as respostas geradas.

outputTokensByModality[] object (ModalityTokens)

Um detalhamento do uso de tokens de saída por modalidade.

totalToolUseTokens integer

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

toolUseTokensByModality[] object (ModalityTokens)

Um detalhamento do uso de tokens de uso de ferramentas por modalidade.

totalThoughtTokens integer

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

totalTokens integer

Contagem total de tokens para a solicitação de interação (comando + respostas + outros tokens internos).

groundingToolCount[] object (GroundingToolCount)

Contagem de ferramentas de embasamento.

Representação JSON
{
  "totalInputTokens": integer,
  "inputTokensByModality": [
    {
      object (ModalityTokens)
    }
  ],
  "totalCachedTokens": integer,
  "cachedTokensByModality": [
    {
      object (ModalityTokens)
    }
  ],
  "totalOutputTokens": integer,
  "outputTokensByModality": [
    {
      object (ModalityTokens)
    }
  ],
  "totalToolUseTokens": integer,
  "toolUseTokensByModality": [
    {
      object (ModalityTokens)
    }
  ],
  "totalThoughtTokens": integer,
  "totalTokens": integer,
  "groundingToolCount": [
    {
      object (GroundingToolCount)
    }
  ]
}

ModalityTokens

A contagem de tokens para uma única modalidade de resposta.

Campos
modality enum (ResponseModality)

A modalidade associada à contagem de tokens.

tokens integer

Número de tokens para a modalidade.

Representação JSON
{
  "modality": enum (ResponseModality),
  "tokens": integer
}

GroundingToolCount

O número de contagens de ferramentas de embasamento.

Campos
type enum (Type)

O tipo de ferramenta de embasamento associado à contagem.

count integer

O número de contagens de ferramentas de embasamento.

Representação JSON
{
  "type": enum (Type),
  "count": integer
}

WebhookConfig

Mensagem para configurar eventos de webhook para uma solicitação.

Campos
uris[] string

Opcional. Se definidos, esses URIs de webhook serão usados para eventos de webhook em vez dos webhooks registrados.

userMetadata object (Struct format)

Opcional. Os metadados do usuário que serão retornados em cada emissão de evento para os webhooks.

Representação JSON
{
  "uris": [
    string
  ],
  "userMetadata": {
    object
  }
}

SafetySetting

Uma configuração de segurança que afeta o comportamento de bloqueio de segurança.

Uma [SafetySetting][google.cloud.aiplatform.master.SafetySetting] consiste em uma [categoria][google.cloud.aiplatform.master.SafetySetting.category] de dano e um [limite][google.cloud.aiplatform.master.SafetySetting.threshold] para essa categoria.

Campos
type enum (HarmCategory)

Obrigatório. O tipo de categoria de dano a ser bloqueada.

threshold enum (HarmBlockThreshold)

Obrigatório. O limite para bloquear conteúdo. Se a probabilidade de danos exceder esse limite, o conteúdo será bloqueado.

method enum (HarmBlockMethod)

Opcional. O método de bloqueio de conteúdo. Se não for especificado, o comportamento padrão será usar a pontuação de probabilidade.

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

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.

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".
BROWSER Funciona em um navegador da Web.
MOBILE Operar em um ambiente móvel.
DESKTOP Funciona em um ambiente de computador.

HarmBlockMethod

O método de bloqueio de conteúdo.

Tipos enumerados
HARM_BLOCK_METHOD_UNSPECIFIED O método do bloco de danos não foi especificado.
SEVERITY O método do bloqueio de danos usa pontuações de probabilidade e gravidade.
PROBABILITY O método do bloqueio de danos usa a pontuação de probabilidade.

HarmBlockThreshold

Limites para bloquear conteúdo com base na probabilidade de danos.

Tipos enumerados
HARM_BLOCK_THRESHOLD_UNSPECIFIED O limite do bloqueio de danos não foi especificado.
BLOCK_LOW_AND_ABOVE Bloquear conteúdo com probabilidade de dano baixa ou maior.
BLOCK_MEDIUM_AND_ABOVE Bloquear conteúdo com probabilidade média ou alta de danos.
BLOCK_ONLY_HIGH Bloquear conteúdo com alta probabilidade de danos.
BLOCK_NONE Não bloquear nenhum conteúdo, seja qual for a probabilidade de danos.
OFF Desative o filtro de segurança completamente.

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.

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.

MediaResolution

Resolução para mídia de entrada (imagens/vídeo).

Tipos enumerados
MEDIA_RESOLUTION_UNSPECIFIED Valor padrão. Esse valor não é usado.
LOW Baixa resolução.
MEDIUM Resolução média.
HIGH Alta resolução.
ULTRA_HIGH Ultra-alta resolução.

MimeType

Tipos enumerados
TYPE_UNSPECIFIED
TYPE_WAV Formato de áudio WAV
TYPE_MP3 Formato de áudio MP3
TYPE_AIFF Formato de áudio AIFF
TYPE_AAC Formato de áudio AAC
TYPE_OGG Formato de áudio OGG
TYPE_FLAC Formato de áudio FLAC
TYPE_MPEG Formato de áudio MPEG
TYPE_M4A Formato de áudio M4A
TYPE_L16 Formato de áudio L16
TYPE_OPUS Formato de áudio OPUS
TYPE_ALAW Formato de áudio ALAW.
TYPE_MULAW Formato de áudio MULAW

Modo

Define a profundidade e a abrangência da sessão de descoberta.

Tipos enumerados
MODE_UNSPECIFIED Valor padrão. Esse valor não é usado.
MODE_SCAN Verificação rápida usando apenas o classificador inicial.
MODE_VERIFY Realiza a classificação seguida de uma investigação detalhada.

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.

ResponseModality

A modalidade da resposta.

Tipos enumerados
RESPONSE_MODALITY_UNSPECIFIED Valor padrão. Esse valor não é usado.
TEXT Indica que o modelo precisa retornar texto.
IMAGE Indica que o modelo precisa retornar imagens.
AUDIO Indica que o modelo precisa retornar áudio.
VIDEO Indica que o modelo precisa retornar vídeo.
DOCUMENT Indica que o modelo precisa retornar documentos.

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
title string

Título da avaliação.

url string

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

reviewId string

O ID do snippet de avaliação.

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

SafetyPolicy

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.

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.

Tipo de pesquisa

Os tipos de embasamento de pesquisa a serem ativados.

Tipos enumerados
SEARCH_TYPE_UNSPECIFIED Tipo de pesquisa não especificado. Esse valor não deve ser usado.

Struct

Struct representa um valor de dados estruturados, consistindo em campos que mapeiam para valores digitados dinamicamente.

Campos
fields[] object (Field)

Campos digitados dinamicamente. Listar em vez de mapa porque os LLMs são sensíveis à ordenação, e queremos dar aos usuários controle total.

Representação JSON
{
  "fields": [
    {
      object (Field)
    }
  ]
}

Campo

Representa um único campo em uma estrutura.

Campos
name string
value object (Value)
Representação JSON
{
  "name": string,
  "value": {
    object (Value)
  }
}

Tarefa

Tarefas de geração de vídeo compatíveis.

Tipos enumerados
TASK_UNSPECIFIED Tarefa não especificada. A tarefa é inferida com base no comando de entrada e na mídia.
TEXT_TO_VIDEO Gera vídeos apenas com base em um comando de texto.
IMAGE_TO_VIDEO Gera vídeos com base em uma ou duas imagens de origem. A primeira imagem define o frame inicial, e a segunda imagem opcional define o frame final.
REFERENCE_TO_VIDEO Gera vídeos usando mídia de referência (como imagens, áudio ou vídeo).
EDIT Modifica um vídeo de entrada.

ThinkingLevel

O nível de tokens de pensamento que o modelo deve gerar.

Tipos enumerados
THINKING_LEVEL_UNSPECIFIED Valor padrão. Esse valor não é usado.
THINKING_LEVEL_MINIMAL Pouco ou nenhum pensamento.
THINKING_LEVEL_LOW Nível de raciocínio baixo.
THINKING_LEVEL_MEDIUM Nível de raciocínio médio.
THINKING_LEVEL_HIGH Alto nível de raciocínio.

ThinkingSummaries

Define se os resumos de pensamento serão incluídos na resposta.

Tipos enumerados
THINKING_SUMMARIES_UNSPECIFIED Valor padrão. Esse valor não é usado.
THINKING_SUMMARIES_AUTO Resumos de raciocínio automáticos.
THINKING_SUMMARIES_NONE Nenhum resumo de raciocínio.

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: 16

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 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 da 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
}

ToolChoiceType

O tipo de escolha de ferramenta.

Tipos enumerados
TOOL_CHOICE_TYPE_UNSPECIFIED Valor padrão. Esse valor não é usado.
AUTO Escolha automática de ferramentas.
ANY Qualquer escolha de ferramenta.
NONE Nenhuma escolha de ferramenta.
VALIDATED Escolha de ferramenta validada.

Valor

Value representa um valor com tipagem dinâmica que pode ser nulo, um número, uma string, um booleano, um valor de struct recursivo ou uma lista de valores. Um produtor de valor precisa definir uma dessas variantes. A ausência de qualquer variante indica um erro.

Campos
kind Union type
O tipo de valor. kind pode ser apenas de um dos tipos a seguir:
nullValue null

Representa um valor nulo.

numberValue number

Representa um valor double.

stringValue string

Representa um valor de string.

boolValue boolean

Representa um valor booleano.

structValue object (Struct)

Representa um valor estruturado.

listValue object (ListValue)

Representa um Value repetido.

contentValue object (Content)

Representa conteúdo avançado (texto, imagem etc.).

Representação JSON
{

  // kind
  "nullValue": null,
  "numberValue": number,
  "stringValue": string,
  "boolValue": boolean,
  "structValue": {
    object (Struct)
  },
  "listValue": {
    object (ListValue)
  },
  "contentValue": {
    object (Content)
  }
  // Union type
}

ListValue

ListValue é um wrapper em torno de um campo repetido de valores.

Campos
values[] object (Value)

Campo repetido de valores digitados dinamicamente.

Representação JSON
{
  "values": [
    {
      object (Value)
    }
  ]
}

VisualizationMode

Enumeração do modo de visualização. Eventualmente, vamos oferecer suporte a um modo interativo em que o usuário pode escolher se quer incluir visualizações em HTML na resposta.

Tipos enumerados
UNSPECIFIED O modo de visualização padrão. O padrão é AUTO.
OFF Não inclua visualizações.
AUTO Incluir visualizações automaticamente.

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 período 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 com o 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 ativado, 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.

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)
  }
}

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
}

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 compactação causa um aumento temporário na 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
}

AudioTranscriptionConfig

A configuração de transcrição de áudio.

Campos
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).

language_config Union type
A configuração de idioma para a transcrição de áudio. Para modelos de ASR, é obrigatório. Um erro será retornado se não for definido. language_config pode ser apenas de um dos tipos a seguir:
languageAuto object (LanguageAuto)

Opcional. O modelo detecta o idioma automaticamente.

languageHints object (LanguageHints)

Opcional. Especifica um ou mais idiomas no áudio.

Representação JSON
{
  "adaptationPhrases": [
    string
  ],
  "customVocabulary": [
    string
  ],

  // 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[] string

Obrigatório. Códigos de idioma BCP-47.

Representação JSON
{
  "languageCodes": [
    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 período 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.