Caching

El almacenamiento de contexto en caché te permite guardar y reutilizar tokens de entrada precalculados que deseas usar repetidamente, por ejemplo, cuando haces diferentes preguntas sobre el mismo archivo multimedia. Esto puede generar ahorros de costos y tiempo, según el uso. Para obtener una introducción detallada, consulta la guía Almacenamiento en caché del contexto.

Método: cachedContents.create

Crea un recurso CachedContent.

Extremo

post https://generativelanguage.googleapis.com/v1beta/cachedContents

Cuerpo de la solicitud

El cuerpo de la solicitud contiene una instancia de CachedContent.

Campos
contents[] object (Content)

Opcional. Solo entrada. Inmutable. Es el contenido que se almacenará en caché.

tools[] object (Tool)

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

expiration Union type
Especifica cuándo vencerá este recurso. expiration puede ser una de las siguientes opciones:
expireTime string (Timestamp format)

Marca de tiempo en UTC del momento en que este recurso se consideró vencido. Esto siempre se proporciona en la salida, sin importar si se envió en la entrada.

Usa el RFC 3339, en el que el resultado generado siempre se normaliza según la zona horaria 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".

ttl string (Duration format)

Solo entrada. Es el nuevo TTL para este recurso (solo entrada).

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

displayName string

Opcional. Inmutable. Es el nombre visible significativo generado por el usuario del contenido almacenado en caché. Máximo de 128 caracteres Unicode.

model string

Obligatorio. Inmutable. Nombre del Model que se usará para el contenido almacenado en caché. Formato: models/{model}

systemInstruction object (Content)

Opcional. Solo entrada. Inmutable. Es la instrucción del sistema establecida por el desarrollador. Actualmente, solo texto.

toolConfig object (ToolConfig)

Opcional. Solo entrada. Inmutable. Configuración de la herramienta Esta configuración se comparte entre todas las herramientas.

Ejemplo de solicitud

Básico

Python

from google import genai
from google.genai import types

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

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-1.5-flash-001";

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-1.5-flash-001"
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)

Almeja

wget https://storage.googleapis.com/generativeai-downloads/data/a11.txt
echo '{
  "model": "models/gemini-1.5-flash-001",
  "contents":[
    {
      "parts":[
        {
          "inline_data": {
            "mime_type":"text/plain",
            "data": "'$(base64 $B64FLAGS a11.txt)'"
          }
        }
      ],
    "role": "user"
    }
  ],
  "systemInstruction": {
    "parts": [
      {
        "text": "You are an expert at analyzing transcripts."
      }
    ]
  },
  "ttl": "300s"
}' > request.json

curl -X POST "https://generativelanguage.googleapis.com/v1beta/cachedContents?key=$GEMINI_API_KEY" \
 -H 'Content-Type: application/json' \
 -d @request.json \
 > cache.json

CACHE_NAME=$(cat cache.json | grep '"name":' | cut -d '"' -f 4 | head -n 1)

curl -X POST "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash-001:generateContent?key=$GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
      "contents": [
        {
          "parts":[{
            "text": "Please summarize this transcript"
          }],
          "role": "user"
        },
      ],
      "cachedContent": "'$CACHE_NAME'"
    }'

Nombre del remitente

Python

from google import genai
from google.genai import types

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

cache = client.caches.create(
    model=model_name,
    config=types.CreateCachedContentConfig(
        contents=[document],
        system_instruction="You are an expert analyzing transcripts.",
    ),
)
cache_name = cache.name  # Save the name for later

# Later retrieve the cache
cache = client.caches.get(name=cache_name)
response = client.models.generate_content(
    model=model_name,
    contents="Find a lighthearted moment from 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-1.5-flash-001";

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.",
  },
});
const cacheName = cache.name; // Save the name for later

// Later retrieve the cache
const retrievedCache = await ai.caches.get({ name: cacheName });
const response = await ai.models.generateContent({
  model: modelName,
  contents: "Find a lighthearted moment from this transcript",
  config: { cachedContent: retrievedCache.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-1.5-flash-001"
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)
}
cacheName := cache.Name

// Later retrieve the cache.
cache, err = client.Caches.Get(ctx, cacheName, &genai.GetCachedContentConfig{})
if err != nil {
	log.Fatal(err)
}

response, err := client.Models.GenerateContent(
	ctx,
	modelName,
	genai.Text("Find a lighthearted moment from this transcript"),
	&genai.GenerateContentConfig{
		CachedContent: cache.Name,
	},
)
if err != nil {
	log.Fatal(err)
}
fmt.Println("Response from cache (create from name):")
printResponse(response)

Desde el chat

Python

from google import genai
from google.genai import types

client = genai.Client()
model_name = "gemini-1.5-flash-001"
system_instruction = "You are an expert analyzing transcripts."

# Create a chat session with the given system instruction.
chat = client.chats.create(
    model=model_name,
    config=types.GenerateContentConfig(system_instruction=system_instruction),
)
document = client.files.upload(file=media / "a11.txt")

response = chat.send_message(
    message=["Hi, could you summarize this transcript?", document]
)
print("\n\nmodel:  ", response.text)
response = chat.send_message(
    message=["Okay, could you tell me more about the trans-lunar injection"]
)
print("\n\nmodel:  ", response.text)

# To cache the conversation so far, pass the chat history as the list of contents.
cache = client.caches.create(
    model=model_name,
    config={
        "contents": chat.get_history(),
        "system_instruction": system_instruction,
    },
)
# Continue the conversation using the cached content.
chat = client.chats.create(
    model=model_name,
    config=types.GenerateContentConfig(cached_content=cache.name),
)
response = chat.send_message(
    message="I didn't understand that last part, could you explain it in simpler language?"
)
print("\n\nmodel:  ", 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 modelName = "gemini-1.5-flash-001";
const systemInstruction = "You are an expert analyzing transcripts.";

// Create a chat session with the system instruction.
const chat = ai.chats.create({
  model: modelName,
  config: { systemInstruction: systemInstruction },
});
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);

let response = await chat.sendMessage({
  message: createUserContent([
    "Hi, could you summarize this transcript?",
    createPartFromUri(document.uri, document.mimeType),
  ]),
});
console.log("\n\nmodel:", response.text);

response = await chat.sendMessage({
  message: "Okay, could you tell me more about the trans-lunar injection",
});
console.log("\n\nmodel:", response.text);

// To cache the conversation so far, pass the chat history as the list of contents.
const chatHistory = chat.getHistory();
const cache = await ai.caches.create({
  model: modelName,
  config: {
    contents: chatHistory,
    systemInstruction: systemInstruction,
  },
});

// Continue the conversation using the cached content.
const chatWithCache = ai.chats.create({
  model: modelName,
  config: { cachedContent: cache.name },
});
response = await chatWithCache.sendMessage({
  message:
    "I didn't understand that last part, could you explain it in simpler language?",
});
console.log("\n\nmodel:", 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-1.5-flash-001"
systemInstruction := "You are an expert analyzing transcripts."

// Create initial chat with a system instruction.
chat, err := client.Chats.Create(ctx, modelName, &genai.GenerateContentConfig{
	SystemInstruction: genai.NewContentFromText(systemInstruction, genai.RoleUser),
}, nil)
if err != nil {
	log.Fatal(err)
}

document, err := client.Files.UploadFromPath(
	ctx, 
	filepath.Join(getMedia(), "a11.txt"), 
	&genai.UploadFileConfig{
		MIMEType : "text/plain",
	},
)
if err != nil {
	log.Fatal(err)
}

// Send first message with the transcript.
parts := make([]genai.Part, 2)
parts[0] = genai.Part{Text: "Hi, could you summarize this transcript?"}
parts[1] = genai.Part{
	FileData: &genai.FileData{
		FileURI :      document.URI,
		MIMEType: document.MIMEType,
	},
}

// Send chat message.
resp, err := chat.SendMessage(ctx, parts...)
if err != nil {
	log.Fatal(err)
}
fmt.Println("\n\nmodel: ", resp.Text())

resp, err = chat.SendMessage(
	ctx, 
	genai.Part{
		Text: "Okay, could you tell me more about the trans-lunar injection",
	},
)
if err != nil {
	log.Fatal(err)
}
fmt.Println("\n\nmodel: ", resp.Text())

// To cache the conversation so far, pass the chat history as the list of contents.
cache, err := client.Caches.Create(ctx, modelName, &genai.CreateCachedContentConfig{
	Contents:          chat.History(false),
	SystemInstruction: genai.NewContentFromText(systemInstruction, genai.RoleUser),
})
if err != nil {
	log.Fatal(err)
}

// Continue the conversation using the cached history.
chat, err = client.Chats.Create(ctx, modelName, &genai.GenerateContentConfig{
	CachedContent: cache.Name,
}, nil)
if err != nil {
	log.Fatal(err)
}

resp, err = chat.SendMessage(
	ctx, 
	genai.Part{
		Text: "I didn't understand that last part, could you explain it in simpler language?",
	},
)
if err != nil {
	log.Fatal(err)
}
fmt.Println("\n\nmodel: ", resp.Text())

Cuerpo de la respuesta

Si el proceso se realiza de forma correcta, el cuerpo de la respuesta contiene una instancia recién creada de CachedContent.

Método: cachedContents.list

Enumera los CachedContents.

Extremo

get https://generativelanguage.googleapis.com/v1beta/cachedContents

Parámetros de consulta

pageSize integer

Opcional. Es la cantidad máxima de contenido almacenado en caché que se devolverá. El servicio puede mostrar menos que este valor. Si no se especifica, se devolverá una cantidad predeterminada de elementos (inferior al máximo). El valor máximo es 1,000; valores superiores a 1,000 se convertirán en 1,000.

pageToken string

Opcional. Un token de página, recibido desde una llamada cachedContents.list anterior. Proporciona esto para recuperar la página siguiente.

Cuando se pagina, todos los demás parámetros proporcionados a cachedContents.list deben coincidir con la llamada que proporcionó el token de la página.

Cuerpo de la solicitud

El cuerpo de la solicitud debe estar vacío.

Cuerpo de la respuesta

Respuesta con la lista de CachedContents.

Si se ejecuta correctamente, el cuerpo de la respuesta contendrá datos con la siguiente estructura:

Campos
cachedContents[] object (CachedContent)

Es una lista del contenido almacenado en caché.

nextPageToken string

Un token, que se puede enviar como pageToken para recuperar la página siguiente. Si se omite este campo, no habrá páginas siguientes.

Representación JSON
{
  "cachedContents": [
    {
      object (CachedContent)
    }
  ],
  "nextPageToken": string
}

Método: cachedContents.get

Lee el recurso CachedContent.

Extremo

get https://generativelanguage.googleapis.com/v1beta/{name=cachedContents/*}

Parámetros de ruta

name string

Obligatorio. Es el nombre del recurso que hace referencia a la entrada de caché de contenido. Formato: cachedContents/{id}. Toma la forma cachedContents/{cachedcontent}.

Cuerpo de la solicitud

El cuerpo de la solicitud debe estar vacío.

Ejemplo de solicitud

Python

from google import genai

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

cache = client.caches.create(
    model=model_name,
    config={
        "contents": [document],
        "system_instruction": "You are an expert analyzing transcripts.",
    },
)
print(client.caches.get(name=cache.name))

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-1.5-flash-001";

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.",
  },
});
const retrievedCache = await ai.caches.get({ name: cache.name });
console.log("Retrieved Cache:", retrievedCache);

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-1.5-flash-001"
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)
}

cache, err = client.Caches.Get(ctx, cache.Name, &genai.GetCachedContentConfig{})
if err != nil {
	log.Fatal(err)
}
fmt.Println("Retrieved cache:")
fmt.Println(cache)

Almeja

curl "https://generativelanguage.googleapis.com/v1beta/$CACHE_NAME?key=$GEMINI_API_KEY"

Cuerpo de la respuesta

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

Método: cachedContents.patch

Actualiza el recurso CachedContent (solo se puede actualizar la fecha de vencimiento).

Extremo

patch https://generativelanguage.googleapis.com/v1beta/{cachedContent.name=cachedContents/*}

PATCH https://generativelanguage.googleapis.com/v1beta/{cachedContent.name=cachedContents/*}

Parámetros de ruta

cachedContent.name string

Solo salida. Identificador. Nombre del recurso que hace referencia al contenido almacenado en caché. Formato: cachedContents/{id}. Toma la forma cachedContents/{cachedcontent}.

Parámetros de consulta

updateMask string (FieldMask format)

La lista de campos que se deben actualizar.

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

Cuerpo de la solicitud

El cuerpo de la solicitud contiene una instancia de CachedContent.

Campos
expiration Union type
Especifica cuándo vencerá este recurso. expiration puede ser una de las siguientes opciones:
expireTime string (Timestamp format)

Marca de tiempo en UTC del momento en que este recurso se consideró vencido. Esto siempre se proporciona en la salida, sin importar si se envió en la entrada.

Usa el RFC 3339, en el que el resultado generado siempre se normaliza según la zona horaria 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".

ttl string (Duration format)

Solo entrada. Es el nuevo TTL para este recurso (solo entrada).

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

Ejemplo de solicitud

Python

from google import genai
from google.genai import types
import datetime

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

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

# Update the cache's time-to-live (ttl)
ttl = f"{int(datetime.timedelta(hours=2).total_seconds())}s"
client.caches.update(
    name=cache.name, config=types.UpdateCachedContentConfig(ttl=ttl)
)
print(f"After update:\n {cache}")

# Alternatively, update the expire_time directly
# Update the expire_time directly in valid RFC 3339 format (UTC with a "Z" suffix)
expire_time = (
    (
        datetime.datetime.now(datetime.timezone.utc)
        + datetime.timedelta(minutes=15)
    )
    .isoformat()
    .replace("+00:00", "Z")
)
client.caches.update(
    name=cache.name,
    config=types.UpdateCachedContentConfig(expire_time=expire_time),
)

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-1.5-flash-001";

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

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

// Update the cache's time-to-live (ttl)
const ttl = `${2 * 3600}s`; // 2 hours in seconds
cache = await ai.caches.update({
  name: cache.name,
  config: { ttl },
});
console.log("After update (TTL):", cache);

// Alternatively, update the expire_time directly (in RFC 3339 format with a "Z" suffix)
const expireTime = new Date(Date.now() + 15 * 60000)
  .toISOString()
  .replace(/\.\d{3}Z$/, "Z");
cache = await ai.caches.update({
  name: cache.name,
  config: { expireTime: expireTime },
});
console.log("After update (expire_time):", cache);

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-1.5-flash-001"
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)
}

_, err = client.Caches.Delete(ctx, cache.Name, &genai.DeleteCachedContentConfig{})
if err != nil {
	log.Fatal(err)
}
fmt.Println("Cache deleted:", cache.Name)

Almeja

curl -X PATCH "https://generativelanguage.googleapis.com/v1beta/$CACHE_NAME?key=$GEMINI_API_KEY" \
 -H 'Content-Type: application/json' \
 -d '{"ttl": "600s"}'

Cuerpo de la respuesta

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

Método: cachedContents.delete

Borra el recurso CachedContent.

Extremo

delete https://generativelanguage.googleapis.com/v1beta/{name=cachedContents/*}

Parámetros de ruta

name string

Obligatorio. Es el nombre del recurso que hace referencia a la entrada de la caché de contenido. Formato: cachedContents/{id}. Toma la forma cachedContents/{cachedcontent}.

Cuerpo de la solicitud

El cuerpo de la solicitud debe estar vacío.

Ejemplo de solicitud

Python

from google import genai

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

cache = client.caches.create(
    model=model_name,
    config={
        "contents": [document],
        "system_instruction": "You are an expert analyzing transcripts.",
    },
)
client.caches.delete(name=cache.name)

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-1.5-flash-001";

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.",
  },
});
await ai.caches.delete({ name: cache.name });
console.log("Cache deleted:", cache.name);

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-1.5-flash-001"
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)
}

_, err = client.Caches.Delete(ctx, cache.Name, &genai.DeleteCachedContentConfig{})
if err != nil {
	log.Fatal(err)
}
fmt.Println("Cache deleted:", cache.Name)

Almeja

curl -X DELETE "https://generativelanguage.googleapis.com/v1beta/$CACHE_NAME?key=$GEMINI_API_KEY"

Cuerpo de la respuesta

Si se ejecuta correctamente, el cuerpo de la respuesta es un objeto JSON vacío.

Recurso de REST: cachedContents

Recurso: CachedContent

Es el contenido que se procesó previamente y que se puede usar en solicitudes posteriores a GenerativeService.

El contenido almacenado en caché solo se puede usar con el modelo para el que se creó.

Campos
contents[] object (Content)

Opcional. Solo entrada. Inmutable. Es el contenido que se almacenará en caché.

tools[] object (Tool)

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

createTime string (Timestamp format)

Solo salida. Es la fecha y hora de creación de la entrada de caché.

Usa el RFC 3339, en el que el resultado generado siempre se normaliza según la zona horaria 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".

updateTime string (Timestamp format)

Solo salida. Fecha y hora en UTC en la que se actualizó la entrada de caché por última vez.

Usa el RFC 3339, en el que el resultado generado siempre se normaliza según la zona horaria 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".

usageMetadata object (UsageMetadata)

Solo salida. Son metadatos sobre el uso del contenido almacenado en caché.

expiration Union type
Especifica cuándo vencerá este recurso. expiration puede ser una de las siguientes opciones:
expireTime string (Timestamp format)

Marca de tiempo en UTC del momento en que este recurso se consideró vencido. Esto siempre se proporciona en la salida, sin importar si se envió en la entrada.

Usa el RFC 3339, en el que el resultado generado siempre se normaliza según la zona horaria 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".

ttl string (Duration format)

Solo entrada. Es el nuevo TTL para este recurso (solo entrada).

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

name string

Solo salida. Identificador. Nombre del recurso que hace referencia al contenido almacenado en caché. Formato: cachedContents/{id}

displayName string

Opcional. Inmutable. Es el nombre visible significativo generado por el usuario del contenido almacenado en caché. Máximo de 128 caracteres Unicode.

model string

Obligatorio. Inmutable. Nombre del Model que se usará para el contenido almacenado en caché. Formato: models/{model}

systemInstruction object (Content)

Opcional. Solo entrada. Inmutable. Es la instrucción del sistema establecida por el desarrollador. Actualmente, solo texto.

toolConfig object (ToolConfig)

Opcional. Solo entrada. Inmutable. Configuración de la herramienta Esta configuración se comparte entre todas las herramientas.

Representación JSON
{
  "contents": [
    {
      object (Content)
    }
  ],
  "tools": [
    {
      object (Tool)
    }
  ],
  "createTime": string,
  "updateTime": string,
  "usageMetadata": {
    object (UsageMetadata)
  },

  // expiration
  "expireTime": string,
  "ttl": string
  // Union type
  "name": string,
  "displayName": string,
  "model": string,
  "systemInstruction": {
    object (Content)
  },
  "toolConfig": {
    object (ToolConfig)
  }
}

Contenido

Es el tipo de datos estructurados base que incluye contenido de varias partes de un mensaje.

Un Content incluye un campo role que designa al productor del Content y un campo parts que contiene datos de varias partes que incluyen el contenido del turno del mensaje.

Campos
parts[] object (Part)

Parts ordenados que constituyen un solo mensaje. Las partes pueden tener diferentes tipos de MIME.

role string

Opcional. Es el productor del contenido. Debe ser "user" o "model".

Es útil establecerlo para conversaciones de varios turnos. De lo contrario, se puede dejar en blanco o sin configurar.

Representación JSON
{
  "parts": [
    {
      object (Part)
    }
  ],
  "role": string
}

Pieza

Es un tipo de datos que contiene contenido multimedia que forma parte de un mensaje Content de varias partes.

Un Part consta de datos que tienen un tipo de datos asociado. Un Part solo puede contener uno de los tipos aceptados en Part.data.

Un Part debe tener un tipo de MIME de IANA fijo que identifique el tipo y el subtipo del medio si el campo inlineData se completa con bytes sin procesar.

Campos
thought boolean

Opcional. Indica si el modelo generó la parte.

thoughtSignature string (bytes format)

Opcional. Es una firma opaca para el pensamiento, de modo que se pueda reutilizar en solicitudes posteriores.

String codificada en base64.

data Union type
data puede ser una de las siguientes opciones:
text string

Texto intercalado.

inlineData object (Blob)

Son los bytes de contenido multimedia intercalado.

functionCall object (FunctionCall)

Un FunctionCall predicho que muestra el modelo que contiene una cadena que representa el FunctionDeclaration.name con los argumentos y sus valores.

functionResponse object (FunctionResponse)

La salida del resultado de una FunctionCall que contiene una cadena que representa el FunctionDeclaration.name y un objeto JSON estructurado que contiene cualquier resultado de la función se usa como contexto para el modelo.

fileData object (FileData)

Datos basados en URI.

executableCode object (ExecutableCode)

Es el código que genera el modelo y que se debe ejecutar.

codeExecutionResult object (CodeExecutionResult)

Es el resultado de la ejecución de ExecutableCode.

metadata Union type
Controla el procesamiento previo adicional de los datos. metadata puede ser una de las siguientes opciones:
videoMetadata object (VideoMetadata)

Opcional. Metadatos del video. Los metadatos solo se deben especificar mientras los datos de video se presentan en inlineData o fileData.

Representación JSON
{
  "thought": boolean,
  "thoughtSignature": string,

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

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

BLOB

Son los bytes sin procesar del contenido multimedia.

El texto no se debe enviar como bytes sin procesar. Usa el campo "text".

Campos
mimeType string

Tipo de MIME estándar de IANA de los datos fuente. Ejemplos: - image/png - image/jpeg Si se proporciona un tipo de MIME no admitido, se mostrará un error. Para obtener una lista completa de los tipos admitidos, consulta Formatos de archivo admitidos.

data string (bytes format)

Son los bytes sin procesar para los formatos de medios.

String codificada en base64.

Representación JSON
{
  "mimeType": string,
  "data": string
}

FunctionCall

Un FunctionCall predicho que muestra el modelo que contiene una cadena que representa el FunctionDeclaration.name con los argumentos y sus valores.

Campos
id string

Opcional. Es el ID único de la llamada a la función. Si se propaga, es el cliente que ejecutará el functionCall y devolverá la respuesta con el id coincidente.

name string

Obligatorio. El nombre de la función a la que se llamará. 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 y guiones, con una longitud máxima de 63.

args object (Struct format)

Opcional. Los parámetros y valores de la función en formato de objeto JSON

Representación JSON
{
  "id": string,
  "name": string,
  "args": {
    object
  }
}

FunctionResponse

La salida del resultado de una FunctionCall que contiene una cadena que representa el FunctionDeclaration.name y un objeto JSON estructurado que contiene cualquier resultado de la función se usa como contexto para el modelo. Esto debería contener el resultado de unFunctionCall basado en la predicción del modelo.

Campos
id string

Opcional. Es el ID de la llamada a la función para la que se genera esta respuesta. El cliente lo completa para que coincida con la llamada a función correspondiente id.

name string

Obligatorio. El nombre de la función a la que se llamará. 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 y guiones, con una longitud máxima de 63.

response object (Struct format)

Obligatorio. La respuesta de la función en formato de objeto JSON.

willContinue boolean

Opcional. Indica que la llamada a función continúa y que se devolverán más respuestas, lo que convierte la llamada a función en un generador. Solo se aplica a las llamadas a funciones NON_BLOCKING y se ignora en otros casos. Si se establece como falso, no se tendrán en cuenta las respuestas futuras. Se permite devolver un response vacío con willContinue=False para indicar que finalizó la llamada a la función. Es posible que esto aún active la generación del modelo. Para evitar que se active la generación y finalizar la llamada a la función, también establece scheduling en SILENT.

scheduling enum (Scheduling)

Opcional. Especifica cómo se debe programar la respuesta en la conversación. Solo se aplica a las llamadas a funciones NON_BLOCKING y, de lo contrario, se ignora. El valor predeterminado es WHEN_IDLE.

Representación JSON
{
  "id": string,
  "name": string,
  "response": {
    object
  },
  "willContinue": boolean,
  "scheduling": enum (Scheduling)
}

Programación

Especifica cómo se debe programar la respuesta en la conversación.

Enumeraciones
SCHEDULING_UNSPECIFIED Este valor no se usa.
SILENT Solo agrega el resultado al contexto de la conversación, no interrumpas ni actives la generación.
WHEN_IDLE Agrega el resultado al contexto de la conversación y solicita que se genere la respuesta sin interrumpir la generación en curso.
INTERRUPT Agrega el resultado al contexto de la conversación, interrumpe la generación en curso y solicita que se genere un resultado.

FileData

Datos basados en URI.

Campos
mimeType string

Opcional. Tipo de MIME estándar de IANA de los datos fuente.

fileUri string

Obligatorio. Es el URI.

Representación JSON
{
  "mimeType": string,
  "fileUri": string
}

ExecutableCode

Es el código que genera el modelo y que se debe ejecutar, y el resultado que se devuelve al modelo.

Solo se genera cuando se usa la herramienta CodeExecution, en la que el código se ejecutará automáticamente y también se generará un CodeExecutionResult correspondiente.

Campos
language enum (Language)

Obligatorio. Lenguaje de programación de code.

code string

Obligatorio. Es el código que se ejecutará.

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

Idioma

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

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

CodeExecutionResult

Es el resultado de la ejecución de ExecutableCode.

Solo se genera cuando se usa CodeExecution y siempre sigue a un part que contiene el ExecutableCode.

Campos
outcome enum (Outcome)

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

output string

Opcional. Contiene stdout cuando la ejecución del código es exitosa; de lo contrario, contiene stderr o alguna otra descripción.

Representación JSON
{
  "outcome": enum (Outcome),
  "output": string
}

Resultado

Es la enumeración de los posibles resultados de la ejecución del código.

Enumeraciones
OUTCOME_UNSPECIFIED Indica que no se especificó el estado. No se debe usar este valor.
OUTCOME_OK La ejecución del código se completó correctamente.
OUTCOME_FAILED La ejecución del código finalizó, pero con un error. stderr debe contener el motivo.
OUTCOME_DEADLINE_EXCEEDED La ejecución del código se realizó durante demasiado tiempo y se canceló. Puede haber o no un resultado parcial presente.

VideoMetadata

Son los metadatos que describen el contenido del video de entrada.

Campos
startOffset string (Duration format)

Opcional. El desplazamiento inicial del video.

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

endOffset string (Duration format)

Opcional. El desplazamiento final del video.

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

fps number

Opcional. Es la velocidad de fotogramas del video que se envía al modelo. Si no se especifica, el valor predeterminado será 1.0. El rango de FPS es (0.0, 24.0].

Representación JSON
{
  "startOffset": string,
  "endOffset": string,
  "fps": number
}

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.

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 cambio, 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 contexto de generación Content.role "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.

urlContext object (UrlContext)

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

Representación JSON
{
  "functionDeclarations": [
    {
      object (FunctionDeclaration)
    }
  ],
  "googleSearchRetrieval": {
    object (GoogleSearchRetrieval)
  },
  "codeExecution": {
    object (CodeExecution)
  },
  "googleSearch": {
    object (GoogleSearch)
  },
  "urlContext": {
    object (UrlContext)
  }
}

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 y guiones, con una longitud máxima de 63.

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 de parámetro 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
}

Esquema

El objeto Schema permite definir los tipos de datos de entrada y salida. Estos tipos pueden ser objetos, pero también primitivos y arreglos. 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. Solo se usa para tipos de datos primitivos. Formatos admitidos: Para el tipo NUMBER: float, double. Para el tipo INTEGER: int32, int64. Para el tipo STRING: enum, fecha y hora

title string

Opcional. Es el título del esquema.

description string

Opcional. Es una breve descripción del parámetro. Puede 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 manera : {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.

Es 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 de 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.

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

Comportamiento

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

Enumeraciones
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 las funciones a medida que estén disponibles y, al mismo tiempo, mantendrá la conversación entre el usuario y el modelo.

GoogleSearchRetrieval

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

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.

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

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. Herramienta para admitir la Búsqueda de Google en Model. 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).

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

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 ningún momento). Cuando no se especifican el inicio y el final, el intervalo coincide con cualquier momento.

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 RFC 3339, en el que el resultado generado siempre se normaliza según la zona horaria 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 RFC 3339, en el que el resultado generado siempre se normaliza según la zona horaria 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
}

UrlContext

Este tipo no tiene campos.

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

ToolConfig

Es la configuración de la herramienta que contiene parámetros para especificar el uso de Tool en la solicitud.

Campos
functionCallingConfig object (FunctionCallingConfig)

Opcional. Es la configuración de la llamada a función.

Representación JSON
{
  "functionCallingConfig": {
    object (FunctionCallingConfig)
  }
}

FunctionCallingConfig

Es la configuración para especificar el comportamiento de las llamadas a funciones.

Campos
mode enum (Mode)

Opcional. Especifica el modo en el que se debe ejecutar la llamada a función. Si no se especifica, el valor predeterminado se establecerá en AUTO.

allowedFunctionNames[] string

Opcional. Es un conjunto de nombres de funciones que, cuando se proporcionan, limitan las funciones que llamará el modelo.

Solo se debe establecer cuando el modo es ANY. Los nombres de las funciones deben coincidir con [FunctionDeclaration.name]. Con el modo establecido en ANY, el modelo predecirá una llamada a función del conjunto de nombres de función proporcionado.

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

Modo

Define el comportamiento de ejecución para la llamada a funciones definiendo el modo de ejecución.

Enumeraciones
MODE_UNSPECIFIED Modo de llamada a función sin especificar. No se debe usar este valor.
AUTO Comportamiento predeterminado del modelo: El modelo decide si predecir una llamada a función o una respuesta de lenguaje natural.
ANY El modelo está restringido para predecir siempre solo una llamada a función. Si se configura "allowedFunctionNames", la llamada a función predicha se limitará a cualquiera de los valores de "allowedFunctionNames". De lo contrario, la llamada a función predicha será cualquiera de los valores de "functionDeclarations" proporcionados.
NONE El modelo no predecirá ninguna llamada a función. El comportamiento del modelo es el mismo que cuando no se pasan declaraciones de funciones.
VALIDATED El modelo decide si predecir una llamada a función o una respuesta de lenguaje natural, pero validará las llamadas a función con la decodificación restringida.

UsageMetadata

Son metadatos sobre el uso del contenido almacenado en caché.

Campos
totalTokenCount integer

Es la cantidad total de tokens que consume el contenido almacenado en caché.

Representación JSON
{
  "totalTokenCount": integer
}