Generating content

La API de Gemini admite la generación de contenido con imágenes, audio, código, herramientas y mucho más. Para obtener detalles sobre cada una de estas funciones, sigue leyendo y consulta el código de muestra enfocado en tareas o lee las guías integrales.

Método: models.generateContent

Genera una respuesta del modelo a partir de una entrada GenerateContentRequest. Consulta la guía de generación de texto para obtener información detallada sobre el uso. Las capacidades de entrada difieren entre los modelos, incluidos los modelos ajustados. Consulta la guía del modelo y la guía de ajuste para obtener más detalles.

Extremo

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

Parámetros de ruta

model string

Obligatorio. Es el nombre del Model que se usará para generar la finalización.

Formato: models/{model}. Toma la forma models/{model}.

Cuerpo de la solicitud

El cuerpo de la solicitud contiene datos con la siguiente estructura:

Campos
contents[] object (Content)

Obligatorio. El contenido de la conversación actual con el modelo.

Para consultas de un solo turno, esta es una instancia única. Para las consultas de varios turnos, como chat, este es un campo repetido que contiene el historial de conversaciones y la solicitud más reciente.

tools[] object (Tool)

Opcional. Es una lista de Tools que el Model puede usar para generar la siguiente respuesta.

Una Tool es un fragmento de código que permite que el sistema interactúe con sistemas externos para realizar una acción, o un conjunto de acciones, fuera del conocimiento y del alcance del Model. Los Tool admitidos son Function y codeExecution. Consulta las guías de Llamada a función y Ejecución de código para obtener más información.

toolConfig object (ToolConfig)

Opcional. Es la configuración de la herramienta para cualquier Tool especificado en la solicitud. Consulta la guía de llamadas a funciones para ver un ejemplo de uso.

safetySettings[] object (SafetySetting)

Opcional. Es una lista de instancias SafetySetting únicas para bloquear contenido no seguro.

Esto se aplicará en GenerateContentRequest.contents y GenerateContentResponse.candidates. No debe haber más de un parámetro de configuración para cada tipo de SafetyCategory. La API bloqueará todo el contenido y las respuestas que no cumplan con los umbrales establecidos por estos parámetros de configuración. Esta lista anula la configuración predeterminada de cada SafetyCategory especificado en safetySettings. Si no hay un SafetySetting para un SafetyCategory determinado proporcionado en la lista, la API usará el parámetro de configuración de seguridad predeterminado para esa categoría. Se admiten las categorías de daño HARM_CATEGORY_HATE_SPEECH, HARM_CATEGORY_SEXUALLY_EXPLICIT, HARM_CATEGORY_DANGEROUS_CONTENT, HARM_CATEGORY_HARASSMENT, HARM_CATEGORY_CIVIC_INTEGRITY y HARM_CATEGORY_JAILBREAK. Consulta la guía para obtener información detallada sobre los parámetros de configuración de seguridad disponibles. También consulta la Guía de seguridad para obtener información sobre cómo incorporar consideraciones de seguridad en tus aplicaciones de IA.

systemInstruction object (Content)

Opcional. El desarrollador establece instrucciones del sistema. Actualmente, solo texto.

generationConfig object (GenerationConfig)

Opcional. Son las opciones de configuración para la generación y los resultados del modelo.

cachedContent string

Opcional. Nombre del contenido almacenado en caché que se usará como contexto para entregar la predicción. Formato: cachedContents/{cachedContent}

serviceTier enum (ServiceTier)

Opcional. Es el nivel de servicio de la solicitud.

store boolean

Opcional. Configura el comportamiento de registro para una solicitud determinada. Si se establece, tiene prioridad sobre la configuración de registro a nivel del proyecto.

Ejemplo de solicitud

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)

Almeja

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());

Imagen

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)

Almeja

# 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());

Audio

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)

Almeja

# 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

Video

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)

Almeja

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

Almeja

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

Almeja

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());

Caché

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)

Almeja

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());

Ejecución 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());

Llamadas a funciones

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

Almeja


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

Configuración de generación

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)

Almeja

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());

Configuración de seguridad

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

Almeja

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());

Instrucción del 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)

Almeja

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());

Cuerpo de la respuesta

Si se ejecuta de forma correcta, el cuerpo de la respuesta contiene una instancia de GenerateContentResponse.

Método: models.streamGenerateContent

Genera una respuesta transmitida del modelo a partir de una entrada GenerateContentRequest.

Extremo

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

Parámetros de ruta

model string

Obligatorio. Es el nombre del Model que se usará para generar la finalización.

Formato: models/{model}. Toma la forma models/{model}.

Cuerpo de la solicitud

El cuerpo de la solicitud contiene datos con la siguiente estructura:

Campos
contents[] object (Content)

Obligatorio. El contenido de la conversación actual con el modelo.

Para consultas de un solo turno, esta es una instancia única. Para las consultas de varios turnos, como chat, este es un campo repetido que contiene el historial de conversaciones y la solicitud más reciente.

tools[] object (Tool)

Opcional. Es una lista de Tools que el Model puede usar para generar la siguiente respuesta.

Una Tool es un fragmento de código que permite que el sistema interactúe con sistemas externos para realizar una acción, o un conjunto de acciones, fuera del conocimiento y del alcance del Model. Los Tool admitidos son Function y codeExecution. Consulta las guías de Llamada a función y Ejecución de código para obtener más información.

toolConfig object (ToolConfig)

Opcional. Es la configuración de la herramienta para cualquier Tool especificado en la solicitud. Consulta la guía de llamadas a funciones para ver un ejemplo de uso.

safetySettings[] object (SafetySetting)

Opcional. Es una lista de instancias SafetySetting únicas para bloquear contenido no seguro.

Esto se aplicará en GenerateContentRequest.contents y GenerateContentResponse.candidates. No debe haber más de un parámetro de configuración para cada tipo de SafetyCategory. La API bloqueará todo el contenido y las respuestas que no cumplan con los umbrales establecidos por estos parámetros de configuración. Esta lista anula la configuración predeterminada de cada SafetyCategory especificado en safetySettings. Si no hay un SafetySetting para un SafetyCategory determinado proporcionado en la lista, la API usará el parámetro de configuración de seguridad predeterminado para esa categoría. Se admiten las categorías de daño HARM_CATEGORY_HATE_SPEECH, HARM_CATEGORY_SEXUALLY_EXPLICIT, HARM_CATEGORY_DANGEROUS_CONTENT, HARM_CATEGORY_HARASSMENT, HARM_CATEGORY_CIVIC_INTEGRITY y HARM_CATEGORY_JAILBREAK. Consulta la guía para obtener información detallada sobre los parámetros de configuración de seguridad disponibles. También consulta la Guía de seguridad para obtener información sobre cómo incorporar consideraciones de seguridad en tus aplicaciones de IA.

systemInstruction object (Content)

Opcional. El desarrollador establece instrucciones del sistema. Actualmente, solo texto.

generationConfig object (GenerationConfig)

Opcional. Son las opciones de configuración para la generación y los resultados del modelo.

cachedContent string

Opcional. Nombre del contenido almacenado en caché que se usará como contexto para entregar la predicción. Formato: cachedContents/{cachedContent}

serviceTier enum (ServiceTier)

Opcional. Es el nivel de servicio de la solicitud.

store boolean

Opcional. Configura el comportamiento de registro para una solicitud determinada. Si se establece, tiene prioridad sobre la configuración de registro a nivel del proyecto.

Ejemplo de solicitud

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

Almeja

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();

Imagen

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

Almeja

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();

Audio

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

Almeja

# 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

Video

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

Almeja

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

Almeja

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

Almeja

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"

Cuerpo de la respuesta

Si se ejecuta correctamente, el cuerpo de la respuesta contiene un flujo de instancias de GenerateContentResponse.

GenerateContentResponse

Es la respuesta del modelo que admite varias respuestas candidatas.

Las clasificaciones de seguridad y el filtrado de contenido se informan para la instrucción en GenerateContentResponse.prompt_feedback y para cada candidato en finishReason y en safetyRatings. La API: - Muestra todos los candidatos solicitados o ninguno. - No muestra ningún candidato solo si hubo algún problema con la instrucción (consulta promptFeedback). - Informa comentarios sobre cada candidato en finishReason y safetyRatings.

Campos
candidates[] object (Candidate)

Son las respuestas candidatas del modelo.

promptFeedback object (PromptFeedback)

Devuelve los comentarios de la instrucción relacionados con los filtros de contenido.

usageMetadata object (UsageMetadata)

Solo salida. Son los metadatos sobre el uso de tokens de las solicitudes de generación.

modelVersion string

Solo salida. Es la versión del modelo que se usó para generar la respuesta.

responseId string

Solo salida. responseId se usa para identificar cada respuesta.

modelStatus object (ModelStatus)

Solo salida. Es el estado actual del modelo.

Representación JSON
{
  "candidates": [
    {
      object (Candidate)
    }
  ],
  "promptFeedback": {
    object (PromptFeedback)
  },
  "usageMetadata": {
    object (UsageMetadata)
  },
  "modelVersion": string,
  "responseId": string,
  "modelStatus": {
    object (ModelStatus)
  }
}

PromptFeedback

Es un conjunto de los metadatos de comentarios que especificó la instrucción en GenerateContentRequest.content.

Campos
blockReason enum (BlockReason)

Opcional. Si se configura, se bloqueó la instrucción y no se devolvieron candidatos. Reformula la instrucción.

safetyRatings[] object (SafetyRating)

Son las calificaciones de seguridad de la instrucción. Hay, como máximo, una clasificación por categoría.

Representación JSON
{
  "blockReason": enum (BlockReason),
  "safetyRatings": [
    {
      object (SafetyRating)
    }
  ]
}

BlockReason

Especifica el motivo por el que se bloqueó la instrucción.

Enums
BLOCK_REASON_UNSPECIFIED Valor predeterminado Este valor no se usa.
SAFETY Se bloqueó la instrucción por motivos de seguridad. Inspecciona safetyRatings para comprender qué categoría de seguridad lo bloqueó.
OTHER Se bloqueó la instrucción por motivos desconocidos.
BLOCKLIST Se bloqueó la instrucción debido a los términos incluidos en la lista de términos bloqueados.
PROHIBITED_CONTENT Se bloqueó la instrucción debido a contenido prohibido.
IMAGE_SAFETY Se bloquearon los candidatos debido a contenido no seguro para la generación de imágenes.

UsageMetadata

Son los metadatos sobre el uso de tokens de la solicitud de generación.

Campos
promptTokenCount integer

Cantidad de tokens en la instrucción. Cuando se establece cachedContent, este sigue siendo el tamaño total efectivo de la instrucción, lo que significa que incluye la cantidad de tokens en el contenido almacenado en caché.

cachedContentTokenCount integer

Cantidad de tokens en la parte almacenada en caché de la instrucción (el contenido almacenado en caché)

candidatesTokenCount integer

Es la cantidad total de tokens en todos los candidatos de respuesta generados.

toolUsePromptTokenCount integer

Solo salida. Cantidad de tokens presentes en las instrucciones de uso de herramientas.

thoughtsTokenCount integer

Solo salida. Es la cantidad de tokens de pensamientos para los modelos de pensamiento.

totalTokenCount integer

Es el recuento total de tokens para la solicitud de generación (instrucción + pensamientos + candidatos de respuesta).

promptTokensDetails[] object (ModalityTokenCount)

Solo salida. Es la lista de modalidades que se procesaron en la entrada de la solicitud.

cacheTokensDetails[] object (ModalityTokenCount)

Solo salida. Es la lista de modalidades del contenido almacenado en caché en la entrada de la solicitud.

candidatesTokensDetails[] object (ModalityTokenCount)

Solo salida. Es la lista de modalidades que se devolvieron en la respuesta.

toolUsePromptTokensDetails[] object (ModalityTokenCount)

Solo salida. Lista de las modalidades que se procesaron para las entradas de la solicitud de uso de herramientas.

serviceTier enum (ServiceTier)

Solo salida. Es el nivel de servicio de la solicitud.

Representación 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

Es el estado del modelo subyacente. Se usa para indicar la etapa del modelo subyacente y la hora de retiro, si corresponde.

Campos
modelStage enum (ModelStage)

Es la etapa del modelo subyacente.

retirementTime string (Timestamp format)

Es la fecha y hora en la que se retirará el modelo.

Usa el formato RFC 3339, en el que el resultado generado siempre usará la normalización Z y los dígitos fraccionarios 0, 3, 6 o 9. También se aceptan otras compensaciones que no sean “Z”. Ejemplos: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" o "2014-10-02T15:01:23+05:30".

message string

Es un mensaje que explica el estado del modelo.

Representación JSON
{
  "modelStage": enum (ModelStage),
  "retirementTime": string,
  "message": string
}

ModelStage

Define la etapa del modelo subyacente.

Enums
MODEL_STAGE_UNSPECIFIED Etapa del modelo sin especificar.
UNSTABLE_EXPERIMENTAL

El modelo subyacente está sujeto a muchos ajustes.

EXPERIMENTAL Los modelos en esta etapa son solo para fines experimentales.
PREVIEW Los modelos en esta etapa son más avanzados que los modelos experimentales.
STABLE Los modelos en esta etapa se consideran estables y listos para su uso en producción.
LEGACY Si el modelo se encuentra en esta etapa, significa que está en camino a la baja en un futuro cercano. Solo los clientes existentes pueden usar este modelo.
DEPRECATED

Los modelos en esta etapa dejaron de estar disponibles. No se pueden usar estos modelos.

RETIRED Los modelos en esta etapa se retiran. No se pueden usar estos modelos.

Candidato

Es un candidato de respuesta generado a partir del modelo.

Campos
content object (Content)

Solo salida. Es el contenido generado que devuelve el modelo.

finishReason enum (FinishReason)

Opcional. Solo salida. El motivo por el que el modelo dejó de generar tokens.

Si está vacío, el modelo no dejó de generar tokens.

safetyRatings[] object (SafetyRating)

Es una lista de calificaciones sobre la seguridad de un candidato de respuesta.

Hay, como máximo, una clasificación por categoría.

citationMetadata object (CitationMetadata)

Solo salida. Es la información de la cita del candidato generado por el modelo.

Es posible que este campo se complete con información de recitación para cualquier texto incluido en content. Son pasajes que se "recitan" a partir de material protegido por derechos de autor en los datos de entrenamiento del LLM fundamental.

tokenCount integer

Solo salida. Es el recuento de tokens para este candidato.

groundingAttributions[] object (GroundingAttribution)

Solo salida. Es la información de atribución de las fuentes que contribuyeron a una respuesta fundamentada.

Este campo se propaga para las llamadas a GenerateAnswer.

groundingMetadata object (GroundingMetadata)

Solo salida. Son los metadatos de fundamentación del candidato.

Este campo se propaga para las llamadas a GenerateContent.

avgLogprobs number

Solo salida. Es la puntuación promedio de probabilidad logarítmica del candidato.

logprobsResult object (LogprobsResult)

Solo salida. Puntuaciones de verosimilitud del registro para los tokens de respuesta y los tokens principales

urlContextMetadata object (UrlContextMetadata)

Solo salida. Son los metadatos relacionados con la herramienta de recuperación del contexto de URL.

index integer

Solo salida. Índice del candidato en la lista de candidatos de respuesta.

finishMessage string

Opcional. Solo salida. Detalla el motivo por el que el modelo dejó de generar tokens. Este campo solo se propaga cuando se establece finishReason.

Representación 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 el motivo por el que el modelo dejó de generar tokens.

Enums
FINISH_REASON_UNSPECIFIED Valor predeterminado Este valor no se usa.
STOP Punto de detención natural del modelo o secuencia de detención proporcionada.
MAX_TOKENS Se alcanzó la cantidad máxima de tokens especificada en la solicitud.
SAFETY El contenido de la respuesta candidata se marcó por motivos de seguridad.
RECITATION El contenido de la respuesta candidata se marcó por motivos de recitación.
LANGUAGE Se marcó el contenido de la respuesta candidata por usar un idioma no admitido.
OTHER Motivo desconocido.
BLOCKLIST Se detuvo la generación de tokens porque el contenido incluye términos prohibidos.
PROHIBITED_CONTENT Se detuvo la generación de tokens porque es posible que contenga contenido prohibido.
SPII La generación de tokens se detuvo porque es posible que el contenido contenga información de identificación personal sensible (IIPS).
MALFORMED_FUNCTION_CALL La llamada a la función que generó el modelo no es válida.
IMAGE_SAFETY Se detuvo la generación de tokens porque las imágenes generadas contienen incumplimientos de seguridad.
IMAGE_PROHIBITED_CONTENT Se detuvo la generación de imágenes porque las imágenes generadas tienen otro contenido prohibido.
IMAGE_OTHER Se detuvo la generación de imágenes debido a otro problema diverso.
NO_IMAGE Se esperaba que el modelo generara una imagen, pero no se generó ninguna.
IMAGE_RECITATION Se detuvo la generación de imágenes debido a la recitación.
UNEXPECTED_TOOL_CALL El modelo generó una llamada a una herramienta, pero no se habilitó ninguna herramienta en la solicitud.
TOO_MANY_TOOL_CALLS El modelo llamó a demasiadas herramientas de forma consecutiva, por lo que el sistema salió de la ejecución.
MISSING_THOUGHT_SIGNATURE Falta al menos una firma de pensamiento en la solicitud.
MALFORMED_RESPONSE Se completó debido a una respuesta con formato incorrecto.
ESCALATION La solicitud se filtró según una regla de derivación.

GroundingAttribution

Es la atribución de una fuente que contribuyó a una respuesta.

Campos
sourceId object (AttributionSourceId)

Solo salida. Es el identificador de la fuente que contribuye a esta atribución.

content object (Content)

Es el contenido de la fuente de fundamentación que compone esta atribución.

Representación JSON
{
  "sourceId": {
    object (AttributionSourceId)
  },
  "content": {
    object (Content)
  }
}

AttributionSourceId

Es el identificador de la fuente que contribuye a esta atribución.

Campos
source Union type
source puede ser una de las siguientes opciones:
groundingPassage object (GroundingPassageId)

Es el identificador de un pasaje intercalado.

semanticRetrieverChunk object (SemanticRetrieverChunk)

Es el identificador de un Chunk recuperado a través de Semantic Retriever.

Representación JSON
{

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

GroundingPassageId

Es el identificador de una parte dentro de un GroundingPassage.

Campos
passageId string

Solo salida. Es el ID del pasaje que coincide con el GroundingPassage.id del GenerateAnswerRequest.

partIndex integer

Solo salida. Índice de la parte dentro del GroundingPassage.content de GenerateAnswerRequest.

Representación JSON
{
  "passageId": string,
  "partIndex": integer
}

SemanticRetrieverChunk

Es el identificador de un Chunk recuperado a través de Semantic Retriever y especificado en GenerateAnswerRequest con SemanticRetrieverConfig.

Campos
source string

Solo salida. Nombre de la fuente que coincide con el SemanticRetrieverConfig.source de la solicitud. Ejemplo: corpora/123 o corpora/123/documents/abc

chunk string

Solo salida. Nombre del Chunk que contiene el texto atribuido. Ejemplo: corpora/123/documents/abc/chunks/xyz

Representación JSON
{
  "source": string,
  "chunk": string
}

GroundingMetadata

Son los metadatos que se muestran al cliente cuando se habilita la fundamentación.

Campos
groundingChunks[] object (GroundingChunk)

Lista de referencias de respaldo recuperadas de la fuente de fundamentación especificada. Cuando se transmite, solo contiene los fragmentos de fundamentación que no se incluyeron en los metadatos de fundamentación de las respuestas anteriores.

groundingSupports[] object (GroundingSupport)

Lista de compatibilidad con la fundamentación.

webSearchQueries[] string

Son las búsquedas web para la búsqueda web de seguimiento.

imageSearchQueries[] string

Son las consultas de búsqueda con imágenes que se usan para la fundamentación.

searchEntryPoint object (SearchEntryPoint)

Opcional. Entrada de la Búsqueda de Google para las búsquedas web de seguimiento.

retrievalMetadata object (RetrievalMetadata)

Son los metadatos relacionados con la recuperación en el flujo de fundamentación.

googleMapsWidgetContextToken string

Opcional. Es el nombre del recurso del token de contexto del widget de Google Maps que se puede usar con el widget de PlacesContextElement para renderizar datos contextuales. Solo se propaga en el caso de que se habilite la fundamentación con Google Maps.

Representación JSON
{
  "groundingChunks": [
    {
      object (GroundingChunk)
    }
  ],
  "groundingSupports": [
    {
      object (GroundingSupport)
    }
  ],
  "webSearchQueries": [
    string
  ],
  "imageSearchQueries": [
    string
  ],
  "searchEntryPoint": {
    object (SearchEntryPoint)
  },
  "retrievalMetadata": {
    object (RetrievalMetadata)
  },
  "googleMapsWidgetContextToken": string
}

SearchEntryPoint

Es el punto de entrada de la Búsqueda de Google.

Campos
renderedContent string

Opcional. Es un fragmento de contenido web que se puede incorporar en una página web o en un WebView de una app.

sdkBlob string (bytes format)

Opcional. Es un JSON codificado en Base64 que representa un array de tuplas <término de búsqueda, URL de búsqueda>.

String codificada en base64.

Representación JSON
{
  "renderedContent": string,
  "sdkBlob": string
}

GroundingChunk

Un GroundingChunk representa un segmento de evidencia de respaldo que fundamenta la respuesta del modelo. Puede ser un fragmento de la Web, un contexto recuperado de un archivo o información de Google Maps.

Campos
chunk_type Union type
Tipo de fragmento. chunk_type puede ser una de las siguientes opciones:
web object (Web)

Es un fragmento fundamentado de la Web.

image object (Image)

Opcional. Fragmento fundamentado de la búsqueda con imágenes.

retrievedContext object (RetrievedContext)

Opcional. Es un fragmento fundamentado del contexto recuperado por la herramienta de búsqueda de archivos.

maps object (Maps)

Opcional. Es el fragmento de fundamentación de Google Maps.

Representación JSON
{

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

Web

Fragmento de la Web.

Campos
uri string

Solo salida. Es la referencia de URI del fragmento.

title string

Solo salida. Es el título del fragmento.

Representación JSON
{
  "uri": string,
  "title": string
}

Imagen

Es un fragmento de la búsqueda con imágenes.

Campos
sourceUri string

Es el URI de la página web para la atribución.

imageUri string

Es la URL del recurso de imagen.

title string

Es el título de la página web de la que proviene la imagen.

domain string

Es el dominio raíz de la página web de la que proviene la imagen, p.ej., "example.com".

Representación JSON
{
  "sourceUri": string,
  "imageUri": string,
  "title": string,
  "domain": string
}

RetrievedContext

Fragmento del contexto recuperado por la herramienta de búsqueda de archivos.

Campos
customMetadata[] object (CustomMetadata)

Opcional. Son los metadatos proporcionados por el usuario sobre el contexto recuperado.

uri string

Opcional. Es la referencia URI del documento de recuperación semántica.

title string

Opcional. Es el título del documento.

text string

Opcional. Es el texto del fragmento.

fileSearchStore string

Opcional. Nombre del FileSearchStore que contiene el documento. Ejemplo: fileSearchStores/123

pageNumber integer

Opcional. Número de página del contexto recuperado, si corresponde.

mediaId string

Opcional. Es el nombre del recurso del blob de medios para los resultados de la búsqueda de archivos multimodal. Formato: fileSearchStores/{file_search_store_id}/media/{blobId}

Representación JSON
{
  "customMetadata": [
    {
      object (CustomMetadata)
    }
  ],
  "uri": string,
  "title": string,
  "text": string,
  "fileSearchStore": string,
  "pageNumber": integer,
  "mediaId": string
}

CustomMetadata

Son los metadatos proporcionados por el usuario sobre el GroundingFact.

Campos
key string

Es la clave de los metadatos.

value Union type
Es el valor de los metadatos. Puede ser una cadena, una lista de cadenas o un número. value puede ser una de las siguientes opciones:
stringValue string

Opcional. Es el valor de cadena de los metadatos.

stringListValue object (StringList)

Opcional. Es una lista de valores de cadena para los metadatos.

numericValue number

Opcional. Es el valor numérico de los metadatos. El rango esperado para este valor depende del key específico que se use.

Representación JSON
{
  "key": string,

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

StringList

Es una lista de valores de cadena.

Campos
values[] string

Son los valores de cadena de la lista.

Representación JSON
{
  "values": [
    string
  ]
}

Maps

Es un fragmento de fundamentación de Google Maps. Un fragmento de Maps corresponde a un solo lugar.

Campos
uri string

Es la referencia URI del lugar.

title string

Es el título del lugar.

text string

Es la descripción de texto de la respuesta del lugar.

placeId string

Es el ID del lugar, en formato places/{placeId}. Un usuario puede usar este ID para buscar ese lugar.

placeAnswerSources object (PlaceAnswerSources)

Son las fuentes que proporcionan respuestas sobre las características de un lugar determinado en Google Maps.

Representación JSON
{
  "uri": string,
  "title": string,
  "text": string,
  "placeId": string,
  "placeAnswerSources": {
    object (PlaceAnswerSources)
  }
}

PlaceAnswerSources

Es una colección de fuentes que proporcionan respuestas sobre las características de un lugar determinado en Google Maps. Cada mensaje de PlaceAnswerSources corresponde a un lugar específico en Google Maps. La herramienta de Google Maps usó estas fuentes para responder preguntas sobre las características del lugar (p. ej., "¿Bar Foo tiene Wi-Fi?" o "¿Foo Bar es accesible para sillas de ruedas?"). Por el momento, solo admitimos fragmentos de opiniones como fuentes.

Campos
reviewSnippets[] object (ReviewSnippet)

Son fragmentos de opiniones que se usan para generar respuestas sobre las características de un lugar determinado en Google Maps.

Representación JSON
{
  "reviewSnippets": [
    {
      object (ReviewSnippet)
    }
  ]
}

ReviewSnippet

Encapsula un fragmento de una opinión del usuario que responde una pregunta sobre las características de un lugar específico en Google Maps.

Campos
reviewId string

Es el ID del fragmento de opinión.

googleMapsUri string

Es un vínculo que corresponde a la opinión del usuario en Google Maps.

title string

Es el título de la opinión.

Representación JSON
{
  "reviewId": string,
  "googleMapsUri": string,
  "title": string
}

GroundingSupport

Compatibilidad con la fundamentación.

Campos
groundingChunkIndices[] integer

Opcional. Es una lista de índices (en "grounding_chunk" en response.candidate.grounding_metadata) que especifican las citas asociadas con la afirmación. Por ejemplo, [1,3,4] significa que grounding_chunk[1], grounding_chunk[3] y grounding_chunk[4] son el contenido recuperado que se atribuye a la afirmación. Si la respuesta se transmite, los groundingChunkIndices hacen referencia a los índices de todas las respuestas. Es responsabilidad del cliente acumular los fragmentos de fundamentación de todas las respuestas (manteniendo el mismo orden).

confidenceScores[] number

Opcional. Es la puntuación de confianza de las referencias de asistencia. El rango varía de 0 a 1. El 1 indica la mayor confianza. Esta lista debe tener el mismo tamaño que groundingChunkIndices.

renderedParts[] integer

Solo salida. Son los índices en el campo parts del contenido del candidato. Estos índices especifican qué partes renderizadas están asociadas con esta fuente de asistencia.

segment object (Segment)

Es el segmento del contenido al que pertenece esta asistencia.

Representación JSON
{
  "groundingChunkIndices": [
    integer
  ],
  "confidenceScores": [
    number
  ],
  "renderedParts": [
    integer
  ],
  "segment": {
    object (Segment)
  }
}

Segmentar

Es un segmento del contenido.

Campos
partIndex integer

Índice de un objeto Part dentro de su objeto Content principal.

startIndex integer

Índice de inicio en la parte determinada, medido en bytes. Es el desplazamiento desde el inicio de la parte, incluido, a partir de cero.

endIndex integer

Índice final en la parte determinada, medido en bytes. Es el desplazamiento desde el inicio de la parte, exclusivo, a partir de cero.

text string

Es el texto correspondiente al segmento de la respuesta.

Representación JSON
{
  "partIndex": integer,
  "startIndex": integer,
  "endIndex": integer,
  "text": string
}

RetrievalMetadata

Son los metadatos relacionados con la recuperación en el flujo de fundamentación.

Campos
googleSearchDynamicRetrievalScore number

Opcional. Es una puntuación que indica la probabilidad de que la información de la Búsqueda de Google pueda ayudar a responder la instrucción. La puntuación se encuentra en el rango [0, 1], donde 0 es la probabilidad más baja y 1 es la probabilidad más alta. Esta puntuación solo se completa cuando se habilitan la fundamentación de la Búsqueda de Google y la recuperación dinámica. Se comparará con el umbral para determinar si se debe activar la Búsqueda de Google.

Representación JSON
{
  "googleSearchDynamicRetrievalScore": number
}

LogprobsResult

Resultado de Logprobs

Campos
topCandidates[] object (TopCandidates)

La longitud es igual a la cantidad total de pasos de decodificación.

chosenCandidates[] object (Candidate)

La longitud es igual a la cantidad total de pasos de decodificación. Los candidatos elegidos pueden estar o no en topCandidates.

logProbabilitySum number

Es la suma de las probabilidades de registro de todos los tokens.

Representación JSON
{
  "topCandidates": [
    {
      object (TopCandidates)
    }
  ],
  "chosenCandidates": [
    {
      object (Candidate)
    }
  ],
  "logProbabilitySum": number
}

TopCandidates

Son los candidatos con las probabilidades de registro más altas en cada paso de decodificación.

Campos
candidates[] object (Candidate)

Se ordenan por probabilidad logarítmica en orden descendente.

Representación JSON
{
  "candidates": [
    {
      object (Candidate)
    }
  ]
}

Candidato

Es el candidato para el token y la puntuación de logprobs.

Campos
token string

Es el valor de cadena del token del candidato.

tokenId integer

Es el valor del ID del token del candidato.

logProbability number

Es la probabilidad de registro del candidato.

Representación JSON
{
  "token": string,
  "tokenId": integer,
  "logProbability": number
}

UrlContextMetadata

Son los metadatos relacionados con la herramienta de recuperación del contexto de URL.

Campos
urlMetadata[] object (UrlMetadata)

Es la lista del contexto de URL.

Representación JSON
{
  "urlMetadata": [
    {
      object (UrlMetadata)
    }
  ]
}

UrlMetadata

Es el contexto de la recuperación de una sola URL.

Campos
retrievedUrl string

Es la URL recuperada por la herramienta.

urlRetrievalStatus enum (UrlRetrievalStatus)

Es el estado de la recuperación de la URL.

Representación JSON
{
  "retrievedUrl": string,
  "urlRetrievalStatus": enum (UrlRetrievalStatus)
}

UrlRetrievalStatus

Es el estado de la recuperación de la URL.

Enums
URL_RETRIEVAL_STATUS_UNSPECIFIED Valor predeterminado Este valor no se usa.
URL_RETRIEVAL_STATUS_SUCCESS Se recuperó la URL correctamente.
URL_RETRIEVAL_STATUS_ERROR No se pudo recuperar la URL debido a un error.
URL_RETRIEVAL_STATUS_PAYWALL No se pudo recuperar la URL porque el contenido está detrás de un muro de pago.
URL_RETRIEVAL_STATUS_UNSAFE No se pudo recuperar la URL porque el contenido no es seguro.

CitationMetadata

Es una colección de atribuciones de fuentes para un fragmento de contenido.

Campos
citationSources[] object (CitationSource)

Son las citas de las fuentes para una respuesta específica.

Representación JSON
{
  "citationSources": [
    {
      object (CitationSource)
    }
  ]
}

CitationSource

Es una cita de una fuente para una parte de una respuesta específica.

Campos
startIndex integer

Opcional. Es el inicio del segmento de la respuesta que se atribuye a esta fuente.

El índice indica el inicio del segmento, medido en bytes.

endIndex integer

Opcional. Es el final del segmento atribuido, exclusivo.

uri string

Opcional. Es el URI que se atribuye como fuente de una parte del texto.

license string

Opcional. Es la licencia del proyecto de GitHub que se atribuye como fuente del segmento.

La información de la licencia es obligatoria para las citas de código.

Representación JSON
{
  "startIndex": integer,
  "endIndex": integer,
  "uri": string,
  "license": string
}

HarmCategory

Son las categorías de daño que se pueden detectar en las entradas del usuario y las respuestas del modelo.

Enums
HARM_CATEGORY_UNSPECIFIED Valor predeterminado Este valor no se usa.
HARM_CATEGORY_HATE_SPEECH Contenido que promueve la violencia o incita al odio contra personas o grupos en función de ciertos atributos
HARM_CATEGORY_DANGEROUS_CONTENT Contenido que promueve, facilita o permite actividades peligrosas
HARM_CATEGORY_HARASSMENT Contenido abusivo, amenazante o que tenga la intención de hostigar, atormentar o ridiculizar a otras personas
HARM_CATEGORY_SEXUALLY_EXPLICIT Contenido que incluya material sexual explícito
HARM_CATEGORY_CIVIC_INTEGRITY

Obsoleto: Ya no se admite el filtro de elecciones. La categoría de daño es la integridad cívica.

HARM_CATEGORY_IMAGE_HATE Imágenes que contienen incitación al odio o a la violencia
HARM_CATEGORY_IMAGE_DANGEROUS_CONTENT Imágenes que incluyen contenido peligroso
HARM_CATEGORY_IMAGE_HARASSMENT Imágenes que contienen hostigamiento
HARM_CATEGORY_IMAGE_SEXUALLY_EXPLICIT Imágenes que contienen contenido sexual explícito
HARM_CATEGORY_JAILBREAK Instrucciones diseñadas para eludir los filtros de seguridad

ModalityTokenCount

Representa la información del recuento de tokens para una sola modalidad.

Campos
modality enum (Modality)

Es la modalidad asociada a este recuento de tokens.

tokenCount integer

Cantidad de tokens.

Representación JSON
{
  "modality": enum (Modality),
  "tokenCount": integer
}

Modalidad

Modalidad de parte de contenido

Enums
MODALITY_UNSPECIFIED Modalidad sin especificar.
TEXT Texto sin formato
IMAGE Imagen.
VIDEO Video.
AUDIO Audio.
DOCUMENT Documento, p.ej., PDF.

SafetyRating

Es la calificación de seguridad de un contenido.

La clasificación de seguridad contiene la categoría de daño y el nivel de probabilidad de daño en esa categoría para un fragmento de contenido. El contenido se clasifica para la seguridad en varias categorías de daño, y aquí se incluye la probabilidad de la clasificación del daño.

Campos
category enum (HarmCategory)

Obligatorio. Es la categoría de esta calificación.

probability enum (HarmProbability)

Obligatorio. Es la probabilidad de daño de este contenido.

blocked boolean

¿Se bloqueó este contenido debido a esta clasificación?

Representación JSON
{
  "category": enum (HarmCategory),
  "probability": enum (HarmProbability),
  "blocked": boolean
}

HarmProbability

Es la probabilidad de que un contenido sea dañino.

El sistema de clasificación indica la probabilidad de que el contenido no sea seguro. Esto no indica la gravedad del daño que puede causar un contenido.

Enums
HARM_PROBABILITY_UNSPECIFIED No se especifica la probabilidad.
NEGLIGIBLE El contenido tiene una probabilidad insignificante de no ser seguro.
LOW El contenido tiene una probabilidad baja de no ser seguro.
MEDIUM El contenido tiene una probabilidad media de no ser seguro.
HIGH El contenido tiene una alta probabilidad de no ser seguro.

SafetySetting

Es el parámetro de configuración de seguridad que afecta el comportamiento de bloqueo de seguridad.

Si se pasa un parámetro de configuración de seguridad para una categoría, cambia la probabilidad permitida de que se bloquee el contenido.

Campos
category enum (HarmCategory)

Obligatorio. Es la categoría de este parámetro de configuración.

threshold enum (HarmBlockThreshold)

Obligatorio. Controla el umbral de probabilidad en el que se bloquea el daño.

Representación JSON
{
  "category": enum (HarmCategory),
  "threshold": enum (HarmBlockThreshold)
}

HarmBlockThreshold

Bloquear en un nivel de probabilidad de daño especificado y más allá

Enums
HARM_BLOCK_THRESHOLD_UNSPECIFIED No se especificó el umbral.
BLOCK_LOW_AND_ABOVE Se permitirá el contenido con NEGLIGIBLE.
BLOCK_MEDIUM_AND_ABOVE Se permitirá el contenido con niveles de negligencia NEGLIGIBLE y BAJO.
BLOCK_ONLY_HIGH Se permitirá el contenido con niveles de impacto NEGLIGIBLE, LOW y MEDIUM.
BLOCK_NONE Se permitirá todo el contenido.
OFF Desactiva el filtro de seguridad.

ServiceTier

Es el nivel de servicio de la interacción.

Enums
SERVICE_TIER_UNSPECIFIED Es el nivel de servicio predeterminado, que es estándar.
SERVICE_TIER_FLEX Es el nivel de servicio de Flex.
SERVICE_TIER_STANDARD Es el nivel de servicio estándar.
SERVICE_TIER_PRIORITY Es el nivel de servicio prioritario.

AllowedTools

Es la configuración de las herramientas permitidas.

Campos
mode enum (ToolChoiceType)

Es el modo de la elección de la herramienta.

tools[] string

Son los nombres de las herramientas permitidas.

Representación JSON
{
  "mode": enum (ToolChoiceType),
  "tools": [
    string
  ]
}

Anotación

Es la información de citas para el contenido generado por el modelo.

Campos
startIndex integer

Es el inicio del segmento de la respuesta que se atribuye a esta fuente.

El índice indica el inicio del segmento, medido en bytes.

endIndex integer

Es el final del segmento atribuido, exclusivo.

type Union type
Es el tipo de anotación. type puede ser una de las siguientes opciones:
urlCitation object (UrlCitation)

Es una anotación de cita de URL.

fileCitation object (FileCitation)

Es una anotación de cita de archivo.

placeCitation object (PlaceCitation)

Es una anotación de cita de lugar.

Representación JSON
{
  "startIndex": integer,
  "endIndex": integer,

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

UrlCitation

Es una anotación de cita de URL.

Campos
url string

Es la URL.

title string

Es el título de la URL.

Representación JSON
{
  "url": string,
  "title": string
}

FileCitation

Es una anotación de cita de archivo.

Campos
documentUri string

Es el URI del archivo.

fileName string

Es el nombre del archivo.

source string

Es la fuente atribuida a una parte del texto.

customMetadata object (Struct)

Son los metadatos proporcionados por el usuario sobre el contexto recuperado.

pageNumber integer

Número de página del documento citado, si corresponde

mediaId string

ID de medio en el caso de citas de imágenes, si corresponde.

Representación JSON
{
  "documentUri": string,
  "fileName": string,
  "source": string,
  "customMetadata": {
    object (Struct)
  },
  "pageNumber": integer,
  "mediaId": string
}

PlaceCitation

Es una anotación de cita de lugar.

Campos
placeId string

Es el ID del lugar, en formato places/{placeId}.

name string

Es el título del lugar.

url string

Es la referencia URI del lugar.

reviewSnippets[] object (ReviewSnippet)

Son fragmentos de opiniones que se usan para generar respuestas sobre las características de un lugar determinado en Google Maps.

Representación JSON
{
  "placeId": string,
  "name": string,
  "url": string,
  "reviewSnippets": [
    {
      object (ReviewSnippet)
    }
  ]
}

AspectRatio

Son las relaciones de aspecto compatibles para la salida de imágenes.

Enums
ASPECT_RATIO_UNSPECIFIED Valor predeterminado Este valor no se usa.
ASPECT_RATIO_ONE_BY_ONE Relación de aspecto de 1:1
ASPECT_RATIO_TWO_BY_THREE Relación de aspecto de 2:3
ASPECT_RATIO_THREE_BY_TWO Relación de aspecto de 3:2
ASPECT_RATIO_THREE_BY_FOUR Relación de aspecto de 3:4
ASPECT_RATIO_FOUR_BY_THREE Relación de aspecto de 4:3
ASPECT_RATIO_FOUR_BY_FIVE Relación de aspecto de 4:5
ASPECT_RATIO_FIVE_BY_FOUR Relación de aspecto de 5:4
ASPECT_RATIO_NINE_BY_SIXTEEN Relación de aspecto de 9:16
ASPECT_RATIO_SIXTEEN_BY_NINE Relación de aspecto de 16:9
ASPECT_RATIO_TWENTY_ONE_BY_NINE Relación de aspecto de 21:9
ASPECT_RATIO_ONE_BY_EIGHT Relación de aspecto de 1:8
ASPECT_RATIO_EIGHT_BY_ONE Relación de aspecto de 8:1.
ASPECT_RATIO_ONE_BY_FOUR Relación de aspecto de 1:4
ASPECT_RATIO_FOUR_BY_ONE Relación de aspecto de 4:1.

AudioResponseFormat

Es la configuración del formato de salida de audio.

Campos
mimeType enum (MimeType)

Tipo de MIME de la salida de audio.

delivery enum (Delivery)

Es el modo de entrega de la salida de audio.

sampleRate integer

Es la tasa de muestreo en Hz.

bitRate integer

Es la tasa de bits en bits por segundo (bps). Solo se aplica a los formatos comprimidos (MP3 y Opus).

Representación JSON
{
  "mimeType": enum (MimeType),
  "delivery": enum (Delivery),
  "sampleRate": integer,
  "bitRate": integer
}

CodeExecution

Este tipo no tiene campos.

Es una herramienta que el modelo puede usar para ejecutar código.

CodeExecutionCallStep

Paso de llamada de ejecución de código.

Campos
arguments object (CodeExecutionCallStepArguments)

Obligatorio. Son los argumentos que se pasarán a la ejecución del código.

Representación JSON
{
  "arguments": {
    object (CodeExecutionCallStepArguments)
  }
}

CodeExecutionCallStepArguments

Son los argumentos que se pasarán a la ejecución del código.

Campos
language enum (Language)

Lenguaje de programación de code.

code string

Es el código que se ejecutará.

Representación JSON
{
  "language": enum (Language),
  "code": string
}

CodeExecutionResultStep

Paso del resultado de la ejecución del código.

Campos
result string

Obligatorio. Es el resultado de la ejecución del código.

isError boolean

Indica si la ejecución del código generó un error.

Representación JSON
{
  "result": string,
  "isError": boolean
}

ComputerUse

Es una herramienta que el modelo puede usar para interactuar con la computadora.

Campos
environment enum (Environment)

Es el entorno en el que se opera.

excludedPredefinedFunctions[] string

Es la lista de funciones predefinidas que se excluyen de la llamada al modelo.

enablePromptInjectionDetection boolean

Indica si se debe habilitar la verificación de detección de inyección de instrucciones en la solicitud de uso de la computadora.

disabledSafetyPolicies[] enum (SafetyPolicy)

Opcional. Se inhabilitaron las políticas de seguridad para el uso de la computadora.

Representación JSON
{
  "environment": enum (Environment),
  "excludedPredefinedFunctions": [
    string
  ],
  "enablePromptInjectionDetection": boolean,
  "disabledSafetyPolicies": [
    enum (SafetyPolicy)
  ]
}

Contenido

Es el contenido de la respuesta.

Campos
type Union type
type puede ser una de las siguientes opciones:
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)
Representación 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

Es un bloque de contenido de texto.

Campos
text string

Obligatorio. Es el contenido de texto.

annotations[] object (Annotation)

Es la información de citas para el contenido generado por el modelo.

Representación JSON
{
  "text": string,
  "annotations": [
    {
      object (Annotation)
    }
  ]
}

ImageContent

Es un bloque de contenido de imagen.

Campos
mimeType enum (MimeType)

Es el tipo de MIME de la imagen.

resolution enum (MediaResolution)

Es la resolución del contenido multimedia.

data_or_uri Union type
Es el contenido de la imagen. data_or_uri puede ser una de las siguientes opciones:
data string (bytes format)

Es el contenido de la imagen.

String codificada en base64.

uri string

El URI de la imagen.

Representación JSON
{
  "mimeType": enum (MimeType),
  "resolution": enum (MediaResolution),

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

AudioContent

Es un bloque de contenido de audio.

Campos
mimeType enum (MimeType)

Tipo MIME del audio.

channels integer

Es la cantidad de canales de audio.

sampleRate integer

Es la frecuencia de muestreo del audio.

data_or_uri Union type
Es el contenido de audio. data_or_uri puede ser una de las siguientes opciones:
data string (bytes format)

Es el contenido de audio.

String codificada en base64.

uri string

Es el URI del audio.

Representación JSON
{
  "mimeType": enum (MimeType),
  "channels": integer,
  "sampleRate": integer,

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

DocumentContent

Es un bloque de contenido del documento.

Campos
mimeType enum (MimeType)

Es el tipo MIME del documento.

data_or_uri Union type
Es el contenido del documento. data_or_uri puede ser una de las siguientes opciones:
data string (bytes format)

Es el contenido del documento.

String codificada en base64.

uri string

Es el URI del documento.

Representación JSON
{
  "mimeType": enum (MimeType),

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

Contenido del video

Es un bloque de contenido de video.

Campos
mimeType enum (MimeType)

Es el tipo de MIME del video.

resolution enum (MediaResolution)

Es la resolución del contenido multimedia.

data_or_uri Union type
Es el contenido de video. data_or_uri puede ser una de las siguientes opciones:
data string (bytes format)

Es el contenido de video.

String codificada en base64.

uri string

Es el URI del video.

Representación JSON
{
  "mimeType": enum (MimeType),
  "resolution": enum (MediaResolution),

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

ThoughtContent

Es un bloque de contenido de pensamiento.

Campos
signature string (bytes format)

Es la firma que debe coincidir con la fuente del backend para formar parte de la generación.

String codificada en base64.

summary[] object (ThoughtSummaryContent)

Un resumen de la idea

Representación JSON
{
  "signature": string,
  "summary": [
    {
      object (ThoughtSummaryContent)
    }
  ]
}

ThoughtSummaryContent

Campos
type Union type
type puede ser una de las siguientes opciones:
text object (TextContent)
image object (ImageContent)
Representación JSON
{

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

ToolCallContent

Es el contenido de la llamada a la herramienta.

Campos
id string

Obligatorio. Es un ID único para esta llamada a herramienta específica.

signature string (bytes format)

Es un hash de firma para la validación de backend.

String codificada en base64.

type Union type
type puede ser una de las siguientes opciones:
functionCall object (FunctionCallContent)
codeExecutionCall object (CodeExecutionCallContent)
urlContextCall object (UrlContextCallContent)
mcpServerToolCall object (McpServerToolCallContent)
googleSearchCall object (GoogleSearchCallContent)
fileSearchCall object (FileSearchCallContent)
googleMapsCall object (GoogleMapsCallContent)
Representación 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

Es un bloque de contenido de llamada a herramienta de función.

Campos
name string

Obligatorio. Es el nombre de la herramienta a la que se llamará.

arguments object (Struct)

Obligatorio. Son los argumentos que se pasarán a la función.

Representación JSON
{
  "name": string,
  "arguments": {
    object (Struct)
  }
}

CodeExecutionCallContent

Contenido de ejecución de código

Campos
arguments object (CodeExecutionCallArguments)

Obligatorio. Son los argumentos que se pasarán a la ejecución del código.

Representación JSON
{
  "arguments": {
    object (CodeExecutionCallArguments)
  }
}

CodeExecutionCallArguments

Son los argumentos que se pasarán a la ejecución del código.

Campos
language enum (Language)

Lenguaje de programación de code.

code string

Es el código que se ejecutará.

Representación JSON
{
  "language": enum (Language),
  "code": string
}

UrlContextCallContent

Es el contenido del contexto de URL.

Campos
arguments object (UrlContextCallArguments)

Obligatorio. Son los argumentos que se pasarán al contexto de la URL.

Representación JSON
{
  "arguments": {
    object (UrlContextCallArguments)
  }
}

UrlContextCallArguments

Son los argumentos que se pasarán al contexto de la URL.

Campos
urls[] string

Son las URLs que se recuperarán.

Representación JSON
{
  "urls": [
    string
  ]
}

McpServerToolCallContent

Es el contenido de la llamada a la herramienta de MCPServer.

Campos
name string

Obligatorio. Es el nombre de la herramienta que se llamó.

serverName string

Obligatorio. Es el nombre del servidor de MCP que se usó.

arguments object (Struct)

Obligatorio. Objeto JSON de argumentos para la función.

Representación JSON
{
  "name": string,
  "serverName": string,
  "arguments": {
    object (Struct)
  }
}

GoogleSearchCallContent

Contenido de la Búsqueda de Google

Campos
arguments object (GoogleSearchCallArguments)

Obligatorio. Son los argumentos que se pasarán a la Búsqueda de Google.

searchType enum (SearchType)

Es el tipo de fundamentación de la búsqueda habilitada.

Representación JSON
{
  "arguments": {
    object (GoogleSearchCallArguments)
  },
  "searchType": enum (SearchType)
}

GoogleSearchCallArguments

Son los argumentos que se pasarán a la Búsqueda de Google.

Campos
queries[] string

Son las búsquedas web para la búsqueda web de seguimiento.

Representación JSON
{
  "queries": [
    string
  ]
}

FileSearchCallContent

Este tipo no tiene campos.

Contenido de la Búsqueda de archivos

GoogleMapsCallContent

Contenido de Google Maps.

Campos
arguments object (GoogleMapsCallArguments)

Son los argumentos que se pasarán a la herramienta de Google Maps.

Representación JSON
{
  "arguments": {
    object (GoogleMapsCallArguments)
  }
}

GoogleMapsCallArguments

Son los argumentos que se pasarán a la herramienta de Google Maps.

Campos
queries[] string

Consultas que se ejecutarán.

Representación JSON
{
  "queries": [
    string
  ]
}

ToolResultContent

Es el contenido del resultado de la herramienta.

Campos
callId string

Obligatorio. Es el ID que debe coincidir con el ID del bloque de llamada a la función.

signature string (bytes format)

Es un hash de firma para la validación de backend.

String codificada en base64.

type Union type
type puede ser una de las siguientes opciones:
functionResult object (FunctionResultContent)
codeExecutionResult object (CodeExecutionResultContent)
urlContextResult object (UrlContextResultContent)
googleSearchResult object (GoogleSearchResultContent)
mcpServerToolResult object (McpServerToolResultContent)
fileSearchResult object (FileSearchResultContent)
googleMapsResult object (GoogleMapsResultContent)
Representación 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

Es un bloque de contenido del resultado de la herramienta de función.

Campos
name string

Es el nombre de la herramienta a la que se llamó.

isError boolean

Indica si la llamada a la herramienta generó un error.

result Union type
Es el resultado de la llamada a la herramienta. result puede ser una de las siguientes opciones:
structResult object (Struct)
contentList object (FunctionResultSubcontentList)
stringResult string
Representación JSON
{
  "name": string,
  "isError": boolean,

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

FunctionResultSubcontentList

Campos
contents[] object (FunctionResultSubcontent)
Representación JSON
{
  "contents": [
    {
      object (FunctionResultSubcontent)
    }
  ]
}

FunctionResultSubcontent

Campos
type Union type
type puede ser una de las siguientes opciones:
text object (TextContent)
image object (ImageContent)
Representación JSON
{

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

CodeExecutionResultContent

Es el contenido del resultado de la ejecución del código.

Campos
result string

Obligatorio. Es el resultado de la ejecución del código.

isError boolean

Indica si la ejecución del código generó un error.

Representación JSON
{
  "result": string,
  "isError": boolean
}

UrlContextResultContent

Es el contenido del resultado del contexto de la URL.

Campos
result[] object (UrlContextResult)

Obligatorio. Son los resultados del contexto de la URL.

isError boolean

Indica si el contexto de la URL generó un error.

Representación JSON
{
  "result": [
    {
      object (UrlContextResult)
    }
  ],
  "isError": boolean
}

UrlContextResult

Es el resultado del contexto de la URL.

Campos
url string

Es la URL que se recuperó.

status enum (Status)

Es el estado de la recuperación de la URL.

Representación JSON
{
  "url": string,
  "status": enum (Status)
}

GoogleSearchResultContent

Es el contenido del resultado de la Búsqueda de Google.

Campos
result[] object (GoogleSearchResult)

Obligatorio. Son los resultados de la Búsqueda de Google.

isError boolean

Indica si la Búsqueda de Google generó un error.

Representación JSON
{
  "result": [
    {
      object (GoogleSearchResult)
    }
  ],
  "isError": boolean
}

GoogleSearchResult

Es el resultado de la Búsqueda de Google.

Campos
searchSuggestions string

Es un fragmento de contenido web que se puede incorporar en una página web o en un WebView de una app.

Representación JSON
{
  "searchSuggestions": string
}

McpServerToolResultContent

Es el contenido del resultado de la herramienta MCPServer.

Campos
name string

Es el nombre de la herramienta que se invoca para esta llamada a la herramienta específica.

serverName string

Es el nombre del servidor de MCP que se usó.

result Union type
Es el resultado de la llamada al servidor de MCP. Puede ser texto simple o contenido enriquecido. result puede ser una de las siguientes opciones:
structResult object (Struct)
contentList object (FunctionResultSubcontentList)
stringResult string
Representación JSON
{
  "name": string,
  "serverName": string,

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

FileSearchResultContent

Es el contenido del resultado de la búsqueda de archivos.

Campos
result[] object (FileSearchResult)

Opcional. Son los resultados de la búsqueda de archivos.

Representación JSON
{
  "result": [
    {
      object (FileSearchResult)
    }
  ]
}

FileSearchResult

Este tipo no tiene campos.

Es el resultado de la búsqueda de archivos.

GoogleMapsResultContent

Es el contenido del resultado de Google Maps.

Campos
result[] object (GoogleMapsResult)

Obligatorio. Son los resultados de Google Maps.

Representación JSON
{
  "result": [
    {
      object (GoogleMapsResult)
    }
  ]
}

GoogleMapsResult

Es el resultado de Google Maps.

Campos
places[] object (Places)

Son los lugares que se encontraron.

widgetContextToken string

Es el nombre del recurso del token de contexto del widget de Google Maps.

Representación JSON
{
  "places": [
    {
      object (Places)
    }
  ],
  "widgetContextToken": string
}

Lugares

Campos
placeId string

Es el ID del lugar, en formato places/{placeId}.

name string

Es el título del lugar.

url string

Es la referencia URI del lugar.

reviewSnippets[] object (ReviewSnippet)

Son fragmentos de opiniones que se usan para generar respuestas sobre las características de un lugar determinado en Google Maps.

Representación JSON
{
  "placeId": string,
  "name": string,
  "url": string,
  "reviewSnippets": [
    {
      object (ReviewSnippet)
    }
  ]
}

ContentList

Es una lista de contenido.

Campos
contents[] object (Content)

Es el contenido de la lista.

Representación JSON
{
  "contents": [
    {
      object (Content)
    }
  ]
}

CreateInteractionRequest

Son los parámetros de configuración para crear una interacción.

Campos
stream boolean

Solo entrada. Indica si la interacción se transmitirá.

store boolean

Solo entrada. Indica si se debe almacenar la respuesta y la solicitud para recuperarlas más adelante.

interaction object (Interaction)

Es la interacción que se creará.

background boolean

Solo entrada. Indica si se debe ejecutar la interacción del modelo en segundo plano.

Representación JSON
{
  "stream": boolean,
  "store": boolean,
  "interaction": {
    object (Interaction)
  },
  "background": boolean
}

Interacción

Es la respuesta de InteractionService.CreateInteraction.

Campos
id string

Obligatorio. Solo salida. Es un identificador único para la finalización de la interacción.

status enum (Status)

Obligatorio. Solo salida. Es el estado de la interacción.

created string

Obligatorio. Solo salida. Es la fecha y hora en que se creó la respuesta en formato ISO 8601 (AAAA-MM-DDThh:mm:ssZ).

updated string

Obligatorio. Solo salida. Fecha y hora en que se actualizó por última vez la respuesta en formato ISO 8601 (AAAA-MM-DDThh:mm:ssZ).

role
(deprecated)
string

Solo salida. Es el rol de la interacción.

outputs[]
(deprecated)
object (Content)

Solo salida. Son las respuestas del modelo.

systemInstruction string

Es la instrucción del sistema para la interacción.

tools[] object (Tool)

Es una lista de declaraciones de herramientas a las que el modelo puede llamar durante la interacción.

usage object (Usage)

Solo salida. Son estadísticas sobre el uso de tokens de la solicitud de interacción.

responseModalities[]
(deprecated)
enum (ResponseModality)

Son las modalidades solicitadas de la respuesta (TEXT, IMAGE, AUDIO).

responseMimeType
(deprecated)
string

Es el tipo de MIME de la respuesta. Este parámetro es obligatorio si se configura responseFormat.

previousInteractionId string

ID de la interacción anterior, si corresponde.

environmentId string

Solo salida. Es el ID del entorno de la interacción. Solo se propaga si la configuración del entorno se establece en la solicitud.

serviceTier enum (ServiceTier)

Es el nivel de servicio de la interacción.

webhookConfig object (WebhookConfig)

Opcional. Es la configuración del webhook para recibir notificaciones cuando se completa la interacción.

steps[] object (Step)

Obligatorio. Solo salida. Son los pasos que componen la interacción.

input Union type
Es la entrada para la interacción. input puede ser una de las siguientes opciones:
contentList
(deprecated)
object (ContentList)

Son las entradas de la interacción.

stringContent string

Es una entrada de cadena para la interacción que se procesará como una sola entrada de texto.

turnList
(deprecated)
object (TurnList)

Son los turnos de la interacción.

stepList object (StepList)

Solo entrada. Son los pasos de la interacción.

content object (Content)

Es el contenido de la interacción.

response_format_config Union type
response_format_config puede ser una de las siguientes opciones:
responseFormat
(deprecated)
object (Value)

Aplica que la respuesta generada sea un objeto JSON que cumpla con el esquema JSON especificado en este campo.

responseFormatList object (ResponseFormatList)
responseFormatSingleton object (ResponseFormat)
request_type Union type
Es el tipo de solicitud para la interacción. request_type puede ser una de las siguientes opciones:
modelInteraction object (ModelInteraction)

Es la interacción para generar la finalización con modelos.

agentInteraction object (AgentInteraction)

Es la interacción para generar la finalización con agentes.

environment Union type
Es la configuración del entorno para la interacción. environment puede ser una de las siguientes opciones:
envId string

Es el ID del entorno de la interacción. Puede ser "remoto" para el entorno predeterminado.

remoteEnvironment object (EnvironmentConfig)
localEnvironment object (LocalEnvironmentConfig)

El entorno del agente reside en la conexión del cliente: sus operaciones de entorno integradas (operaciones del sistema de archivos y comandos en ejecución) se ceden al cliente para que las ejecute, en lugar de ejecutarse en un sandbox administrado por el servidor. Este campo y remoteEnvironment son mutuamente excluyentes. (Independiente de cualquier herramienta de función declarada por el cliente, que siempre se ejecuta en el cliente independientemente de este campo).

Representación 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

Es una lista de turnos.

Campos
turns[] object (Turn)
Representación JSON
{
  "turns": [
    {
      object (Turn)
    }
  ]
}

Turn

Campos
role string

Es el originador de este turno. Debe ser el usuario para la entrada o el modelo para el resultado del modelo.

content Union type
content puede ser una de las siguientes opciones:
contentList object (ContentList)

Es el contenido del turno. Es un array de objetos Content.

contentString string

Es el contenido del turno. Una sola cadena.

Representación JSON
{
  "role": string,

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

StepList

Es una lista de pasos.

Campos
steps[] object (Step)

Son los pasos de la lista.

Representación JSON
{
  "steps": [
    {
      object (Step)
    }
  ]
}

Paso

Es un paso en la interacción.

Campos
type Union type
type puede ser una de las siguientes opciones:
thought object (ThoughtStep)
toolCall object (ToolCallStep)
toolResult object (ToolResultStep)
userInput object (UserInputStep)

NO USAR: Son solo para JSON de terceros

modelOutput object (ModelOutputStep)
text
(deprecated)
object (LegacyTextContent)
image
(deprecated)
object (LegacyImageContent)
audio
(deprecated)
object (LegacyAudioContent)
document
(deprecated)
object (LegacyDocumentContent)
video
(deprecated)
object (LegacyVideoContent)
Representación 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

Es un paso de pensamiento.

Campos
signature string (bytes format)

Es un hash de firma para la validación de backend.

String codificada en base64.

summary[] object (Content)

Un resumen de la idea

Representación JSON
{
  "signature": string,
  "summary": [
    {
      object (Content)
    }
  ]
}

ToolCallStep

Paso de llamada a herramienta.

Campos
id string

Obligatorio. Es un ID único para esta llamada a herramienta específica.

signature string (bytes format)

Es un hash de firma para la validación de backend.

String codificada en base64.

type Union type
type puede ser una de las siguientes opciones:
functionCall object (FunctionCallStep)
codeExecutionCall object (CodeExecutionCallStep)
urlContextCall object (UrlContextCallStep)
mcpServerToolCall object (McpServerToolCallStep)
googleSearchCall object (GoogleSearchCallStep)
fileSearchCall object (FileSearchCallStep)
googleMapsCall object (GoogleMapsCallStep)
retrievalCall object (RetrievalCallStep)
Representación 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

Es un paso de llamada a herramienta de función.

Campos
name string

Obligatorio. Es el nombre de la herramienta a la que se llamará.

arguments object (Struct)

Obligatorio. Son los argumentos que se pasarán a la función.

Representación JSON
{
  "name": string,
  "arguments": {
    object (Struct)
  }
}

UrlContextCallStep

Es el paso de llamada del contexto de URL.

Campos
arguments object (UrlContextCallStepArguments)

Obligatorio. Son los argumentos que se pasarán al contexto de la URL.

Representación JSON
{
  "arguments": {
    object (UrlContextCallStepArguments)
  }
}

UrlContextCallStepArguments

Son los argumentos que se pasarán al contexto de la URL.

Campos
urls[] string

Son las URLs que se recuperarán.

Representación JSON
{
  "urls": [
    string
  ]
}

McpServerToolCallStep

Paso de llamada a la herramienta de MCPServer.

Campos
name string

Obligatorio. Es el nombre de la herramienta que se llamó.

serverName string

Obligatorio. Es el nombre del servidor de MCP que se usó.

arguments object (Struct)

Obligatorio. Objeto JSON de argumentos para la función.

Representación JSON
{
  "name": string,
  "serverName": string,
  "arguments": {
    object (Struct)
  }
}

GoogleSearchCallStep

Es el paso de llamada de la Búsqueda de Google.

Campos
arguments object (GoogleSearchCallStepArguments)

Obligatorio. Son los argumentos que se pasarán a la Búsqueda de Google.

searchType enum (SearchType)

Es el tipo de fundamentación de la búsqueda habilitada.

Representación JSON
{
  "arguments": {
    object (GoogleSearchCallStepArguments)
  },
  "searchType": enum (SearchType)
}

GoogleSearchCallStepArguments

Son los argumentos que se pasarán a la Búsqueda de Google.

Campos
queries[] string

Son las búsquedas web para la búsqueda web de seguimiento.

Representación JSON
{
  "queries": [
    string
  ]
}

FileSearchCallStep

Este tipo no tiene campos.

Paso de llamada de búsqueda de archivos.

GoogleMapsCallStep

Es un paso de llamada de Google Maps.

Campos
arguments object (GoogleMapsCallStepArguments)

Son los argumentos que se pasarán a la herramienta de Google Maps.

Representación JSON
{
  "arguments": {
    object (GoogleMapsCallStepArguments)
  }
}

GoogleMapsCallStepArguments

Son los argumentos que se pasarán a la herramienta de Google Maps.

Campos
queries[] string

Consultas que se ejecutarán.

Representación JSON
{
  "queries": [
    string
  ]
}

ToolResultStep

Es el paso del resultado de la herramienta.

Campos
callId string

Obligatorio. Es el ID que debe coincidir con el ID del bloque de llamada a la función.

signature string (bytes format)

Es un hash de firma para la validación de backend.

String codificada en base64.

type Union type
type puede ser una de las siguientes opciones:
functionResult object (FunctionResultStep)
codeExecutionResult object (CodeExecutionResultStep)
urlContextResult object (UrlContextResultStep)
googleSearchResult object (GoogleSearchResultStep)
mcpServerToolResult object (McpServerToolResultStep)
fileSearchResult object (FileSearchResultStep)
googleMapsResult object (GoogleMapsResultStep)
retrievalResult object (RetrievalResultStep)
Representación 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

Es el resultado de una llamada a una herramienta de función.

Campos
name string

Es el nombre de la herramienta a la que se llamó.

isError boolean

Indica si la llamada a la herramienta generó un error.

result object (Value)

Obligatorio. Es el resultado de la llamada a la herramienta.

Representación JSON
{
  "name": string,
  "isError": boolean,
  "result": {
    object (Value)
  }
}

UrlContextResultStep

Es el paso del resultado del contexto de URL.

Campos
result[] object (UrlContextResultItem)

Obligatorio. Son los resultados del contexto de la URL.

isError boolean

Indica si el contexto de la URL generó un error.

Representación JSON
{
  "result": [
    {
      object (UrlContextResultItem)
    }
  ],
  "isError": boolean
}

UrlContextResultItem

Es el resultado del contexto de la URL.

Campos
url string

Es la URL que se recuperó.

status enum (Status)

Es el estado de la recuperación de la URL.

Representación JSON
{
  "url": string,
  "status": enum (Status)
}

GoogleSearchResultStep

Paso de resultado de la Búsqueda de Google.

Campos
result[] object (GoogleSearchResultItem)

Obligatorio. Son los resultados de la Búsqueda de Google.

isError boolean

Indica si la Búsqueda de Google generó un error.

Representación JSON
{
  "result": [
    {
      object (GoogleSearchResultItem)
    }
  ],
  "isError": boolean
}

GoogleSearchResultItem

Es el resultado de la Búsqueda de Google.

Campos
searchSuggestions string

Es un fragmento de contenido web que se puede incorporar en una página web o en un WebView de una app.

Representación JSON
{
  "searchSuggestions": string
}

McpServerToolResultStep

Es el paso del resultado de la herramienta MCPServer.

Campos
name string

Es el nombre de la herramienta que se invoca para esta llamada a la herramienta específica.

serverName string

Es el nombre del servidor de MCP que se usó.

result object (Value)

Obligatorio. Es el resultado de la llamada al servidor de MCP. Puede ser texto simple o contenido enriquecido.

Representación JSON
{
  "name": string,
  "serverName": string,
  "result": {
    object (Value)
  }
}

FileSearchResultStep

Este tipo no tiene campos.

Paso de resultado de la búsqueda de archivos.

GoogleMapsResultStep

Paso del resultado de Google Maps.

Campos
result[] object (GoogleMapsResultItem)
Representación JSON
{
  "result": [
    {
      object (GoogleMapsResultItem)
    }
  ]
}

GoogleMapsResultItem

Es el resultado de Google Maps.

Campos
places[] object (GoogleMapsResultPlaces)
widgetContextToken string
Representación JSON
{
  "places": [
    {
      object (GoogleMapsResultPlaces)
    }
  ],
  "widgetContextToken": string
}

GoogleMapsResultPlaces

Campos
placeId string
name string
url string
reviewSnippets[] object (ReviewSnippet)
Representación JSON
{
  "placeId": string,
  "name": string,
  "url": string,
  "reviewSnippets": [
    {
      object (ReviewSnippet)
    }
  ]
}

UserInputStep

Es la entrada que proporciona el usuario.

Campos
content Union type
content puede ser una de las siguientes opciones:
contentList object (ContentList)

Es el contenido del paso. Es un array de objetos Content.

contentString string

Es el contenido del paso. Una sola cadena.

Representación JSON
{

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

ModelOutputStep

Es el resultado que genera el modelo.

Campos
content[] object (Content)
Representación JSON
{
  "content": [
    {
      object (Content)
    }
  ]
}

ResponseFormatList

Campos
responseFormats[] object (ResponseFormat)
Representación JSON
{
  "responseFormats": [
    {
      object (ResponseFormat)
    }
  ]
}

ResponseFormat

Campos
type Union type
type puede ser una de las siguientes opciones:
audio object (AudioResponseFormat)
text object (TextResponseFormat)
image object (ImageResponseFormat)
video object (VideoResponseFormat)
structValue object (Struct)

Los valores de varios discriminadores ya están habilitados en GAOS.

Representación JSON
{

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

TextResponseFormat

Es la configuración del formato de salida de texto.

Campos
mimeType enum (MimeType)

Es el tipo de MIME del texto de salida.

schema object (Struct)

Es el esquema JSON al que debe ajustarse el resultado. Solo se aplica cuando mimeType es application/json.

Representación JSON
{
  "mimeType": enum (MimeType),
  "schema": {
    object (Struct)
  }
}

ImageResponseFormat

Es la configuración del formato de salida de la imagen.

Campos
mimeType enum (MimeType)

Tipo de MIME de la imagen de salida.

delivery enum (Delivery)

Es el modo de entrega de la imagen de salida.

aspectRatio enum (AspectRatio)

Es la relación de aspecto de la imagen de salida.

imageSize enum (ImageSize)

Es el tamaño de la imagen de salida.

Representación JSON
{
  "mimeType": enum (MimeType),
  "delivery": enum (Delivery),
  "aspectRatio": enum (AspectRatio),
  "imageSize": enum (ImageSize)
}

VideoResponseFormat

Es la configuración del formato de salida de video.

Campos
delivery enum (Delivery)

Es el modo de entrega de la salida de video.

aspectRatio enum (AspectRatio)

Es la relación de aspecto del video de salida.

duration string (Duration format)

Es la duración del video de salida.

Una duración en segundos con hasta nueve dígitos decimales, que terminan en “s”. Ejemplo: "3.5s".

Representación JSON
{
  "delivery": enum (Delivery),
  "aspectRatio": enum (AspectRatio),
  "duration": string
}

ModelInteraction

Es la interacción para generar la finalización con modelos.

Campos
model string

Es el nombre del Model que se usa para generar la finalización.

generationConfig object (GenerationConfig)

Solo entrada. Son los parámetros de configuración para la interacción del modelo.

Representación JSON
{
  "model": string,
  "generationConfig": {
    object (GenerationConfig)
  }
}

GenerationConfig

Son los parámetros de configuración para las interacciones del modelo.

Campos
temperature number

Controla la aleatoriedad del resultado.

topP number

Es la probabilidad acumulativa máxima de los tokens que se deben tener en cuenta durante el muestreo.

seed integer

Es la semilla que se usa en la decodificación para la reproducibilidad.

stopSequences[] string

Es una lista de secuencias de caracteres que detendrán la interacción de salida.

thinkingLevel enum (ThinkingLevel)

Es el nivel de tokens de pensamiento que debe generar el modelo.

thinkingSummaries enum (ThinkingSummaries)

Indica si se deben incluir resúmenes de pensamiento en la respuesta.

maxOutputTokens integer

Es la cantidad máxima de tokens que se incluirán en la respuesta.

speechConfig[] object (SpeechConfig)

Es la configuración para la interacción por voz.

imageConfig
(deprecated)
object (ImageConfig)

Es la configuración para la interacción con la imagen.

videoConfig object (VideoConfig)

Es la configuración para la generación de video.

tool_choice Union type
Es la configuración de la elección de la herramienta. tool_choice puede ser una de las siguientes opciones:
toolChoiceMode enum (ToolChoiceType)

Es el modo de la elección de la herramienta.

toolChoiceConfig object (ToolChoiceConfig)

Es la configuración de la elección de la herramienta.

Representación 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

Es la configuración de elección de herramientas que contiene las herramientas permitidas.

Campos
allowedTools object (AllowedTools)

Son las herramientas permitidas.

Representación JSON
{
  "allowedTools": {
    object (AllowedTools)
  }
}

SpeechConfig

Es la configuración de la interacción por voz.

Campos
voice string

La voz del orador.

language string

Es el idioma del discurso.

speaker string

Nombre del orador, que debe coincidir con el nombre del orador que se indica en la instrucción.

Representación JSON
{
  "voice": string,
  "language": string,
  "speaker": string
}

ImageConfig

Es la configuración de la interacción con la imagen.

Campos
aspectRatio string

Es la relación de aspecto de la imagen que se generará. Relaciones de aspecto admitidas: 1:1, 2:3, 3:2, 3:4, 4:3, 9:16, 16:9 y 21:9.

Si no se especifica, el modelo elegirá una relación de aspecto predeterminada en función de las imágenes de referencia proporcionadas.

imageSize string

Especifica el tamaño de las imágenes generadas. Los valores admitidos son 1K, 2K y 4K. Si no se especifica, el modelo usará el valor predeterminado 1K.

Representación JSON
{
  "aspectRatio": string,
  "imageSize": string
}

VideoConfig

Son las opciones de configuración para la generación de videos.

Campos
task enum (Task)

Es el modo de tarea opcional para la generación de video. Si no se especifica, el modelo determina automáticamente el modo adecuado según la instrucción de texto y los medios de entrada proporcionados.

Representación JSON
{
  "task": enum (Task)
}

EnvironmentConfig

Es la configuración para un entorno personalizado.

Campos
sources[] object (Source)
environmentId string

Opcional. Es el ID del entorno de la interacción. Si se especifica, la solicitud actualizará el entorno existente en lugar de crear uno nuevo.

network Union type
Es la configuración de red del entorno. network puede ser una de las siguientes opciones:
networkAllowlist object (EnvironmentNetworkEgressAllowlist)

Permite solo dominios específicos.

networkMode enum (NetworkMode)

Modo de salida de red.

Representación JSON
{
  "sources": [
    {
      object (Source)
    }
  ],
  "environmentId": string,

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

EnvironmentNetworkEgressAllowlist

Es la configuración de salida de red para el entorno.

Campos
allowlist[] object (EgressRule)

Es una lista de los dominios permitidos y sus configuraciones.

Representación JSON
{
  "allowlist": [
    {
      object (EgressRule)
    }
  ]
}

EgressRule

Es una regla de salida de red que controla a qué dominios externos se le permite llegar al entorno. Cada regla identifica un dominio de destino y, de manera opcional, un conjunto de encabezados HTTP para insertar en cada solicitud saliente coincidente.

Campos
domain string

Es el patrón de dominio con el que se debe coincidir para esta regla. Usa un nombre de host exacto (p.ej., github.com), un prefijo comodín (p.ej., *.googleapis.com) o * para que coincidan todos los dominios.

transform map (key: string, value: string)

Encabezados que se insertarán en las solicitudes que coincidan con esta regla. Clave: Nombre del encabezado (p.ej., "Authorization"). Valor: Valor del encabezado (p.ej., "Bearer your-token").

Un objeto que contiene una lista de pares "key": value. Ejemplo: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

Representación JSON
{
  "domain": string,
  "transform": {
    string: string,
    ...
  }
}

Fuente

Es una fuente que se debe montar en el entorno.

Campos
type enum (Type)
source string

Es la fuente del entorno. En el caso de GCS, esta es la ruta de acceso de GCS. En el caso de GitHub, es la ruta de acceso de GitHub.

target string

Es la ubicación en la que debe aparecer la fuente en el entorno.

content string

Es el contenido intercalado si type es INLINE.

encoding string

Es la codificación opcional para el contenido intercalado (p.ej., base64).

Representación JSON
{
  "type": enum (Type),
  "source": string,
  "target": string,
  "content": string,
  "encoding": string
}

LocalEnvironmentConfig

Este tipo no tiene campos.

Es la configuración de un entorno que se encuentra en la conexión del cliente en lugar de en un entorno de pruebas administrado por el servidor.

Cuando se configura (a través de Interaction.local_environment), el sistema de archivos y el shell del agente se tratan como si estuvieran en el cliente: las operaciones integradas del entorno del agente (p.ej., leer, enumerar o editar archivos, y ejecutar comandos) se suspenden en el servidor y se devuelven al cliente para que las ejecute, y sus resultados se devuelven en un turno posterior. Esto se excluye mutuamente con un EnvironmentConfig administrado por el servidor (remoteEnvironment), ya que el entorno está en el cliente o en un sandbox del servidor, nunca en ambos.

Esto solo rige el entorno integrado del agente. Las herramientas de función declaradas por el cliente siempre se ejecutan en el cliente, independientemente de este campo.

Herramienta

Es una herramienta que puede usar el modelo.

Campos
type Union type
Es la herramienta que se usará. type puede ser una de las siguientes opciones:
function object (Function)

Es una función que puede usar el modelo.

codeExecution object (CodeExecution)

Es una herramienta que el modelo puede usar para ejecutar código.

urlContext object (UrlContext)

Es una herramienta que el modelo puede usar para recuperar el contexto de la URL.

computerUse object (ComputerUse)

Herramienta para ayudar al modelo a interactuar directamente con la computadora.

mcpServer object (McpServer)

Un MCPServer es un servidor al que puede llamar el modelo para realizar acciones.

googleMaps object (GoogleMaps)

Es una herramienta que el modelo puede usar para buscar en Google Maps.

retrieval object (Retrieval)

Es una herramienta que el modelo puede usar para recuperar archivos.

Representación 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
}

Función

Es una herramienta que puede usar el modelo.

Campos
name string

Es el nombre de la función.

description string

Es una descripción de la función.

parameters object (Value)

Es el esquema JSON de los parámetros de la función.

Representación JSON
{
  "name": string,
  "description": string,
  "parameters": {
    object (Value)
  }
}

UrlContext

Este tipo no tiene campos.

Es una herramienta que el modelo puede usar para recuperar el contexto de la URL.

McpServer

Un MCPServer es un servidor al que puede llamar el modelo para realizar acciones.

Campos
name string

Es el nombre del servidor de MCPServer.

url string

Es la URL completa del extremo de MCPServer. Ejemplo: "https://api.example.com/mcp"

headers map (key: string, value: string)

Opcional: Campos para encabezados de autenticación, tiempos de espera, etcétera, si es necesario.

Un objeto que contiene una lista de pares "key": value. Ejemplo: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

allowedTools[] object (AllowedTools)

Son las herramientas permitidas.

Representación JSON
{
  "name": string,
  "url": string,
  "headers": {
    string: string,
    ...
  },
  "allowedTools": [
    {
      object (AllowedTools)
    }
  ]
}

GoogleSearch

Es una herramienta que el modelo puede usar para buscar en Google.

Campos
searchTypes[] enum (SearchType)

Son los tipos de fundamentación de la búsqueda que se habilitarán.

Representación JSON
{
  "searchTypes": [
    enum (SearchType)
  ]
}

FileSearch

Es una herramienta que el modelo puede usar para buscar archivos.

Campos
fileSearchStoreNames[] string

Nombres de las tiendas de búsqueda de archivos.

topK integer

Es la cantidad de fragmentos de recuperación semántica que se recuperarán.

metadataFilter string

Es un filtro de metadatos que se aplica a los documentos y fragmentos recuperados de forma semántica.

Representación JSON
{
  "fileSearchStoreNames": [
    string
  ],
  "topK": integer,
  "metadataFilter": string
}

GoogleMaps

Es una herramienta que el modelo puede usar para llamar a Google Maps.

Campos
enableWidget boolean

Indica si se debe devolver un token de contexto del widget en el resultado de la llamada a la herramienta de la respuesta.

latitude number

Es la latitud de la ubicación del usuario.

longitude number

Es la longitud de la ubicación del usuario.

Representación JSON
{
  "enableWidget": boolean,
  "latitude": number,
  "longitude": number
}

Uso

Son estadísticas sobre el uso de tokens de la solicitud de interacción.

Campos
totalInputTokens integer

Cantidad de tokens en la instrucción (contexto).

inputTokensByModality[] object (ModalityTokens)

Es un desglose del uso de tokens de entrada por modalidad.

totalCachedTokens integer

Cantidad de tokens en la parte almacenada en caché de la instrucción (el contenido almacenado en caché).

cachedTokensByModality[] object (ModalityTokens)

Es un desglose del uso de tokens almacenados en caché por modalidad.

totalOutputTokens integer

Es la cantidad total de tokens en todas las respuestas generadas.

outputTokensByModality[] object (ModalityTokens)

Es un desglose del uso de tokens de salida por modalidad.

totalToolUseTokens integer

Cantidad de tokens presentes en las instrucciones de uso de herramientas.

toolUseTokensByModality[] object (ModalityTokens)

Es un desglose del uso de tokens de uso de herramientas por modalidad.

totalThoughtTokens integer

Es la cantidad de tokens de pensamientos para los modelos de pensamiento.

totalTokens integer

Es el recuento total de tokens para la solicitud de interacción (instrucción + respuestas + otros tokens internos).

groundingToolCount[] object (GroundingToolCount)

Es el recuento de herramientas de fundamentación.

Representación 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

Es el recuento de tokens para una sola modalidad de respuesta.

Campos
modality enum (ResponseModality)

Es la modalidad asociada con el recuento de tokens.

tokens integer

Cantidad de tokens para la modalidad.

Representación JSON
{
  "modality": enum (ResponseModality),
  "tokens": integer
}

GroundingToolCount

Es la cantidad de herramientas de fundamentación.

Campos
type enum (Type)

Es el tipo de herramienta de fundamentación asociada con el recuento.

count integer

Es la cantidad de herramientas de fundamentación.

Representación JSON
{
  "type": enum (Type),
  "count": integer
}

WebhookConfig

Es el mensaje para configurar eventos de webhook para una solicitud.

Campos
uris[] string

Opcional. Si se configuran, estos URIs de webhook se usarán para los eventos de webhook en lugar de los webhooks registrados.

userMetadata object (Struct format)

Opcional. Son los metadatos del usuario que se devolverán en cada emisión de eventos a los webhooks.

Representación JSON
{
  "uris": [
    string
  ],
  "userMetadata": {
    object
  }
}

SafetySetting

Es un parámetro de configuración de seguridad que afecta el comportamiento de bloqueo de seguridad.

Un [SafetySetting][google.cloud.aiplatform.master.SafetySetting] consta de una [categoría][google.cloud.aiplatform.master.SafetySetting.category] de daño y un [umbral][google.cloud.aiplatform.master.SafetySetting.threshold] para esa categoría.

Campos
type enum (HarmCategory)

Obligatorio. Es el tipo de categoría de daño que se bloqueará.

threshold enum (HarmBlockThreshold)

Obligatorio. Es el umbral para bloquear contenido. Si la probabilidad de daño supera este umbral, se bloqueará el contenido.

method enum (HarmBlockMethod)

Opcional. Es el método para bloquear contenido. Si no se especifica, el comportamiento predeterminado es usar la puntuación de probabilidad.

Representación JSON
{
  "type": enum (HarmCategory),
  "threshold": enum (HarmBlockThreshold),
  "method": enum (HarmBlockMethod)
}

Entrega

Es el modo de entrega de la salida de audio.

Enums
DELIVERY_UNSPECIFIED Valor predeterminado Este valor no se usa.
INLINE Los datos de audio se devuelven de forma intercalada en la respuesta.
URI Los datos de audio se devuelven como un URI.

Entorno

Representa el entorno en el que se opera, como un navegador web.

Enums
ENVIRONMENT_UNSPECIFIED El valor predeterminado es el navegador.
BROWSER Funciona en un navegador web.
MOBILE Funciona en un entorno móvil.
DESKTOP Funciona en un entorno de escritorio.

HarmBlockMethod

Es el método para bloquear contenido.

Enums
HARM_BLOCK_METHOD_UNSPECIFIED El método de bloqueo de daño no se especifica.
SEVERITY El método de bloqueo de daño usa puntuaciones de probabilidad y gravedad.
PROBABILITY El método de bloqueo de daño usa la puntuación de probabilidad.

HarmBlockThreshold

Son los umbrales para bloquear contenido según la probabilidad de daño.

Enums
HARM_BLOCK_THRESHOLD_UNSPECIFIED No se especifica el umbral de bloqueo de daño.
BLOCK_LOW_AND_ABOVE Bloquear el contenido con una probabilidad de daño baja o superior
BLOCK_MEDIUM_AND_ABOVE Bloquear el contenido con una probabilidad de daño media o alta
BLOCK_ONLY_HIGH Bloquear el contenido con una alta probabilidad de daño
BLOCK_NONE No bloquear ningún contenido, independientemente de la probabilidad de que sea dañino.
OFF Desactivar por completo el filtro de seguridad

ImageSize

Son los tamaños de imagen admitidos para la salida de imágenes.

Enums
IMAGE_SIZE_UNSPECIFIED Valor predeterminado Este valor no se usa.
IMAGE_SIZE_FIVE_TWELVE Tamaño de la imagen de 512 px
IMAGE_SIZE_ONE_K Tamaño de la imagen de 1K
IMAGE_SIZE_TWO_K Tamaño de la imagen 2K.
IMAGE_SIZE_FOUR_K Tamaño de la imagen en 4K

Idioma

Lenguajes de programación admitidos para el código generado.

Enums
LANGUAGE_UNSPECIFIED Idioma no especificado. No se debe usar este valor.
PYTHON Python >= 3.10, con numpy y simpy disponibles.

MediaResolution

Resolución de los medios de entrada (imágenes o video).

Enums
MEDIA_RESOLUTION_UNSPECIFIED Valor predeterminado Este valor no se usa.
LOW Baja resolución
MEDIUM Resolución media.
HIGH Alta resolución
ULTRA_HIGH Ultra alta resolución.

MimeType

Enums
TYPE_UNSPECIFIED
TYPE_WAV Formato de audio WAV
TYPE_MP3 Formato de audio MP3
TYPE_AIFF Formato de audio AIFF
TYPE_AAC Formato de audio AAC
TYPE_OGG Formato de audio OGG
TYPE_FLAC Formato de audio FLAC
TYPE_MPEG Formato de audio MPEG
TYPE_M4A Formato de audio M4A
TYPE_L16 Formato de audio L16
TYPE_OPUS Formato de audio OPUS
TYPE_ALAW Formato de audio ALAW
TYPE_MULAW Formato de audio MULAW

Modo

Define la profundidad y la minuciosidad de la sesión de búsqueda.

Enums
MODE_UNSPECIFIED Valor predeterminado Este valor no se usa.
MODE_SCAN Es un análisis rápido que usa solo el clasificador inicial.
MODE_VERIFY Realiza la clasificación y, luego, la investigación detallada.

NetworkMode

Modo de salida de red para configuraciones que no están en la lista de entidades permitidas.

Enums
NETWORK_MODE_UNSPECIFIED Valor predeterminado. No se utiliza.
DISABLED Se bloquea toda la salida de red.

ResponseModality

Es la modalidad de la respuesta.

Enums
RESPONSE_MODALITY_UNSPECIFIED Valor predeterminado Este valor no se usa.
TEXT Indica que el modelo debe devolver texto.
IMAGE Indica que el modelo debe devolver imágenes.
AUDIO Indica que el modelo debe devolver audio.
VIDEO Indica que el modelo debe devolver videos.
DOCUMENT Indica que el modelo debe devolver documentos.

ReviewSnippet

Encapsula un fragmento de una opinión del usuario que responde una pregunta sobre las características de un lugar específico en Google Maps.

Campos
title string

Es el título de la opinión.

url string

Es un vínculo que corresponde a la opinión del usuario en Google Maps.

reviewId string

Es el ID del fragmento de opinión.

Representación JSON
{
  "title": string,
  "url": string,
  "reviewId": string
}

SafetyPolicy

Enums
SAFETY_POLICY_UNSPECIFIED Política de seguridad sin especificar.
FINANCIAL_TRANSACTIONS Política de seguridad para transacciones financieras.
SENSITIVE_DATA_MODIFICATION Política de seguridad para la modificación de datos sensibles.
COMMUNICATION_TOOL Política de seguridad para herramientas de comunicación (p. ej., Gmail, Chat y Meet)
ACCOUNT_CREATION Política de seguridad para la creación de cuentas.
DATA_MODIFICATION Es la política de seguridad para la modificación de datos.
LEGAL_TERMS_AND_AGREEMENTS Política de seguridad para acuerdos y condiciones legales

Esquema

El objeto Schema permite definir los tipos de datos de entrada y salida. Estos tipos pueden ser objetos, pero también primitivos y arrays. Representa un subconjunto selecto de un objeto de esquema de OpenAPI 3.0.

Campos
type enum (Type)

Obligatorio. Tipo de datos.

format string

Opcional. El formato de los datos. Se permite cualquier valor, pero la mayoría no activan ninguna funcionalidad especial.

title string

Opcional. Es el título del esquema.

description string

Opcional. Es una breve descripción del parámetro. Podría contener ejemplos de uso. La descripción del parámetro se puede formatear como Markdown.

nullable boolean

Opcional. Indica si el valor puede ser nulo.

enum[] string

Opcional. Valores posibles del elemento de Type.STRING con formato de enumeración. Por ejemplo, podemos definir una dirección de enumeración de la siguiente forma : {type:STRING, format:enum, enum:["EAST", NORTH", "SOUTH", "WEST"]}

maxItems string (int64 format)

Opcional. Es la cantidad máxima de elementos para Type.ARRAY.

minItems string (int64 format)

Opcional. Es la cantidad mínima de elementos para Type.ARRAY.

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

Opcional. Son las propiedades de Type.OBJECT.

Un objeto que contiene una lista de pares "key": value. Ejemplo: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

required[] string

Opcional. Son las propiedades obligatorias de Type.OBJECT.

minProperties string (int64 format)

Opcional. Es la cantidad mínima de propiedades para Type.OBJECT.

maxProperties string (int64 format)

Opcional. Es la cantidad máxima de propiedades para Type.OBJECT.

minLength string (int64 format)

Opcional. CAMPOS DEL ESQUEMA PARA EL TIPO STRING Longitud mínima del Type.STRING

maxLength string (int64 format)

Opcional. Longitud máxima de Type.STRING

pattern string

Opcional. Es el patrón del Type.STRING para restringir una cadena a una expresión regular.

example value (Value format)

Opcional. Ejemplo del objeto. Solo se completará cuando el objeto sea la raíz.

anyOf[] object (Schema)

Opcional. El valor se debe validar en relación con cualquiera de los subesquemas (uno o más) de la lista.

propertyOrdering[] string

Opcional. Es el orden de las propiedades. No es un campo estándar en la especificación de OpenAPI. Se usa para determinar el orden de las propiedades en la respuesta.

default value (Value format)

Opcional. Es el valor predeterminado del campo. Según el esquema en JSON, este campo está destinado a los generadores de documentación y no afecta la validación. Por lo tanto, se incluye aquí y se ignora para que los desarrolladores que envían esquemas con un campo default no reciban errores de campo desconocido.

items object (Schema)

Opcional. Esquema de los elementos de Type.ARRAY.

minimum number

Opcional. CAMPOS DEL ESQUEMA PARA LOS TIPOS INTEGER Y NUMBER: Valor mínimo de Type.INTEGER y Type.NUMBER

maximum number

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

Representación 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

El tipo contiene la lista de tipos de datos de OpenAPI según se define en https://spec.openapis.org/oas/v3.0.3#data-types.

Enums
TYPE_UNSPECIFIED No se especificó, no se debe usar.
STRING Tipo de cadena.
NUMBER Es el tipo de número.
INTEGER Es de tipo entero.
BOOLEAN Tipo booleano.
ARRAY Es el tipo de array.
OBJECT Tipo de objeto.
NULL Es un tipo nulo.

Tipo de Búsqueda

Son los tipos de fundamentación de la búsqueda que se habilitarán.

Enums
SEARCH_TYPE_UNSPECIFIED Tipo de búsqueda sin especificar. No se debe usar este valor.

Struct

Struct representa un valor de datos estructurados, que consta de campos que se asignan a valores con escritura dinámica.

Campos
fields[] object (Field)

Campos con escritura dinámica. Se muestra una lista en lugar de un mapa porque los LLM son sensibles al orden y queremos darles a los usuarios control total.

Representación JSON
{
  "fields": [
    {
      object (Field)
    }
  ]
}

Campo

Representa un solo campo en un struct.

Campos
name string
value object (Value)
Representación JSON
{
  "name": string,
  "value": {
    object (Value)
  }
}

Tarea

Tareas de generación de videos compatibles

Enums
TASK_UNSPECIFIED Tarea no especificada. La tarea se infiere a partir de la instrucción y el contenido multimedia de entrada.
TEXT_TO_VIDEO Genera videos solo a partir de instrucciones de texto.
IMAGE_TO_VIDEO Genera videos a partir de una o dos imágenes de origen. La primera imagen define el fotograma inicial y la segunda imagen opcional define el fotograma final.
REFERENCE_TO_VIDEO Genera videos a partir de contenido multimedia de referencia (como imágenes, audio o video).
EDIT Modifica un video de entrada existente.

ThinkingLevel

Es el nivel de tokens de pensamiento que debe generar el modelo.

Enums
THINKING_LEVEL_UNSPECIFIED Valor predeterminado Este valor no se usa.
THINKING_LEVEL_MINIMAL Poco o nada de pensamiento.
THINKING_LEVEL_LOW Nivel de razonamiento bajo.
THINKING_LEVEL_MEDIUM Nivel de razonamiento medio.
THINKING_LEVEL_HIGH Nivel de razonamiento alto.

ThinkingSummaries

Indica si se deben incluir resúmenes de pensamiento en la respuesta.

Enums
THINKING_SUMMARIES_UNSPECIFIED Valor predeterminado Este valor no se usa.
THINKING_SUMMARIES_AUTO Resúmenes de razonamiento automáticos
THINKING_SUMMARIES_NONE No hay resúmenes de razonamiento.

Herramienta

Son los detalles de la herramienta que el modelo puede usar para generar una respuesta.

Una Tool es un fragmento de código que permite que el sistema interactúe con sistemas externos para realizar una acción, o un conjunto de acciones, fuera del conocimiento y del alcance del modelo.

ID siguiente: 16

Campos
functionDeclarations[] object (FunctionDeclaration)

Opcional. Es una lista de FunctionDeclarations disponibles para el modelo que se pueden usar para las llamadas a funciones.

El modelo o el sistema no ejecutan la función. En su lugar, la función definida se puede devolver como un FunctionCall con argumentos para el cliente para su ejecución. El modelo puede decidir llamar a un subconjunto de estas funciones completando FunctionCall en la respuesta. El siguiente turno de conversación puede contener un FunctionResponse con el Content.role contexto de generación "función" para el siguiente turno del modelo.

googleSearchRetrieval object (GoogleSearchRetrieval)

Opcional. Herramienta de recuperación que funciona con la Búsqueda de Google.

codeExecution object (CodeExecution)

Opcional. Permite que el modelo ejecute código como parte de la generación.

computerUse object (ComputerUse)

Opcional. Herramienta para ayudar al modelo a interactuar directamente con la computadora. Si está habilitada, completa automáticamente las declaraciones de funciones específicas para el uso de la computadora.

urlContext object (UrlContext)

Opcional. Es una herramienta que admite la recuperación del contexto de URL.

mcpServers[] object (McpServer)

Opcional. Servidores de MCP a los que se conectará.

googleMaps object (GoogleMaps)

Opcional. Es una herramienta que permite fundamentar la respuesta del modelo con contexto geoespacial relacionado con la búsqueda del usuario.

Representación 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

Representación estructurada de una declaración de función según lo definido por la especificación de OpenAPI 3.03. En esta declaración, se incluyen el nombre y los parámetros de la función. Esta FunctionDeclaration es una representación de un bloque de código que el modelo puede usar como Tool y que el cliente puede ejecutar.

Campos
name string

Obligatorio. Es el nombre de la función. Debe tener caracteres de la A a la Z (mayúsculas o minúsculas), o números del 0 al 9, o contener guiones bajos, dos puntos, puntos y guiones, con una longitud máxima de 128.

description string

Obligatorio. Es una breve descripción de la función.

behavior enum (Behavior)

Opcional. Especifica el comportamiento de la función. Actualmente, solo se admite con el método BidiGenerateContent.

parameters object (Schema)

Opcional. Describe los parámetros de esta función. Refleja la clave de cadena del objeto Parameter de la API abierta 3.03: el nombre del parámetro. Los nombres de los parámetros distinguen mayúsculas de minúsculas. Valor del esquema: Es el esquema que define el tipo que se usa para el parámetro.

parametersJsonSchema value (Value format)

Opcional. Describe los parámetros de la función en formato de esquema JSON. El esquema debe describir un objeto en el que las propiedades sean los parámetros de la función. Por ejemplo:

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

Este campo es mutuamente exclusivo con parameters.

response object (Schema)

Opcional. Describe el resultado de esta función en formato de esquema JSON. Refleja el objeto de respuesta de la API abierta 3.03. El esquema define el tipo que se usa para el valor de respuesta de la función.

responseJsonSchema value (Value format)

Opcional. Describe el resultado de esta función en formato de esquema JSON. El valor especificado por el esquema es el valor de respuesta de la función.

Este campo es mutuamente exclusivo con response.

Representación JSON
{
  "name": string,
  "description": string,
  "behavior": enum (Behavior),
  "parameters": {
    object (Schema)
  },
  "parametersJsonSchema": value,
  "response": {
    object (Schema)
  },
  "responseJsonSchema": value
}

Comportamiento

Define el comportamiento de la función. La configuración predeterminada es BLOCKING.

Enums
UNSPECIFIED Este valor no se usa.
BLOCKING Si se configura, el sistema esperará a recibir la respuesta de la función antes de continuar la conversación.
NON_BLOCKING Si se configura, el sistema no esperará a recibir la respuesta de la función. En cambio, intentará controlar las respuestas de funciones a medida que estén disponibles y, al mismo tiempo, mantendrá la conversación entre el usuario y el modelo.

GoogleSearchRetrieval

Herramienta para recuperar datos web públicos para la fundamentación, potenciada por Google.

Campos
dynamicRetrievalConfig object (DynamicRetrievalConfig)

Especifica la configuración de recuperación dinámica para la fuente determinada.

Representación JSON
{
  "dynamicRetrievalConfig": {
    object (DynamicRetrievalConfig)
  }
}

DynamicRetrievalConfig

Describe las opciones para personalizar la recuperación dinámica.

Campos
mode enum (Mode)

Es el modo del predictor que se usará en la recuperación dinámica.

dynamicThreshold number

Es el umbral que se usará en la recuperación dinámica. Si no se establece, se usa un valor predeterminado del sistema.

Representación JSON
{
  "mode": enum (Mode),
  "dynamicThreshold": number
}

Modo

Es el modo del predictor que se usará en la recuperación dinámica.

Enums
MODE_UNSPECIFIED Siempre activa la recuperación.
MODE_DYNAMIC Ejecuta la recuperación solo cuando el sistema decida que es necesaria.

CodeExecution

Este tipo no tiene campos.

Herramienta que ejecuta el código generado por el modelo y devuelve automáticamente el resultado al modelo.

Consulta también ExecutableCode y CodeExecutionResult, que solo se generan cuando se usa esta herramienta.

GoogleSearch

Es el tipo de herramienta de GoogleSearch. Es una herramienta para admitir la Búsqueda de Google en el modelo. Con la tecnología de Google

Campos
timeRangeFilter object (Interval)

Opcional. Filtrar los resultados de la búsqueda para un período específico Si los clientes establecen una hora de inicio, también deben establecer una hora de finalización (y viceversa).

searchTypes object (SearchTypes)

Opcional. Es el conjunto de tipos de búsqueda que se habilitarán. Si no se configura, la búsqueda web se habilita de forma predeterminada.

Representación JSON
{
  "timeRangeFilter": {
    object (Interval)
  },
  "searchTypes": {
    object (SearchTypes)
  }
}

Intervalo

Representa un intervalo de tiempo, codificado como una marca de tiempo de inicio (inclusiva) y una marca de tiempo de finalización (exclusiva).

El inicio debe ser menor o igual que el final. Cuando el inicio es igual al final, el intervalo está vacío (no coincide con ninguna hora). Cuando no se especifican el inicio ni el final, el intervalo coincide con cualquier hora.

Campos
startTime string (Timestamp format)

Opcional. Es el inicio inclusivo del intervalo.

Si se especifica, la marca de tiempo que coincida con este intervalo deberá ser igual o posterior al inicio.

Usa el formato RFC 3339, en el que el resultado generado siempre estará normalizada a Z y usa 0, 3, 6 o 9 dígitos fraccionarios. También se aceptan otras compensaciones que no sean “Z”. Ejemplos: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" o "2014-10-02T15:01:23+05:30".

endTime string (Timestamp format)

Opcional. Es el final exclusivo del intervalo.

Si se especifica, la marca de tiempo que coincida con este intervalo deberá ser anterior al final.

Usa el formato RFC 3339, en el que el resultado generado siempre estará normalizada a Z y usa 0, 3, 6 o 9 dígitos fraccionarios. También se aceptan otras compensaciones que no sean “Z”. Ejemplos: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" o "2014-10-02T15:01:23+05:30".

Representación JSON
{
  "startTime": string,
  "endTime": string
}

SearchTypes

Son los diferentes tipos de búsqueda que se pueden habilitar en la herramienta GoogleSearch.

Campos
Representación JSON
{
  "webSearch": {
    object (WebSearch)
  },
  "imageSearch": {
    object (ImageSearch)
  }
}

WebSearch

Este tipo no tiene campos.

Búsqueda web estándar para la fundamentación y las configuraciones relacionadas

ImageSearch

Este tipo no tiene campos.

Búsqueda con imágenes para la fundamentación y configuraciones relacionadas.

ComputerUse

Es el tipo de herramienta de uso de la computadora.

Campos
environment enum (Environment)

Obligatorio. Es el entorno en el que se opera.

excludedPredefinedFunctions[] string

Opcional. De forma predeterminada, las funciones predefinidas se incluyen en la llamada al modelo final. Algunos de ellos se pueden excluir explícitamente para que no se incluyan automáticamente. Esto puede tener dos propósitos: 1. Usar un espacio de acción diferente o más restringido 2. Mejoramos las definiciones o instrucciones de las funciones predefinidas.

enablePromptInjectionDetection boolean

Opcional. Indica si se debe habilitar la verificación de detección de inyección de instrucciones en la solicitud de uso de la computadora.

disabledSafetyPolicies[] enum (SafetyPolicy)

Opcional. Se inhabilitaron las políticas de seguridad para el uso de la computadora.

Representación JSON
{
  "environment": enum (Environment),
  "excludedPredefinedFunctions": [
    string
  ],
  "enablePromptInjectionDetection": boolean,
  "disabledSafetyPolicies": [
    enum (SafetyPolicy)
  ]
}

Entorno

Representa el entorno en el que se opera, como un navegador web.

Enums
ENVIRONMENT_UNSPECIFIED El valor predeterminado es el navegador.
ENVIRONMENT_BROWSER Funciona en un navegador web.
ENVIRONMENT_MOBILE Funciona en un entorno móvil.
ENVIRONMENT_DESKTOP Funciona en un entorno de escritorio.

SafetyPolicy

Políticas de seguridad predefinidas para el uso de la computadora

Enums
SAFETY_POLICY_UNSPECIFIED Política de seguridad sin especificar.
FINANCIAL_TRANSACTIONS Política de seguridad para transacciones financieras.
SENSITIVE_DATA_MODIFICATION Política de seguridad para la modificación de datos sensibles.
COMMUNICATION_TOOL Política de seguridad para herramientas de comunicación (p. ej., Gmail, Chat y Meet)
ACCOUNT_CREATION Política de seguridad para la creación de cuentas.
DATA_MODIFICATION Es la política de seguridad para la modificación de datos.
LEGAL_TERMS_AND_AGREEMENTS Política de seguridad para acuerdos y condiciones legales

UrlContext

Este tipo no tiene campos.

Es una herramienta que admite la recuperación del contexto de URL.

FileSearch

Es la herramienta FileSearch que recupera conocimiento de los corpus de recuperación semántica. Los archivos se importan a los corpus de la Recuperación semántica con la API de ImportFile.

Campos
fileSearchStoreNames[] string

Obligatorio. Nombres de los almacenes de búsqueda de archivos desde los que se recuperará la información. Ejemplo: fileSearchStores/my-file-search-store-123

metadataFilter string

Opcional. Es un filtro de metadatos que se aplica a los documentos y fragmentos recuperados de forma semántica.

topK integer

Opcional. Es la cantidad de fragmentos de recuperación semántica que se recuperarán.

Representación JSON
{
  "fileSearchStoreNames": [
    string
  ],
  "metadataFilter": string,
  "topK": integer
}

McpServer

Un MCPServer es un servidor al que puede llamar el modelo para realizar acciones. Es un servidor que implementa el protocolo de MCP. ID siguiente: 6

Campos
name string

Es el nombre del servidor de MCPServer.

transport Union type
Es el transporte que se usará para conectarse a MCPServer. transport puede ser una de las siguientes opciones:
streamableHttpTransport object (StreamableHttpTransport)

Es un transporte que puede transmitir solicitudes y respuestas HTTP.

Representación JSON
{
  "name": string,

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

StreamableHttpTransport

Es un transporte que puede transmitir solicitudes y respuestas HTTP. ID siguiente: 6

Campos
url string

Es la URL completa del extremo de MCPServer. Ejemplo: "https://api.example.com/mcp"

headers map (key: string, value: string)

Opcional: Campos para encabezados de autenticación, tiempos de espera, etcétera, si es necesario.

Un objeto que contiene una lista de pares "key": value. Ejemplo: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

timeout string (Duration format)

Es el tiempo de espera de HTTP para las operaciones normales.

Una duración en segundos con hasta nueve dígitos decimales, que terminan en “s”. Ejemplo: "3.5s".

sseReadTimeout string (Duration format)

Es el tiempo de espera para las operaciones de lectura de SSE.

Una duración en segundos con hasta nueve dígitos decimales, que terminan en “s”. Ejemplo: "3.5s".

terminateOnClose boolean

Indica si se debe cerrar la sesión del cliente cuando se cierra el transporte.

Representación JSON
{
  "url": string,
  "headers": {
    string: string,
    ...
  },
  "timeout": string,
  "sseReadTimeout": string,
  "terminateOnClose": boolean
}

GoogleMaps

Es la herramienta de Google Maps que proporciona contexto geoespacial para la búsqueda del usuario.

Campos
enableWidget boolean

Opcional. Indica si se debe devolver un token de contexto del widget en GroundingMetadata de la respuesta. Los desarrolladores pueden usar el token de contexto del widget para renderizar un widget de Google Maps con contexto geoespacial relacionado con los lugares a los que el modelo hace referencia en la respuesta.

Representación JSON
{
  "enableWidget": boolean
}

ToolChoiceType

Es el tipo de elección de herramienta.

Enums
TOOL_CHOICE_TYPE_UNSPECIFIED Valor predeterminado Este valor no se usa.
AUTO Selección automática de herramientas.
ANY Cualquier herramienta
NONE No se eligió ninguna herramienta.
VALIDATED Es la elección de herramienta validada.

Valor

Value representa un valor con escritura dinámica que puede ser nulo, un número, una cadena, un valor booleano, un valor de struct recursivo o una lista de valores. Se espera que un productor de valor establezca una de estas variantes. La ausencia de cualquier variante indica un error.

Campos
kind Union type
Es el tipo de valor. kind puede ser una de las siguientes opciones:
nullValue null

Representa un valor nulo.

numberValue number

Representa un valor doble.

stringValue string

Representa un valor de cadena.

boolValue boolean

Representa un valor booleano.

structValue object (Struct)

Representa un valor estructurado.

listValue object (ListValue)

Representa un Value repetido.

contentValue object (Content)

Representa contenido enriquecido (texto, imagen, etc.).

Representación JSON
{

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

ListValue

ListValue es un wrapper alrededor de un campo repetido de valores.

Campos
values[] object (Value)

Es un campo repetido de valores escritos de forma dinámica.

Representación JSON
{
  "values": [
    {
      object (Value)
    }
  ]
}

VisualizationMode

Es una enumeración para el modo de visualización. Con el tiempo, admitiremos un modo interactivo en el que el usuario podrá elegir si desea incluir visualizaciones en HTML en la respuesta.

Enums
UNSPECIFIED Es el modo de visualización predeterminado. Se establecerá de forma predeterminada en AUTO.
OFF No incluye visualizaciones.
AUTO Incluir visualizaciones automáticamente

Recurso de REST: auth_tokens

Recurso: AuthToken

Es una solicitud para crear un token de autenticación efímero.

Campos
name string

Solo salida. Es el identificador. Es el token en sí.

expireTime string (Timestamp format)

Opcional. Solo entrada. Inmutable. Es una fecha y hora opcionales después de las cuales, cuando se use el token resultante, se rechazarán los mensajes en las sesiones de BidiGenerateContent. (Gemini puede cerrar la sesión de forma preventiva después de este tiempo).

Si no se configura, el valor predeterminado es 30 minutos en el futuro. Si se configura, este valor debe ser inferior a 20 horas en el futuro.

Usa el formato RFC 3339, en el que el resultado generado siempre usará la normalización Z y los dígitos fraccionarios 0, 3, 6 o 9. También se aceptan otras compensaciones que no sean “Z”. Ejemplos: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" o "2014-10-02T15:01:23+05:30".

newSessionExpireTime string (Timestamp format)

Opcional. Solo entrada. Inmutable. Es la fecha y hora después de las cuales se rechazarán las nuevas sesiones de la API de Live que usen el token resultante de esta solicitud.

Si no se configura, el valor predeterminado es 60 segundos en el futuro. Si se configura, este valor debe ser inferior a 20 horas en el futuro.

Usa el formato RFC 3339, en el que el resultado generado siempre usará la normalización Z y los dígitos fraccionarios 0, 3, 6 o 9. También se aceptan otras compensaciones que no sean “Z”. Ejemplos: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" o "2014-10-02T15:01:23+05:30".

fieldMask string (FieldMask format)

Opcional. Solo entrada. Inmutable. Si fieldMask está vacío y bidiGenerateContentSetup no está presente, el mensaje BidiGenerateContentSetup efectivo se toma de la conexión de la API en vivo.

Si fieldMask está vacío y bidiGenerateContentSetup está presente, el mensaje BidiGenerateContentSetup efectivo se toma por completo de bidiGenerateContentSetup en esta solicitud. Se ignora el mensaje de configuración de la conexión a la API de Live.

Si fieldMask no está vacío, los campos correspondientes de bidiGenerateContentSetup reemplazarán los campos del mensaje de configuración en la conexión de la API de Live.

Esta es una lista separada por comas de los nombres de campos totalmente calificados. Ejemplo: "user.displayName,photo".

config Union type
Es la configuración específica del método para el token resultante. config puede ser una de las siguientes opciones:
bidiGenerateContentSetup object (BidiGenerateContentSetup)

Opcional. Solo entrada. Inmutable. Es la configuración específica de BidiGenerateContent.

uses integer

Opcional. Solo entrada. Inmutable. Es la cantidad de veces que se puede usar el token. Si este valor es cero, no se aplica ningún límite. Reanudar una sesión de la API de Live no se considera un uso. Si no se especifica, el valor predeterminado es 1.

Representación JSON
{
  "name": string,
  "expireTime": string,
  "newSessionExpireTime": string,
  "fieldMask": string,

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

BidiGenerateContentSetup

Es el mensaje que se enviará en el primer BidiGenerateContentClientMessage (y solo en el primero). Contiene la configuración que se aplicará durante la RPC de transmisión.

Los clientes deben esperar un mensaje de BidiGenerateContentSetupComplete antes de enviar mensajes adicionales.

Campos
model string

Obligatorio. Es el nombre del recurso del modelo. Este valor sirve como ID para que lo use el modelo.

Formato: models/{model}

generationConfig object (GenerationConfig)

Opcional. Es la configuración de generación.

Los siguientes campos no son compatibles:

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

Opcional. Las instrucciones del sistema que proporcionó el usuario para el modelo.

Nota: Solo se debe usar texto en las partes y el contenido en cada parte debe encontrarse en un párrafo separado.

tools[] object (Tool)

Opcional. Es una lista de Tools que el modelo puede usar para generar la siguiente respuesta.

Una Tool es un fragmento de código que permite que el sistema interactúe con sistemas externos para realizar una acción, o un conjunto de acciones, fuera del conocimiento y del alcance del modelo.

realtimeInputConfig object (RealtimeInputConfig)

Opcional. Configura el procesamiento de la entrada en tiempo real.

sessionResumption object (SessionResumptionConfig)

Opcional. Configura el mecanismo de reanudación de sesión.

Si se incluye, el servidor enviará mensajes SessionResumptionUpdate.

contextWindowCompression object (ContextWindowCompressionConfig)

Opcional. Configura un mecanismo de compresión de la ventana de contexto.

Si se incluye, el servidor reducirá automáticamente el tamaño del contexto cuando supere la longitud configurada.

inputAudioTranscription object (AudioTranscriptionConfig)

Opcional. Si se configura, habilita la transcripción de la entrada de voz. La transcripción se alinea con el idioma del audio de entrada, si está configurado.

outputAudioTranscription object (AudioTranscriptionConfig)

Opcional. Si se configura, habilita la transcripción de la salida de audio del modelo. Si se configura, la transcripción se alinea con el código de idioma especificado para el audio de salida.

historyConfig object (HistoryConfig)

Opcional. Configura el intercambio de historial entre el cliente y el servidor.

Representación 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

Son las opciones de configuración para la generación y los resultados del modelo. No todos los parámetros se pueden configurar para todos los modelos.

Campos
stopSequences[] string

Opcional. Es el conjunto de secuencias de caracteres (hasta 5) que detendrán la generación de resultados. Si se especifica, la API se detendrá en la primera aparición de un stop_sequence. La secuencia de detención no se incluirá como parte de la respuesta.

responseMimeType string

Opcional. Tipo de MIME del texto candidato generado. Los tipos de MIME admitidos son los siguientes: text/plain: (predeterminado) Es la salida de texto. application/json: La respuesta JSON en los candidatos de respuesta. text/x.enum: ENUM como respuesta de cadena en los candidatos de respuesta. Consulta los documentos para obtener una lista de todos los tipos de MIME de texto admitidos.

responseSchema
(deprecated)
object (Schema)

Opcional. Es el esquema de salida del texto candidato generado. Los esquemas deben ser un subconjunto del esquema de OpenAPI y pueden ser objetos, primitivos o arrays.

Si se establece, también se debe establecer un responseMimeType compatible. Tipos de MIME compatibles: application/json: Esquema para la respuesta JSON. Consulta la guía de generación de texto en JSON para obtener más detalles.

_responseJsonSchema
(deprecated)
value (Value format)

Opcional. Esquema de salida de la respuesta generada. Esta es una alternativa a responseSchema que acepta esquemas JSON.

Si se configura, se debe omitir responseSchema, pero responseMimeType es obligatorio.

Si bien se puede enviar el esquema JSON completo, no se admiten todas las funciones. Específicamente, solo se admiten las siguientes propiedades:

  • $id
  • $defs
  • $ref
  • $anchor
  • type
  • format
  • title
  • description
  • enum (para cadenas y números)
  • items
  • prefixItems
  • minItems
  • maxItems
  • minimum
  • maximum
  • anyOf
  • oneOf (se interpreta igual que anyOf)
  • properties
  • additionalProperties
  • required

También se puede establecer la propiedad no estándar propertyOrdering.

Las referencias cíclicas se despliegan hasta un cierto grado y, como tales, solo se pueden usar dentro de propiedades no obligatorias. (Las propiedades que admiten valores nulos no son suficientes). Si $ref se configura en un subesquema, no se pueden establecer otras propiedades, excepto las que comienzan con $.

responseJsonSchema value (Value format)

Opcional. Es un detalle interno. Usa responseJsonSchema en lugar de este campo.

responseModalities[] enum (Modality)

Opcional. Son las modalidades solicitadas de la respuesta. Representa el conjunto de modalidades que el modelo puede devolver y que se deben esperar en la respuesta. Esta es una coincidencia exacta con las modalidades de la respuesta.

Un modelo puede tener varias combinaciones de modalidades admitidas. Si las modalidades solicitadas no coinciden con ninguna de las combinaciones admitidas, se devolverá un error.

Una lista vacía equivale a solicitar solo texto.

candidateCount integer

Opcional. Es la cantidad de respuestas generadas que se devolverán. Si no se configura, el valor predeterminado será 1. Ten en cuenta que esto no funciona para los modelos de generaciones anteriores (familia de Gemini 1.0).

maxOutputTokens integer

Opcional. Es la cantidad máxima de tokens que se pueden incluir en un candidato de respuesta.

Nota: El valor predeterminado varía según el modelo. Consulta el atributo Model.output_token_limit del objeto Model que se devuelve de la función getModel.

temperature number

Opcional. Controla la aleatoriedad del resultado.

Nota: El valor predeterminado varía según el modelo. Consulta el atributo Model.temperature del objeto Model que se devuelve de la función getModel.

Los valores pueden variar de [0.0, 2.0].

topP number

Opcional. Es la probabilidad acumulativa máxima de los tokens que se deben tener en cuenta durante el muestreo.

El modelo utiliza un muestreo combinado de Top-K y Top-P (núcleo).

Los tokens se ordenan según las probabilidades asignadas para que solo se tengan en cuenta los tokens más probables. El muestreo Top-K limita directamente la cantidad máxima de tokens que se deben considerar, mientras que el muestreo de núcleo limita la cantidad de tokens según la probabilidad acumulativa.

Nota: El valor predeterminado varía según Model y se especifica con el atributo Model.top_p que devuelve la función getModel. Un atributo topK vacío indica que el modelo no aplica el muestreo top-k y no permite establecer topK en las solicitudes.

topK integer

Opcional. Es la cantidad máxima de tokens que se deben tener en cuenta al muestrear.

Los modelos de Gemini usan el muestreo Top-p (de núcleo) o una combinación de muestreo Top-k y de núcleo. El muestreo de Top-k considera el conjunto de los tokens más probables de topK. Los modelos que se ejecutan con el muestreo de núcleo no permiten el parámetro de configuración topK.

Nota: El valor predeterminado varía según Model y se especifica con el atributo Model.top_p que devuelve la función getModel. Un atributo topK vacío indica que el modelo no aplica el muestreo top-k y no permite establecer topK en las solicitudes.

seed integer

Opcional. Es la semilla que se usa en la decodificación. Si no se establece, la solicitud usa una semilla generada de forma aleatoria.

presencePenalty number

Opcional. Es la penalización de presencia que se aplica a las probabilidades de registro del siguiente token si ya se vio en la respuesta.

Esta penalización es binaria (activada o desactivada) y no depende de la cantidad de veces que se usa el token (después de la primera). Usa frequencyPenalty para una penalización que aumenta con cada uso.

Una penalización positiva desalentará el uso de tokens que ya se usaron en la respuesta, lo que aumentará el vocabulario.

Una penalización negativa fomentará el uso de tokens que ya se usaron en la respuesta, lo que reducirá el vocabulario.

frequencyPenalty number

Opcional. Es la penalización de frecuencia aplicada a las probabilidades logarítmicas del siguiente token, multiplicada por la cantidad de veces que se vio cada token en la respuesta hasta el momento.

Una penalización positiva desalentará el uso de tokens que ya se usaron, de forma proporcional a la cantidad de veces que se usó el token: Cuanto más se use un token, más difícil será para el modelo volver a usarlo, lo que aumentará el vocabulario de las respuestas.

Precaución: Una penalización negativa alentará al modelo a reutilizar tokens de forma proporcional a la cantidad de veces que se usó el token. Los valores negativos pequeños reducirán el vocabulario de una respuesta. Los valores negativos más grandes harán que el modelo comience a repetir un token común hasta que alcance el límite de maxOutputTokens.

responseLogprobs boolean

Opcional. Si es verdadero, exporta los resultados de logprobs en la respuesta.

logprobs integer

Opcional. Solo es válido si responseLogprobs=True. Esto establece la cantidad de logprobs principales, incluido el candidato elegido, que se devolverán en cada paso de decodificación en Candidate.logprobs_result. El número debe estar en el rango de [0, 20].

enableEnhancedCivicAnswers boolean

Opcional. Habilita las respuestas cívicas mejoradas. Es posible que no esté disponible para todos los modelos.

speechConfig object (SpeechConfig)

Opcional. Es la configuración de generación de voz.

thinkingConfig object (ThinkingConfig)

Opcional. Es la configuración de las funciones de pensamiento. Se devolverá un error si este campo se configura para modelos que no admiten el pensamiento.

imageConfig object (ImageConfig)

Opcional. Es la configuración para la generación de imágenes. Se mostrará un error si este campo se configura para modelos que no admiten estas opciones de configuración.

mediaResolution enum (MediaResolution)

Opcional. Si se especifica, se usará la resolución de medios especificada.

enableAffectiveDialog boolean

Opcional. Si está habilitada, el modelo detectará emociones y adaptará sus respuestas en consecuencia.

responseFormat object (ResponseFormatConfig)

Opcional. Es la configuración del formato de salida de la respuesta. Permite especificar la configuración de salida por modalidad (texto, audio, imagen) en una estructura plana.

translationConfig object (TranslationConfig)

Opcional. Es la configuración de la traducción.

Representación 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)
  }
}

Modalidad

Son las modalidades admitidas de la respuesta.

Enums
MODALITY_UNSPECIFIED Valor predeterminado
TEXT Indica que el modelo debe devolver texto.
IMAGE Indica que el modelo debe devolver imágenes.
AUDIO Indica que el modelo debe devolver audio.

SpeechConfig

Es la configuración para la generación y transcripción de voz.

Campos
voiceConfig object (VoiceConfig)

Es la configuración en caso de salida de una sola voz.

multiSpeakerVoiceConfig object (MultiSpeakerVoiceConfig)

Opcional. Es la configuración para la configuración de varios altavoces. Se excluye mutuamente con el campo voiceConfig.

languageCode string

Opcional. Es el código de idioma BCP-47 del IETF que el usuario configuró para que use la app. Se usa para el reconocimiento y la síntesis de voz.

Los valores válidos son: 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 y th-TH.

Representación JSON
{
  "voiceConfig": {
    object (VoiceConfig)
  },
  "multiSpeakerVoiceConfig": {
    object (MultiSpeakerVoiceConfig)
  },
  "languageCode": string
}

VoiceConfig

Es la configuración de la voz que se usará.

Campos
voice_config Union type
Es la configuración que usará la bocina. voice_config puede ser una de las siguientes opciones:
prebuiltVoiceConfig object (PrebuiltVoiceConfig)

Es la configuración de la voz prediseñada que se usará.

Representación JSON
{

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

PrebuiltVoiceConfig

Es la configuración del altavoz prediseñado que se usará.

Campos
voiceName string

Es el nombre de la voz predeterminada que se usará.

Representación JSON
{
  "voiceName": string
}

MultiSpeakerVoiceConfig

Es la configuración para la configuración de varios altavoces.

Campos
speakerVoiceConfigs[] object (SpeakerVoiceConfig)

Obligatorio. Son todas las voces de bocina habilitadas.

Representación JSON
{
  "speakerVoiceConfigs": [
    {
      object (SpeakerVoiceConfig)
    }
  ]
}

SpeakerVoiceConfig

Es la configuración de una sola bocina en una configuración de varias bocinas.

Campos
speaker string

Obligatorio. Es el nombre del orador que se usará. Debe ser igual que en la instrucción.

voiceConfig object (VoiceConfig)

Obligatorio. Es la configuración de la voz que se usará.

Representación JSON
{
  "speaker": string,
  "voiceConfig": {
    object (VoiceConfig)
  }
}

ThinkingConfig

Es la configuración de las funciones de pensamiento.

Campos
includeThoughts boolean

Indica si se deben incluir pensamientos en la respuesta. Si es verdadero, los pensamientos solo se devuelven cuando están disponibles.

thinkingBudget integer

Es la cantidad de tokens de pensamiento que debe generar el modelo.

thinkingLevel enum (ThinkingLevel)

Opcional. Controla la profundidad máxima del proceso de razonamiento interno del modelo antes de que produzca una respuesta. El valor predeterminado depende del modelo. Consulta la guía de niveles de pensamiento para obtener más detalles. Se recomienda para modelos de Gemini 3 o versiones posteriores. Si se usa con modelos anteriores, se produce un error.

Representación JSON
{
  "includeThoughts": boolean,
  "thinkingBudget": integer,
  "thinkingLevel": enum (ThinkingLevel)
}

ThinkingLevel

Permite que el usuario especifique cuánto pensar usando un enum en lugar de un presupuesto de números enteros.

Enums
THINKING_LEVEL_UNSPECIFIED Valor predeterminado
MINIMAL Poco o nada de pensamiento.
LOW Nivel de razonamiento bajo.
MEDIUM Nivel de razonamiento medio.
HIGH Nivel de razonamiento alto.

ImageConfig

Es la configuración de las funciones de generación de imágenes.

Campos
aspectRatio string

Opcional. Es la relación de aspecto de la imagen que se generará. Relaciones de aspecto admitidas: 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 o 21:9.

Si no se especifica, el modelo elegirá una relación de aspecto predeterminada en función de las imágenes de referencia proporcionadas.

imageSize string

Opcional. Especifica el tamaño de las imágenes generadas. Los valores admitidos son 512, 1K, 2K y 4K. Si no se especifica, el modelo usará el valor predeterminado 1K.

Representación JSON
{
  "aspectRatio": string,
  "imageSize": string
}

MediaResolution

Resolución de medios para los medios de entrada.

Enums
MEDIA_RESOLUTION_UNSPECIFIED No se estableció la resolución de contenido multimedia.
MEDIA_RESOLUTION_LOW La resolución de los medios se estableció en baja (64 tokens).
MEDIA_RESOLUTION_MEDIUM La resolución de medios se establece en media (256 tokens).
MEDIA_RESOLUTION_HIGH La resolución de los medios se establece en alta (reencuadre con zoom con 256 tokens).

ResponseFormatConfig

Es la configuración del formato de salida de la respuesta. Es un objeto plano en el que cada campo secundario opcional configura una modalidad de salida específica.

Campos
text object (TextResponseFormat)

Opcional. Es la configuración del formato de salida de texto.

audio object (AudioResponseFormat)

Opcional. Es la configuración del formato de salida de audio.

image object (ImageResponseFormat)

Opcional. Es la configuración del formato de salida de la imagen.

Representación JSON
{
  "text": {
    object (TextResponseFormat)
  },
  "audio": {
    object (AudioResponseFormat)
  },
  "image": {
    object (ImageResponseFormat)
  }
}

TextResponseFormat

Es la configuración del formato de salida de texto.

Campos
mimeType enum (MimeType)

Opcional. Es el tipo de MIME del texto de salida.

schema value (Value format)

Opcional. Es el esquema JSON al que debe ajustarse el resultado. Solo se aplica cuando mimeType es APPLICATION_JSON.

Representación JSON
{
  "mimeType": enum (MimeType),
  "schema": value
}

MimeType

Son los tipos de MIME admitidos para la salida de texto.

Enums
MIME_TYPE_UNSPECIFIED Valor predeterminado Este valor no se usa.
APPLICATION_JSON Es el formato de salida JSON.
TEXT_PLAIN Formato de salida de texto sin formato.

AudioResponseFormat

Es la configuración del formato de salida de audio.

Campos
mimeType enum (MimeType)

Opcional. Es el tipo de MIME de la salida de audio.

delivery enum (Delivery)

Opcional. Es el modo de entrega de la salida de audio.

sampleRate integer

Opcional. Es la tasa de muestreo en Hz.

bitRate integer

Opcional. Es la tasa de bits en bits por segundo (bps). Solo se aplica a los formatos comprimidos (MP3 y Opus).

Representación JSON
{
  "mimeType": enum (MimeType),
  "delivery": enum (Delivery),
  "sampleRate": integer,
  "bitRate": integer
}

MimeType

Son los tipos de MIME admitidos para la salida de audio.

Enums
MIME_TYPE_UNSPECIFIED Valor predeterminado Este valor no se usa.
AUDIO_MP3 Formato de audio MP3
AUDIO_OGG_OPUS Formato de audio OGG Opus.
AUDIO_L16 Formato de audio PCM sin procesar (L16).
AUDIO_WAV Formato de audio WAV.
AUDIO_ALAW Es un formato de audio A-law.
AUDIO_MULAW Formato de audio Mu-law.

Entrega

Es el modo de entrega de la salida de audio.

Enums
DELIVERY_UNSPECIFIED Valor predeterminado Este valor no se usa.
INLINE Los datos de audio se devuelven de forma intercalada en la respuesta.
URI Los datos de audio se devuelven como un URI.

ImageResponseFormat

Es la configuración del formato de salida de la imagen.

Campos
mimeType enum (MimeType)

Opcional. Tipo de MIME de la imagen de salida.

delivery enum (Delivery)

Opcional. Es el modo de entrega de la imagen de salida.

aspectRatio enum (AspectRatio)

Opcional. Es la relación de aspecto de la imagen de salida.

imageSize enum (ImageSize)

Opcional. Es el tamaño de la imagen de salida.

Representación JSON
{
  "mimeType": enum (MimeType),
  "delivery": enum (Delivery),
  "aspectRatio": enum (AspectRatio),
  "imageSize": enum (ImageSize)
}

MimeType

Tipos de MIME admitidos para la salida de imágenes.

Enums
MIME_TYPE_UNSPECIFIED Valor predeterminado Este valor no se usa.
IMAGE_JPEG Formato de imagen JPEG.

Entrega

Es el modo de entrega para la salida de imágenes.

Enums
DELIVERY_UNSPECIFIED Valor predeterminado Este valor no se usa.
INLINE Los datos de la imagen se devuelven intercalados en la respuesta.
URI Los datos de la imagen se devuelven como un URI.

AspectRatio

Son las relaciones de aspecto compatibles para la salida de imágenes.

Enums
ASPECT_RATIO_UNSPECIFIED Valor predeterminado Este valor no se usa.
ASPECT_RATIO_ONE_BY_ONE Relación de aspecto de 1:1
ASPECT_RATIO_TWO_BY_THREE Relación de aspecto de 2:3
ASPECT_RATIO_THREE_BY_TWO Relación de aspecto de 3:2
ASPECT_RATIO_THREE_BY_FOUR Relación de aspecto de 3:4
ASPECT_RATIO_FOUR_BY_THREE Relación de aspecto de 4:3
ASPECT_RATIO_FOUR_BY_FIVE Relación de aspecto de 4:5
ASPECT_RATIO_FIVE_BY_FOUR Relación de aspecto de 5:4
ASPECT_RATIO_NINE_BY_SIXTEEN Relación de aspecto de 9:16
ASPECT_RATIO_SIXTEEN_BY_NINE Relación de aspecto de 16:9
ASPECT_RATIO_TWENTY_ONE_BY_NINE Relación de aspecto de 21:9
ASPECT_RATIO_ONE_BY_EIGHT Relación de aspecto de 1:8
ASPECT_RATIO_EIGHT_BY_ONE Relación de aspecto de 8:1.
ASPECT_RATIO_ONE_BY_FOUR Relación de aspecto de 1:4
ASPECT_RATIO_FOUR_BY_ONE Relación de aspecto de 4:1.

ImageSize

Son los tamaños de imagen admitidos para la salida de imágenes.

Enums
IMAGE_SIZE_UNSPECIFIED Valor predeterminado Este valor no se usa.
IMAGE_SIZE_FIVE_TWELVE Tamaño de la imagen de 512 px
IMAGE_SIZE_ONE_K Tamaño de la imagen de 1K
IMAGE_SIZE_TWO_K Tamaño de la imagen 2K.
IMAGE_SIZE_FOUR_K Tamaño de la imagen en 4K

TranslationConfig

Es la configuración de las funciones de traducción.

Campos
targetLanguageCode string

Obligatorio. Es el idioma de destino de la traducción. Los valores admitidos son códigos de idioma BCP-47 (p.ej., "en", "es", "fr").

echoTargetLanguage boolean

Opcional. Si es verdadero, el modelo generará audio cuando se hable el idioma objetivo, es decir, repetirá la entrada. Si es falso, no produciremos audio para el idioma de destino.

Representación JSON
{
  "targetLanguageCode": string,
  "echoTargetLanguage": boolean
}

RealtimeInputConfig

Configura el comportamiento de entrada en tiempo real en BidiGenerateContent.

Campos
automaticActivityDetection object (AutomaticActivityDetection)

Opcional. Si no se configura, la detección automática de actividad se habilita de forma predeterminada. Si la detección de voz automática está inhabilitada, el cliente debe enviar indicadores de actividad.

activityHandling enum (ActivityHandling)

Opcional. Define qué efecto tiene la actividad.

turnCoverage enum (TurnCoverage)

Opcional. Define qué entrada se incluye en el turno del usuario.

Representación JSON
{
  "automaticActivityDetection": {
    object (AutomaticActivityDetection)
  },
  "activityHandling": enum (ActivityHandling),
  "turnCoverage": enum (TurnCoverage)
}

AutomaticActivityDetection

Configura la detección automática de actividad.

Campos
disabled boolean

Opcional. Si está habilitado (configuración predeterminada), la entrada de voz y texto detectada se considera actividad. Si está inhabilitado, el cliente debe enviar indicadores de actividad.

startOfSpeechSensitivity enum (StartSensitivity)

Opcional. Determina la probabilidad de que se detecte el habla.

prefixPaddingMs integer

Opcional. Es la duración requerida del habla detectada antes de que se confirme el inicio del habla. Cuanto más bajo sea este valor, más sensible será la detección del inicio del habla y se podrá reconocer el habla más breve. Sin embargo, esto también aumenta la probabilidad de falsos positivos.

endOfSpeechSensitivity enum (EndSensitivity)

Opcional. Determina la probabilidad de que haya finalizado el discurso detectado.

silenceDurationMs integer

Opcional. Es la duración requerida del audio detectado sin voz (p.ej., silencio) antes de que se confirme el final del discurso. Cuanto mayor sea este valor, más largos podrán ser los espacios de silencio sin interrumpir la actividad del usuario, pero esto aumentará la latencia del modelo.

Representación JSON
{
  "disabled": boolean,
  "startOfSpeechSensitivity": enum (StartSensitivity),
  "prefixPaddingMs": integer,
  "endOfSpeechSensitivity": enum (EndSensitivity),
  "silenceDurationMs": integer
}

StartSensitivity

Determina cómo se detecta el inicio del habla.

Enums
START_SENSITIVITY_UNSPECIFIED El valor predeterminado es START_SENSITIVITY_HIGH.
START_SENSITIVITY_HIGH La detección automática detectará el inicio del habla con mayor frecuencia.
START_SENSITIVITY_LOW La detección automática detectará el inicio del habla con menor frecuencia.

EndSensitivity

Determina cómo se detecta el final del discurso.

Enums
END_SENSITIVITY_UNSPECIFIED El valor predeterminado es END_SENSITIVITY_HIGH.
END_SENSITIVITY_HIGH La detección automática finaliza el discurso con mayor frecuencia.
END_SENSITIVITY_LOW La detección automática finaliza el discurso con menos frecuencia.

ActivityHandling

Las diferentes formas de controlar la actividad del usuario

Enums
ACTIVITY_HANDLING_UNSPECIFIED Si no se especifica, el comportamiento predeterminado es START_OF_ACTIVITY_INTERRUPTS.
START_OF_ACTIVITY_INTERRUPTS Si es verdadero, el inicio de la actividad interrumpirá la respuesta del modelo (también llamado "interrupción"). La respuesta actual del modelo se cortará en el momento de la interrupción. Este es el comportamiento predeterminado.
NO_INTERRUPTION No se interrumpirá la respuesta del modelo.

TurnCoverage

Son las opciones sobre qué entrada se incluye en el turno del usuario.

Enums
TURN_COVERAGE_UNSPECIFIED Si no se especifica, se selecciona un comportamiento predeterminado según el modelo. Por ejemplo, para Gemini 2.5, el valor predeterminado es TURN_INCLUDES_ONLY_ACTIVITY, mientras que para Gemini 3.1 y versiones posteriores, es TURN_INCLUDES_AUDIO_ACTIVITY_AND_ALL_VIDEO.
TURN_INCLUDES_ONLY_ACTIVITY Incluye la actividad desde el último turno, sin incluir la inactividad (p.ej., silencio en la transmisión de audio).
TURN_INCLUDES_ALL_INPUT Incluye todas las entradas en tiempo real desde el último turno, incluida la inactividad (p.ej., silencio en la transmisión de audio).
TURN_INCLUDES_AUDIO_ACTIVITY_AND_ALL_VIDEO Incluye la actividad de audio y todos los videos desde el último turno. Con la detección automática de actividad, la actividad de audio significa voz y excluye el silencio.

SessionResumptionConfig

Es la configuración de reanudación de sesión.

Este mensaje se incluye en la configuración de la sesión como BidiGenerateContentSetup.session_resumption. Si se configura, el servidor enviará mensajes de SessionResumptionUpdate.

Campos
handle string

Es el identificador de una sesión anterior. Si no está presente, se crea una sesión nueva.

Los identificadores de sesión provienen de los valores de SessionResumptionUpdate.token en conexiones anteriores.

Representación JSON
{
  "handle": string
}

ContextWindowCompressionConfig

Habilita la compresión de la ventana de contexto, un mecanismo para administrar la ventana de contexto del modelo de modo que no exceda una longitud determinada.

Campos
compression_mechanism Union type
Es el mecanismo de compresión de la ventana de contexto que se usa. compression_mechanism puede ser una de las siguientes opciones:
slidingWindow object (SlidingWindow)

Un mecanismo de ventana deslizante

triggerTokens string (int64 format)

Es la cantidad de tokens (antes de ejecutar un turno) que se requieren para activar la compresión de la ventana de contexto.

Esto se puede usar para equilibrar la calidad con la latencia, ya que las ventanas de contexto más cortas pueden generar respuestas más rápidas del modelo. Sin embargo, cualquier operación de compresión provocará un aumento temporal de la latencia, por lo que no se deben activar con frecuencia.

Si no se establece, el valor predeterminado es el 80% del límite de la ventana de contexto del modelo. Esto deja un 20% para la próxima solicitud del usuario o respuesta del modelo.

Representación JSON
{

  // compression_mechanism
  "slidingWindow": {
    object (SlidingWindow)
  }
  // Union type
  "triggerTokens": string
}

SlidingWindow

El método SlidingWindow descarta el contenido al principio de la ventana de contexto. El contexto resultante siempre comenzará al inicio de un turno de rol de USER. Las instrucciones del sistema y cualquier BidiGenerateContentSetup.prefix_turns siempre permanecerán al principio del resultado.

Campos
targetTokens string (int64 format)

Es la cantidad objetivo de tokens que se deben conservar. El valor predeterminado es triggerTokens/2.

Descartar partes de la ventana de contexto provoca un aumento temporal de la latencia, por lo que este valor debe calibrarse para evitar operaciones de compresión frecuentes.

Representación JSON
{
  "targetTokens": string
}

AudioTranscriptionConfig

Es la configuración de la transcripción de audio.

Campos
adaptationPhrases[]
(deprecated)
string

Opcional. Es una lista de frases que se usan para la adaptación del discurso, lo que sesga el modelo de RAA para mejorar el reconocimiento de estos términos específicos.

customVocabulary[] string

Opcional. Es una lista de frases del vocabulario personalizado para sesgar el modelo de reconocimiento de voz hacia el reconocimiento de términos específicos (nombres de productos, nombres propios, jerga).

language_config Union type
Es la configuración de idioma para la transcripción de audio. En el caso de los modelos de RVA, es obligatorio y se mostrará un error si no se configura. language_config puede ser una de las siguientes opciones:
languageAuto object (LanguageAuto)

Opcional. El modelo detectará el idioma automáticamente.

languageHints object (LanguageHints)

Opcional. Especifica uno o más idiomas en el audio.

Representación JSON
{
  "adaptationPhrases": [
    string
  ],
  "customVocabulary": [
    string
  ],

  // language_config
  "languageAuto": {
    object (LanguageAuto)
  },
  "languageHints": {
    object (LanguageHints)
  }
  // Union type
}

LanguageAuto

Este tipo no tiene campos.

Indica que el idioma del audio se debe detectar automáticamente.

LanguageHints

Proporciona sugerencias al modelo sobre los posibles idiomas presentes en el audio.

Campos
languageCodes[] string

Obligatorio. Son códigos de idioma BCP-47.

Representación JSON
{
  "languageCodes": [
    string
  ]
}

HistoryConfig

Es la configuración del historial.

Este mensaje se incluye en la configuración de la sesión como BidiGenerateContentSetup.history_config. Configura el intercambio de mensajes del historial.

Campos
initialHistoryInClientContent boolean

Opcional. Si es verdadero, después de enviar setupComplete, el servidor esperará y, primero, procesará los mensajes clientContent hasta que turnComplete sea true. Este historial inicial no activará una llamada al modelo y puede finalizar con el rol MODEL. Después de que turnComplete es true, el cliente puede iniciar la conversación en tiempo real a través de realtimeInput.

Representación JSON
{
  "initialHistoryInClientContent": boolean
}

Método: auth_tokens.create

Crea un token que se puede usar para restringir el comportamiento de una sesión de BidiGenerateContent.

Extremo

post https://generativelanguage.googleapis.com/v1beta/auth_tokens

Cuerpo de la solicitud

El cuerpo de la solicitud contiene una instancia de AuthToken.

Campos
expireTime string (Timestamp format)

Opcional. Solo entrada. Inmutable. Es una fecha y hora opcionales después de las cuales, cuando se use el token resultante, se rechazarán los mensajes en las sesiones de BidiGenerateContent. (Gemini puede cerrar la sesión de forma preventiva después de este tiempo).

Si no se configura, el valor predeterminado es 30 minutos en el futuro. Si se configura, este valor debe ser inferior a 20 horas en el futuro.

Usa el formato RFC 3339, en el que el resultado generado siempre usará la normalización Z y los dígitos fraccionarios 0, 3, 6 o 9. También se aceptan otras compensaciones que no sean “Z”. Ejemplos: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" o "2014-10-02T15:01:23+05:30".

newSessionExpireTime string (Timestamp format)

Opcional. Solo entrada. Inmutable. Es la fecha y hora después de las cuales se rechazarán las nuevas sesiones de la API de Live que usen el token resultante de esta solicitud.

Si no se configura, el valor predeterminado es 60 segundos en el futuro. Si se configura, este valor debe ser inferior a 20 horas en el futuro.

Usa el formato RFC 3339, en el que el resultado generado siempre usará la normalización Z y los dígitos fraccionarios 0, 3, 6 o 9. También se aceptan otras compensaciones que no sean “Z”. Ejemplos: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" o "2014-10-02T15:01:23+05:30".

fieldMask string (FieldMask format)

Opcional. Solo entrada. Inmutable. Si fieldMask está vacío y bidiGenerateContentSetup no está presente, el mensaje BidiGenerateContentSetup efectivo se toma de la conexión de la API en vivo.

Si fieldMask está vacío y bidiGenerateContentSetup está presente, el mensaje BidiGenerateContentSetup efectivo se toma por completo de bidiGenerateContentSetup en esta solicitud. Se ignora el mensaje de configuración de la conexión a la API de Live.

Si fieldMask no está vacío, los campos correspondientes de bidiGenerateContentSetup reemplazarán los campos del mensaje de configuración en la conexión de la API de Live.

Esta es una lista separada por comas de los nombres de campos totalmente calificados. Ejemplo: "user.displayName,photo".

config Union type
Es la configuración específica del método para el token resultante. config puede ser una de las siguientes opciones:
bidiGenerateContentSetup object (BidiGenerateContentSetup)

Opcional. Solo entrada. Inmutable. Es la configuración específica de BidiGenerateContent.

uses integer

Opcional. Solo entrada. Inmutable. Es la cantidad de veces que se puede usar el token. Si este valor es cero, no se aplica ningún límite. Reanudar una sesión de la API de Live no se considera un uso. Si no se especifica, el valor predeterminado es 1.

Cuerpo de la respuesta

Si el proceso se realiza de forma correcta, el cuerpo de la respuesta contiene una instancia recién creada de AuthToken.