Caching

Кэширование контекста позволяет сохранять и повторно использовать предварительно вычисленные входные токены, которые вы хотите использовать повторно, например, задавая разные вопросы об одном и том же медиафайле. Это может привести к экономии средств и скорости, в зависимости от использования. Подробное введение см. в руководстве по кэшированию контекста .

Метод: cachedContents.create

Создает ресурс CachedContent.

Конечная точка

пост https: / /generativelanguage.googleapis.com /v1beta /cachedContents

Текст запроса

Тело запроса содержит экземпляр CachedContent .

Поля
contents[] object ( Content )

Необязательно. Только ввод. Неизменяемый. Содержимое для кэширования.

tools[] object ( Tool )

Необязательно. Только ввод. Неизменяемый. Список Tools модель может использовать для генерации следующего ответа

expiration Union type
Указывает, когда истекает срок действия этого ресурса. expiration может быть только одним из следующих:
строка expireTime string ( Timestamp format)

Временная метка в UTC, когда этот ресурс считается просроченным. Она всегда предоставляется на выходе, независимо от того, что было отправлено на входе.

Использует RFC 3339, где сгенерированный вывод всегда будет Z-нормализованным и использует 0, 3, 6 или 9 дробных цифр. Смещения, отличные от "Z", также принимаются. Примеры: "2014-10-02T15:01:23Z" , "2014-10-02T15:01:23.045123456Z" или "2014-10-02T15:01:23+05:30" .

строка ttl string ( Duration format)

Только ввод. Новый TTL для этого ресурса, только ввод.

Длительность в секундах с дробной частью до девяти цифр, заканчивающаяся на ' s '. Пример: "3.5s" .

displayName string

Необязательно. Неизменяемо. Созданное пользователем осмысленное отображаемое имя кэшированного контента. Максимум 128 символов Unicode.

model string

Обязательно. Неизменяемо. Имя Model , используемой для кэшированного контента Формат: models/{model}

object ( Content ) systemInstruction (Содержимое)

Необязательно. Только ввод. Неизменяемо. Разработчик устанавливает системную инструкцию. В настоящее время только текст.

объект toolConfig object ( ToolConfig )

Необязательно. Только ввод. Неизменяемый. Конфигурация инструмента. Эта конфигурация является общей для всех инструментов.

Пример запроса

Базовый

Питон

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

Идти

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, "user"),
}
cache, err := client.Caches.Create(ctx, modelName, &genai.CreateCachedContentConfig{
	Contents: contents,
	SystemInstruction: genai.NewContentFromText(
		"You are an expert analyzing transcripts.", "user",
	),
})
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)

Оболочка

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

От имени

Питон

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

Идти

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, "user"),
}
cache, err := client.Caches.Create(ctx, modelName, &genai.CreateCachedContentConfig{
	Contents:          contents,
	SystemInstruction: genai.NewContentFromText(
		"You are an expert analyzing transcripts.", "user",
	),
})
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)

Из чата

Питон

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

Идти

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, "user"),
}, 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, "user"),
})
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())

Тело ответа

В случае успеха тело ответа содержит вновь созданный экземпляр CachedContent .

Метод: cachedContents.list

Список кэшированного содержимого.

Конечная точка

получить https: / /generativelanguage.googleapis.com /v1beta /cachedContents

Параметры запроса

pageSize integer

Необязательно. Максимальное количество кэшированного содержимого для возврата. Служба может вернуть меньше этого значения. Если не указано, будет возвращено некоторое количество элементов по умолчанию (ниже максимального). Максимальное значение — 1000; значения выше 1000 будут приведены к 1000.

string pageToken

Необязательно. Токен страницы, полученный из предыдущего вызова cachedContents.list . Укажите это для получения последующей страницы.

При разбиении на страницы все остальные параметры, предоставленные cachedContents.list , должны соответствовать вызову, предоставившем токен страницы.

Текст запроса

Тело запроса должно быть пустым.

Тело ответа

Ответ со списком CachedContents.

В случае успеха тело ответа содержит данные со следующей структурой:

Поля
объект cachedContents[] object ( CachedContent )

Список кэшированного содержимого.

string nextPageToken

Токен, который можно отправить как pageToken для получения следующей страницы. Если это поле пропущено, то последующих страниц нет.

JSON-представление
{
  "cachedContents": [
    {
      object (CachedContent)
    }
  ],
  "nextPageToken": string
}

Метод: cachedContents.get

Читает ресурс CachedContent.

Конечная точка

получить https: / /generativelanguage.googleapis.com /v1beta /{name=cachedContents /*}

Параметры пути

name string

Обязательно. Имя ресурса, ссылающееся на запись кэша контента. Формат: cachedContents/{id} Принимает форму cachedContents/{cachedcontent} .

Текст запроса

Тело запроса должно быть пустым.

Пример запроса

Питон

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

Идти

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, "user"),
}

cache, err := client.Caches.Create(ctx, modelName, &genai.CreateCachedContentConfig{
	Contents:          contents,
	SystemInstruction: genai.NewContentFromText(
		"You are an expert analyzing transcripts.", "user",
	),
})
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)

Оболочка

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

Тело ответа

В случае успеха тело ответа содержит экземпляр CachedContent .

Метод: cachedContents.patch

Обновляет ресурс CachedContent (обновляется только срок действия).

Конечная точка

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

Параметры пути

cachedContent.name string

Только вывод. Идентификатор. Имя ресурса, ссылающееся на кэшированное содержимое. Формат: cachedContents/{id} Принимает форму cachedContents/{cachedcontent} .

Параметры запроса

string ( FieldMask format) updateMask (формат FieldMask)

Список полей для обновления.

Это список полностью определенных имен полей, разделенных запятыми. Пример: "user.displayName,photo" .

Текст запроса

Тело запроса содержит экземпляр CachedContent .

Поля
expiration Union type
Указывает, когда истекает срок действия этого ресурса. expiration может быть только одним из следующих:
строка expireTime string ( Timestamp format)

Временная метка в UTC, когда этот ресурс считается просроченным. Она всегда предоставляется на выходе, независимо от того, что было отправлено на входе.

Использует RFC 3339, где сгенерированный вывод всегда будет Z-нормализованным и использует 0, 3, 6 или 9 дробных цифр. Смещения, отличные от "Z", также принимаются. Примеры: "2014-10-02T15:01:23Z" , "2014-10-02T15:01:23.045123456Z" или "2014-10-02T15:01:23+05:30" .

строка ttl string ( Duration format)

Только ввод. Новый TTL для этого ресурса, только ввод.

Длительность в секундах с дробной частью до девяти цифр, заканчивающаяся на ' s '. Пример: "3.5s" .

Пример запроса

Питон

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

Идти

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, "user"),
}

cache, err := client.Caches.Create(ctx, modelName, &genai.CreateCachedContentConfig{
	Contents:          contents,
	SystemInstruction: genai.NewContentFromText(
		"You are an expert analyzing transcripts.", "user",
	),
})
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)

Оболочка

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

Тело ответа

В случае успеха тело ответа содержит экземпляр CachedContent .

Метод: cachedContents.delete

Удаляет ресурс CachedContent.

Конечная точка

удалить https: / /generativelanguage.googleapis.com /v1beta /{name=cachedContents /*}

Параметры пути

name string

Обязательно. Имя ресурса, ссылающееся на запись кэша контента Формат: cachedContents/{id} Принимает форму cachedContents/{cachedcontent} .

Текст запроса

Тело запроса должно быть пустым.

Пример запроса

Питон

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

Идти

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, "user"),
}

cache, err := client.Caches.Create(ctx, modelName, &genai.CreateCachedContentConfig{
	Contents:          contents,
	SystemInstruction: genai.NewContentFromText(
		"You are an expert analyzing transcripts.", "user",
	),
})
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)

Оболочка

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

Тело ответа

В случае успеха тело ответа представляет собой пустой объект JSON.

Ресурс REST: cachedContents

Ресурс: CachedContent

Контент, который был предварительно обработан и может быть использован в последующем запросе к GenerativeService.

Кэшированный контент можно использовать только с той моделью, для которой он был создан.

Поля
contents[] object ( Content )

Необязательно. Только ввод. Неизменяемый. Содержимое для кэширования.

tools[] object ( Tool )

Необязательно. Только ввод. Неизменяемый. Список Tools модель может использовать для генерации следующего ответа

createTime string ( Timestamp format)

Только вывод. Время создания записи кэша.

Использует RFC 3339, где сгенерированный вывод всегда будет Z-нормализованным и использует 0, 3, 6 или 9 дробных цифр. Смещения, отличные от "Z", также принимаются. Примеры: "2014-10-02T15:01:23Z" , "2014-10-02T15:01:23.045123456Z" или "2014-10-02T15:01:23+05:30" .

строка updateTime string ( Timestamp format)

Только вывод. Когда запись кэша последний раз обновлялась по времени UTC.

Использует RFC 3339, где сгенерированный вывод всегда будет Z-нормализованным и использует 0, 3, 6 или 9 дробных цифр. Смещения, отличные от "Z", также принимаются. Примеры: "2014-10-02T15:01:23Z" , "2014-10-02T15:01:23.045123456Z" или "2014-10-02T15:01:23+05:30" .

объект usageMetadata object ( UsageMetadata )

Только вывод. Метаданные об использовании кэшированного контента.

expiration Union type
Указывает, когда истекает срок действия этого ресурса. expiration может быть только одним из следующих:
строка expireTime string ( Timestamp format)

Временная метка в UTC, когда этот ресурс считается просроченным. Она всегда предоставляется на выходе, независимо от того, что было отправлено на входе.

Использует RFC 3339, где сгенерированный вывод всегда будет Z-нормализованным и использует 0, 3, 6 или 9 дробных цифр. Смещения, отличные от "Z", также принимаются. Примеры: "2014-10-02T15:01:23Z" , "2014-10-02T15:01:23.045123456Z" или "2014-10-02T15:01:23+05:30" .

строка ttl string ( Duration format)

Только ввод. Новый TTL для этого ресурса, только ввод.

Длительность в секундах с дробной частью до девяти цифр, заканчивающаяся на ' s '. Пример: "3.5s" .

name string

Только вывод. Идентификатор. Имя ресурса, ссылающееся на кэшированное содержимое. Формат: cachedContents/{id}

displayName string

Необязательно. Неизменяемо. Созданное пользователем осмысленное отображаемое имя кэшированного контента. Максимум 128 символов Unicode.

model string

Обязательно. Неизменяемо. Имя Model , используемой для кэшированного контента Формат: models/{model}

object ( Content ) systemInstruction (Содержимое)

Необязательно. Только ввод. Неизменяемо. Разработчик устанавливает системную инструкцию. В настоящее время только текст.

объект toolConfig object ( ToolConfig )

Необязательно. Только ввод. Неизменяемый. Конфигурация инструмента. Эта конфигурация является общей для всех инструментов.

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

Содержание

Базовый структурированный тип данных, содержащий многокомпонентное содержимое сообщения.

Content включает поле role , обозначающее производителя Content , и поле parts , содержащее многокомпонентные данные, включающие содержимое поворота сообщения.

Поля
parts[] object ( Part )

Упорядоченные Parts , составляющие единое сообщение. Части могут иметь разные типы MIME.

string role

Необязательно. Производитель контента. Должен быть либо «пользователь», либо «модель».

Полезно устанавливать для многопоточных разговоров, в противном случае можно оставить пустым или не устанавливать.

JSON-представление
{
  "parts": [
    {
      object (Part)
    }
  ],
  "role": string
}

Часть

Тип данных, содержащий медиаданные, являющиеся частью многокомпонентного сообщения Content .

Part состоит из данных, которые имеют связанный тип данных. Part может содержать только один из принятых типов в Part.data .

Part должна иметь фиксированный тип IANA MIME, идентифицирующий тип и подтип носителя, если поле inlineData заполнено необработанными байтами.

Поля
thought boolean

Необязательно. Указывает, была ли деталь задумана на основе модели.

Union type data
data могут быть только одними из следующих:
text string

Встроенный текст.

объект inlineData object ( Blob )

Встроенные медиа-байты.

object ( FunctionCall ) functionCall ( FunctionCall )

Предсказанный FunctionCall возвращаемый моделью, содержащий строку, представляющую FunctionDeclaration.name с аргументами и их значениями.

объект functionResponse object ( FunctionResponse )

Результат вывода FunctionCall , содержащий строку, представляющую FunctionDeclaration.name , и структурированный объект JSON, содержащий любой вывод функции, используется в качестве контекста для модели.

объект fileData object ( FileData )

Данные на основе URI.

object ( ExecutableCode ) executableCode ( ExecutableCode )

Код, сгенерированный моделью и предназначенный для выполнения.

object ( CodeExecutionResult ) codeExecutionResult ( CodeExecutionResult )

Результат выполнения ExecutableCode .

metadata Union type
Управляет дополнительной предварительной обработкой данных. metadata могут быть только одними из следующих:
object ( VideoMetadata ) videoMetadata ( VideoMetadata )

Необязательно. Метаданные видео. Метаданные следует указывать только тогда, когда данные видео представлены в inlineData или fileData.

JSON-представление
{
  "thought": boolean,

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

Капля

Необработанные медиа-байты.

Текст не следует отправлять в виде необработанных байтов, используйте поле «текст».

Поля
string mimeType

Стандартный тип MIME IANA исходных данных. Примеры: - image/png - image/jpeg Если указан неподдерживаемый тип MIME, будет возвращена ошибка. Полный список поддерживаемых типов см. в разделе Поддерживаемые форматы файлов .

string ( bytes format) data (формат байтов)

Необработанные байты для форматов мультимедиа.

Строка в кодировке base64.

JSON-представление
{
  "mimeType": string,
  "data": string
}

ФункцияВызов

Предсказанный FunctionCall возвращаемый моделью, содержащий строку, представляющую FunctionDeclaration.name с аргументами и их значениями.

Поля
string id

Необязательно. Уникальный идентификатор вызова функции. Если заполнено, клиент должен выполнить functionCall и вернуть ответ с соответствующим id .

name string

Обязательно. Имя функции для вызова. Должно быть az, AZ, 0-9 или содержать подчеркивания и тире, с максимальной длиной 63.

объект args object ( Struct format)

Необязательно. Параметры и значения функции в формате объекта JSON.

JSON-представление
{
  "id": string,
  "name": string,
  "args": {
    object
  }
}

ФункцияОтвет

Результат вывода из FunctionCall , содержащий строку, представляющую FunctionDeclaration.name , и структурированный объект JSON, содержащий любой вывод из функции, используется в качестве контекста для модели. Он должен содержать результат FunctionCall , сделанного на основе прогноза модели.

Поля
string id

Необязательно. Идентификатор вызова функции, для которого предназначен этот ответ. Заполняется клиентом для соответствия id вызова соответствующей функции.

name string

Обязательно. Имя функции для вызова. Должно быть az, AZ, 0-9 или содержать подчеркивания и тире, с максимальной длиной 63.

object ( Struct format) response (формат Struct)

Обязательно. Ответ функции в формате объекта JSON.

willContinue boolean

Необязательно. Сигнализирует о том, что вызов функции продолжается, и будут возвращены дополнительные ответы, превращая вызов функции в генератор. Применимо только к вызовам функций NON_BLOCKING, в противном случае игнорируется. Если установлено значение false, будущие ответы не будут учитываться. Разрешается возвращать пустой response с willContinue=False чтобы сигнализировать о завершении вызова функции. Это все равно может запустить генерацию модели. Чтобы избежать запуска генерации и завершить вызов функции, дополнительно установите scheduling на SILENT .

scheduling enum ( Scheduling )

Необязательно. Указывает, как следует планировать ответ в разговоре. Применимо только к вызовам функций NON_BLOCKING, в противном случае игнорируется. По умолчанию WHEN_IDLE.

JSON-представление
{
  "id": string,
  "name": string,
  "response": {
    object
  },
  "willContinue": boolean,
  "scheduling": enum (Scheduling)
}

Планирование

Указывает, как следует планировать ответ в разговоре.

Перечисления
SCHEDULING_UNSPECIFIED Это значение не используется.
SILENT Только добавляйте результат в контекст разговора, не прерывайте и не запускайте генерацию.
WHEN_IDLE Добавьте результат в контекст разговора и предложите сгенерировать вывод, не прерывая текущую генерацию.
INTERRUPT Добавьте результат в контекст разговора, прервите текущую генерацию и предложите сгенерировать вывод.

ФайлДанные

Данные на основе URI.

Поля
string mimeType

Необязательно. Стандартный тип MIME IANA исходных данных.

fileUri string

Обязательно. URI.

JSON-представление
{
  "mimeType": string,
  "fileUri": string
}

ИсполняемыйКод

Код, сгенерированный моделью, предназначен для выполнения, а результат возвращается модели.

Генерируется только при использовании инструмента CodeExecution , в котором код будет автоматически выполнен, а также будет сгенерирован соответствующий CodeExecutionResult .

Поля
language enum ( Language )

Обязательно. Язык программирования code .

string code

Обязательно. Код для выполнения.

JSON-представление
{
  "language": enum (Language),
  "code": string
}

Язык

Поддерживаемые языки программирования для сгенерированного кода.

Перечисления
LANGUAGE_UNSPECIFIED Неуказанный язык. Это значение не должно использоваться.
PYTHON Python >= 3.10, с доступными numpy и simpy.

КодВыполнениеРезультат

Результат выполнения ExecutableCode .

Генерируется только при использовании CodeExecution и всегда следует за part содержащей ExecutableCode .

Поля
outcome enum ( Outcome )

Обязательно. Результат выполнения кода.

output string

Необязательно. Содержит stdout, если выполнение кода успешно, stderr или другое описание в противном случае.

JSON-представление
{
  "outcome": enum (Outcome),
  "output": string
}

Исход

Перечисление возможных результатов выполнения кода.

Перечисления
OUTCOME_UNSPECIFIED Неопределенный статус. Это значение не должно использоваться.
OUTCOME_OK Выполнение кода завершено успешно.
OUTCOME_FAILED Выполнение кода завершено, но с ошибкой. stderr должна быть указана причина.
OUTCOME_DEADLINE_EXCEEDED Выполнение кода продолжалось слишком долго и было отменено. Может присутствовать или не присутствовать частичный вывод.

ВидеоМетаданные

Метаданные описывают входной видеоконтент.

Поля
startOffset string ( Duration format)

Необязательно. Начальное смещение видео.

Длительность в секундах с дробной частью до девяти цифр, заканчивающаяся на ' s '. Пример: "3.5s" .

endOffset string ( Duration format)

Необязательно. Конечное смещение видео.

Длительность в секундах с дробной частью до девяти цифр, заканчивающаяся на ' s '. Пример: "3.5s" .

number fps

Необязательно. Частота кадров видео, отправляемого модели. Если не указано, значение по умолчанию будет 1,0. Диапазон кадров в секунду: (0,0, 24,0].

JSON-представление
{
  "startOffset": string,
  "endOffset": string,
  "fps": number
}

Инструмент

Подробная информация об инструментах, которые модель может использовать для генерации ответа.

Tool — это фрагмент кода, который позволяет системе взаимодействовать с внешними системами для выполнения действия или набора действий, выходящих за рамки знаний и области действия модели.

Поля
functionDeclarations[] object ( FunctionDeclaration )

Необязательно. Список FunctionDeclarations доступных для модели, которые можно использовать для вызова функций.

Модель или система не выполняет функцию. Вместо этого определенная функция может быть возвращена как FunctionCall с аргументами на клиентскую сторону для выполнения. Модель может решить вызвать подмножество этих функций, заполнив FunctionCall в ответе. Следующий ход разговора может содержать FunctionResponse с контекстом генерации Content.role "function" для следующего хода модели.

object ( GoogleSearchRetrieval ) googleSearchRetrieval ( GoogleSearchRetrieval )

Необязательно. Инструмент поиска, работающий на основе поиска Google.

object ( CodeExecution ) codeExecution ( CodeExecution )

Необязательно. Позволяет модели выполнять код как часть генерации.

object ( UrlContext ) urlContext ( UrlContext )

Необязательно. Инструмент для поддержки извлечения контекста URL.

JSON-представление
{
  "functionDeclarations": [
    {
      object (FunctionDeclaration)
    }
  ],
  "googleSearchRetrieval": {
    object (GoogleSearchRetrieval)
  },
  "codeExecution": {
    object (CodeExecution)
  },
  "googleSearch": {
    object (GoogleSearch)
  },
  "urlContext": {
    object (UrlContext)
  }
}

Декларация функции

Структурированное представление объявления функции, как определено спецификацией OpenAPI 3.03 . В это объявление включены имя функции и параметры. Это FunctionDeclaration является представлением блока кода, который может использоваться моделью как Tool и выполняться клиентом.

Поля
name string

Обязательно. Имя функции. Должно быть az, AZ, 0-9 или содержать подчеркивания и тире, с максимальной длиной 63.

string description

Обязательно. Краткое описание функции.

behavior enum ( Behavior )

Необязательно. Указывает поведение функции. В настоящее время поддерживается только методом BidiGenerateContent.

parameters object ( Schema )

Необязательно. Описывает параметры этой функции. Отражает строку объекта параметра Open API 3.03 Ключ: имя параметра. Имена параметров чувствительны к регистру. Значение схемы: схема, определяющая тип, используемый для параметра.

объект response object ( Schema )

Необязательно. Описывает выходные данные этой функции в формате JSON Schema. Отражает объект ответа Open API 3.03. Схема определяет тип, используемый для значения ответа функции.

JSON-представление
{
  "name": string,
  "description": string,
  "behavior": enum (Behavior),
  "parameters": {
    object (Schema)
  },
  "response": {
    object (Schema)
  }
}

Схема

Объект Schema позволяет определять типы входных и выходных данных. Эти типы могут быть объектами, а также примитивами и массивами. Представляет выбранное подмножество объекта схемы OpenAPI 3.0 .

Поля
type enum ( Type )

Обязательно. Тип данных.

format string

Необязательно. Формат данных. Используется только для примитивных типов данных. Поддерживаемые форматы: для типа NUMBER: float, double для типа INTEGER: int32, int64 для типа STRING: enum, date-time

string title

Необязательно. Название схемы.

string description

Необязательно. Краткое описание параметра. Может содержать примеры использования. Описание параметра может быть отформатировано как Markdown.

nullable boolean

Необязательно. Указывает, может ли значение быть нулевым.

enum[] string

Необязательно. Возможные значения элемента Type.STRING с форматом enum. Например, мы можем определить Enum Direction как: {type:STRING, format:enum, enum:["EAST", NORTH", "SOUTH", "WEST"]}

string ( int64 format) maxItems (формат int64)

Необязательно. Максимальное количество элементов для Type.ARRAY.

string ( int64 format) minItems (формат int64)

Необязательно. Минимальное количество элементов для Type.ARRAY.

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

Необязательно. Свойства Type.OBJECT.

Объект, содержащий список пар "key": value . Пример: { "name": "wrench", "mass": "1.3kg", "count": "3" } .

required[] string

Необязательно. Обязательные свойства Type.OBJECT.

string ( int64 format) minProperties (формат int64)

Необязательно. Минимальное количество свойств для Type.OBJECT.

string ( int64 format) maxProperties (формат int64)

Необязательно. Максимальное количество свойств для Type.OBJECT.

string ( int64 format) minLength (формат int64)

Необязательно. ПОЛЯ СХЕМЫ ДЛЯ ТИПА STRING Минимальная длина Type.STRING

maxLength string ( int64 format)

Необязательно. Максимальная длина Type.STRING

string pattern

Необязательно. Шаблон Type.STRING для ограничения строки регулярным выражением.

example value ( Value format)

Необязательно. Пример объекта. Будет заполнено только тогда, когда объект является корнем.

anyOf[] object ( Schema )

Необязательно. Значение должно быть проверено по любой (одной или нескольким) подсхемам в списке.

propertyOrdering[] string

Необязательно. Порядок свойств. Нестандартное поле в спецификации открытого API. Используется для определения порядка свойств в ответе.

значение default value ( Value format)

Необязательно. Значение поля по умолчанию. Согласно схеме JSON, это поле предназначено для генераторов документации и не влияет на проверку. Поэтому оно включено сюда и игнорируется, чтобы разработчики, отправляющие схемы с полем default не получали ошибок неизвестного поля.

объект items object ( Schema )

Необязательно. Схема элементов Type.ARRAY.

minimum number

Необязательно. ПОЛЯ СХЕМЫ ДЛЯ ТИПА INTEGER и NUMBER Минимальное значение Type.INTEGER и Type.NUMBER

maximum number

Необязательно. Максимальное значение Type.INTEGER и Type.NUMBER

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
}

Тип

Тип содержит список типов данных OpenAPI, как определено в https://spec.openapis.org/oas/v3.0.3#data-types

Перечисления
TYPE_UNSPECIFIED Не указано, не следует использовать.
STRING Тип строки.
NUMBER Тип числа.
INTEGER Целочисленный тип.
BOOLEAN Булев тип.
ARRAY Тип массива.
OBJECT Тип объекта.
NULL Нулевой тип.

Поведение

Определяет поведение функции. По умолчанию BLOCKING .

Перечисления
UNSPECIFIED Это значение не используется.
BLOCKING Если установлено, система будет ждать ответа функции, прежде чем продолжить разговор.
NON_BLOCKING Если установлено, система не будет ждать получения ответа функции. Вместо этого она попытается обрабатывать ответы функции по мере их поступления, поддерживая при этом диалог между пользователем и моделью.

GoogleПоискИзвлечение

Инструмент для извлечения общедоступных веб-данных для заземления, работающий на базе Google.

Поля
object ( DynamicRetrievalConfig ) dynamicRetrievalConfig ( DynamicRetrievalConfig )

Задает конфигурацию динамического извлечения для указанного источника.

JSON-представление
{
  "dynamicRetrievalConfig": {
    object (DynamicRetrievalConfig)
  }
}

DynamicRetrievalConfig

Описывает параметры настройки динамического поиска.

Поля
mode enum ( Mode )

Режим предиктора, который будет использоваться при динамическом поиске.

dynamicThreshold number

Порог, который будет использоваться при динамическом поиске. Если не задано, используется системное значение по умолчанию.

JSON-представление
{
  "mode": enum (Mode),
  "dynamicThreshold": number
}

Режим

Режим предиктора, который будет использоваться при динамическом поиске.

Перечисления
MODE_UNSPECIFIED Всегда запускайте извлечение.
MODE_DYNAMIC Запускайте извлечение только тогда, когда система посчитает это необходимым.

КодВыполнение

Этот тип не имеет полей.

Инструмент, который выполняет код, сгенерированный моделью, и автоматически возвращает результат модели.

См. также ExecutableCode и CodeExecutionResult , которые генерируются только при использовании этого инструмента.

GoogleПоиск

Тип инструмента GoogleSearch. Инструмент для поддержки поиска Google в модели. Работает на Google.

Поля
object ( Interval ) timeRangeFilter (Интервал)

Необязательно. Фильтрация результатов поиска по определенному временному диапазону. Если клиенты устанавливают время начала, они должны установить время окончания (и наоборот).

JSON-представление
{
  "timeRangeFilter": {
    object (Interval)
  }
}

Интервал

Представляет временной интервал, закодированный как начальная временная метка (включительно) и конечная временная метка (исключая).

Начало должно быть меньше или равно концу. Если начало равно концу, интервал пустой (не соответствует времени). Если начало и конец не указаны, интервал соответствует любому времени.

Поля
startTime string ( Timestamp format)

Необязательно. Включая начало интервала.

Если указано, то временная метка, соответствующая этому интервалу, должна быть такой же или более поздней по времени, чем начало.

Использует RFC 3339, где сгенерированный вывод всегда будет Z-нормализованным и использует 0, 3, 6 или 9 дробных цифр. Смещения, отличные от "Z", также принимаются. Примеры: "2014-10-02T15:01:23Z" , "2014-10-02T15:01:23.045123456Z" или "2014-10-02T15:01:23+05:30" .

строка endTime string ( Timestamp format)

Необязательно. Исключительный конец интервала.

Если указано, метка времени, соответствующая этому интервалу, должна быть до конца.

Использует RFC 3339, где сгенерированный вывод всегда будет Z-нормализованным и использует 0, 3, 6 или 9 дробных цифр. Смещения, отличные от "Z", также принимаются. Примеры: "2014-10-02T15:01:23Z" , "2014-10-02T15:01:23.045123456Z" или "2014-10-02T15:01:23+05:30" .

JSON-представление
{
  "startTime": string,
  "endTime": string
}

UrlContext

Этот тип не имеет полей.

Инструмент для поддержки поиска контекста URL.

ИнструментКонфиг

Конфигурация инструмента, содержащая параметры для указания использования Tool в запросе.

Поля
object ( FunctionCallingConfig ) functionCallingConfig ( FunctionCallingConfig )

Необязательно. Функция вызова конфигурации.

JSON-представление
{
  "functionCallingConfig": {
    object (FunctionCallingConfig)
  }
}

Конфигурация вызова функции

Конфигурация для указания поведения вызова функций.

Поля
mode enum ( Mode )

Необязательно. Указывает режим, в котором должен выполняться вызов функции. Если не указано, значение по умолчанию будет установлено на AUTO.

allowedFunctionNames[] string

Необязательно. Набор имен функций, который, если указан, ограничивает функции, которые будет вызывать модель.

Это должно быть установлено только когда Mode имеет значение ANY. Имена функций должны соответствовать [FunctionDeclaration.name]. Если mode установлен на ANY, модель будет предсказывать вызов функции из предоставленного набора имен функций.

JSON-представление
{
  "mode": enum (Mode),
  "allowedFunctionNames": [
    string
  ]
}

Режим

Определяет поведение выполнения для вызова функции путем определения режима выполнения.

Перечисления
MODE_UNSPECIFIED Неуказанный режим вызова функции. Это значение не должно использоваться.
AUTO Поведение модели по умолчанию: модель решает предсказать либо вызов функции, либо ответ на естественном языке.
ANY Модель ограничена тем, что всегда предсказывает только вызов функции. Если заданы "allowedFunctionNames", то предсказываемый вызов функции будет ограничен любым из "allowedFunctionNames", в противном случае предсказываемый вызов функции будет любым из предоставленных "functionDeclarations".
NONE Модель не будет предсказывать вызовы функций. Поведение модели такое же, как и при отсутствии передачи деклараций функций.
VALIDATED Модель решает предсказать либо вызов функции, либо ответ на естественном языке, но будет проверять вызовы функций с помощью ограниченного декодирования.

ИспользованиеМетаданных

Метаданные об использовании кэшированного контента.

Поля
totalTokenCount integer

Общее количество токенов, которые потребляет кэшированный контент.

JSON-представление
{
  "totalTokenCount": integer
}