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

string displayName

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

string model

Обязательно. Неизменяемо. Имя 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, 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)

Оболочка

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

Из чата

Питон

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

Тело ответа

В случае успеха тело ответа содержит вновь созданный экземпляр 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 /*}

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

string name

Обязательно. Имя ресурса, ссылающегося на запись кэша контента. Формат: 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, 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)

Оболочка

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

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

string cachedContent.name

Только вывод. Идентификатор. Имя ресурса, относящегося к кэшированному содержимому. Формат: 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, 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)

Оболочка

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

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

string name

Обязательно. Имя ресурса, ссылающегося на запись кэша контента. Формат: 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, 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)

Оболочка

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

string name

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

string displayName

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

string model

Обязательно. Неизменяемо. Имя 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

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

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

Необязательно. Непрозрачная подпись для мысли, чтобы её можно было использовать повторно в последующих запросах.

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

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

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

объект inlineData object ( Blob )

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

object ( FunctionCall ) functionCall ( FunctionCall )

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

object ( FunctionResponse ) functionResponse ( 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,
  "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
}

Клякса

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

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

Поля
string mimeType

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

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

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

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

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

FunctionCall

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

Поля
string id

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

string name

Обязательно. Имя вызываемой функции. Имя должно содержать символы 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 вызова функции.

string name

Обязательно. Имя вызываемой функции. Имя должно содержать символы 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 Добавить результат в контекст разговора, прервать текущую генерацию и предложить сгенерировать вывод.

FileData

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

Поля
string mimeType

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

string fileUri

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

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

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

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

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

Поля
перечисление language enum ( Language )

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

code string

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

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

Язык

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

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

CodeExecutionResult

Результат выполнения 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 и выполняться клиентом.

Поля
string name

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

string description

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

перечисление behavior enum ( Behavior )

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

объект parameters object ( Schema )

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

Значение parametersJsonSchema value ( Value format)

Необязательно. Описывает параметры функции в формате JSON-схемы. Схема должна описывать объект, свойства которого являются параметрами функции. Например:

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

Это поле является взаимоисключающим с parameters .

объект response object ( Schema )

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

Значение responseJsonSchema value ( Value format)

Необязательно. Описывает выходные данные этой функции в формате схемы JSON. Значение, указанное в схеме, является значением ответа функции.

Это поле является взаимоисключающим с response .

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

Схема

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

Поля
type enum ( Type )

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

string format

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

string title

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

string description

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

boolean nullable

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

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

Необязательно. Свойства типа.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.

minLength string ( int64 format)

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

maxLength string ( int64 format)

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

string pattern

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

example value ( Value format)

Необязательно. Пример объекта. Заполняется только в том случае, если объект является корневым.

anyOf[] object ( Schema )

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

propertyOrdering[] string

Необязательно. Порядок свойств. Нестандартное поле в спецификации Open 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 Если установлено, система не будет дожидаться ответа функции. Вместо этого она будет пытаться обрабатывать ответы функций по мере их поступления, поддерживая при этом диалог между пользователем и моделью.

GoogleSearchRetrieval

Инструмент для извлечения общедоступных веб-данных для заземления, работающий на базе 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 Запускайте извлечение только тогда, когда система решит, что это необходимо.

CodeExecution

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

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

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

GoogleSearch

Тип инструмента 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.

ToolConfig

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

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

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

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

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

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

Поля
mode enum ( Mode )

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

string allowedFunctionNames[]

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

Этот параметр следует устанавливать только в том случае, если для параметра 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
}