Caching

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

Метод: cachedContents.create

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

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

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

string model

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

объект systemInstruction object ( Content )

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

объект toolConfig object ( ToolConfig )

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

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

Базовый

Python

from google import genai
from google.genai import types

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

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

response = client.models.generate_content(
    model=model_name,
    contents="Please summarize this transcript",
    config=types.GenerateContentConfig(cached_content=cache.name),
)
print(response.text)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
const filePath = path.join(media, "a11.txt");
const document = await ai.files.upload({
  file: filePath,
  config: { mimeType: "text/plain" },
});
console.log("Uploaded file name:", document.name);
const modelName = "gemini-1.5-flash-001";

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

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

const response = await ai.models.generateContent({
  model: modelName,
  contents: "Please summarize this transcript",
  config: { cachedContent: cache.name },
});
console.log("Response text:", response.text);

Идти

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

По имени

Python

from google import genai
from google.genai import types

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

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

# Later retrieve the cache
cache = client.caches.get(name=cache_name)
response = client.models.generate_content(
    model=model_name,
    contents="Find a lighthearted moment from this transcript",
    config=types.GenerateContentConfig(cached_content=cache.name),
)
print(response.text)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
const filePath = path.join(media, "a11.txt");
const document = await ai.files.upload({
  file: filePath,
  config: { mimeType: "text/plain" },
});
console.log("Uploaded file name:", document.name);
const modelName = "gemini-1.5-flash-001";

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

const cache = await ai.caches.create({
  model: modelName,
  config: {
    contents: contents,
    systemInstruction: "You are an expert analyzing transcripts.",
  },
});
const cacheName = cache.name; // Save the name for later

// Later retrieve the cache
const retrievedCache = await ai.caches.get({ name: cacheName });
const response = await ai.models.generateContent({
  model: modelName,
  contents: "Find a lighthearted moment from this transcript",
  config: { cachedContent: retrievedCache.name },
});
console.log("Response text:", response.text);

Идти

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)

Из чата

Python

from google import genai
from google.genai import types

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

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

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

# To cache the conversation so far, pass the chat history as the list of contents.
cache = client.caches.create(
    model=model_name,
    config={
        "contents": chat.get_history(),
        "system_instruction": system_instruction,
    },
)
# Continue the conversation using the cached content.
chat = client.chats.create(
    model=model_name,
    config=types.GenerateContentConfig(cached_content=cache.name),
)
response = chat.send_message(
    message="I didn't understand that last part, could you explain it in simpler language?"
)
print("\n\nmodel:  ", response.text)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
const modelName = "gemini-1.5-flash-001";
const systemInstruction = "You are an expert analyzing transcripts.";

// Create a chat session with the system instruction.
const chat = ai.chats.create({
  model: modelName,
  config: { systemInstruction: systemInstruction },
});
const filePath = path.join(media, "a11.txt");
const document = await ai.files.upload({
  file: filePath,
  config: { mimeType: "text/plain" },
});
console.log("Uploaded file name:", document.name);

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

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

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

// Continue the conversation using the cached content.
const chatWithCache = ai.chats.create({
  model: modelName,
  config: { cachedContent: cache.name },
});
response = await chatWithCache.sendMessage({
  message:
    "I didn't understand that last part, could you explain it in simpler language?",
});
console.log("\n\nmodel:", response.text);

Идти

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[] 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} .

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

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

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

Python

from google import genai

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

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

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
const filePath = path.join(media, "a11.txt");
const document = await ai.files.upload({
  file: filePath,
  config: { mimeType: "text/plain" },
});
console.log("Uploaded file name:", document.name);
const modelName = "gemini-1.5-flash-001";

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

const cache = await ai.caches.create({
  model: modelName,
  config: {
    contents: contents,
    systemInstruction: "You are an expert analyzing transcripts.",
  },
});
const retrievedCache = await ai.caches.get({ name: cache.name });
console.log("Retrieved Cache:", retrievedCache);

Идти

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 (обновляется только значение expiration).

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

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

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

cachedContent.name string

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

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

строка updateMask string ( FieldMask format)

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

Это список полных имен полей, разделенных запятыми. Пример: "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" .

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

Python

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

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

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

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

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

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
const filePath = path.join(media, "a11.txt");
const document = await ai.files.upload({
  file: filePath,
  config: { mimeType: "text/plain" },
});
console.log("Uploaded file name:", document.name);
const modelName = "gemini-1.5-flash-001";

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

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

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

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

Идти

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

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

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

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

Python

from google import genai

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

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

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
const filePath = path.join(media, "a11.txt");
const document = await ai.files.upload({
  file: filePath,
  config: { mimeType: "text/plain" },
});
console.log("Uploaded file name:", document.name);
const modelName = "gemini-1.5-flash-001";

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

const cache = await ai.caches.create({
  model: modelName,
  config: {
    contents: contents,
    systemInstruction: "You are an expert analyzing transcripts.",
  },
});
await ai.caches.delete({ name: cache.name });
console.log("Cache deleted:", cache.name);

Идти

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}

displayName string

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

string model

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

объект systemInstruction object ( Content )

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

объект 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 .

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

Поля
boolean thought

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

строка thoughtSignature string ( bytes format)

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

Строка, закодированная в формате Base64.

Объект partMetadata object ( Struct format)

Пользовательские метаданные, связанные с частью. Агентам, использующим genai.Part в качестве представления контента, может потребоваться отслеживать дополнительную информацию. Например, это может быть имя файла/источника, из которого происходит часть, или способ мультиплексирования нескольких потоков частей.

Объект mediaResolution object ( MediaResolution )

Необязательно. Разрешение входного медиафайла.

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

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

объект inlineData object ( Blob )

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

объект functionCall object ( FunctionCall )

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

объект functionResponse object ( FunctionResponse )

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

объект fileData object ( FileData )

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

объект executableCode object ( ExecutableCode )

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

объект codeExecutionResult object ( CodeExecutionResult )

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

Объект toolCall object ( ToolCall )

Вызов инструмента на стороне сервера. Это поле заполняется, когда модель предсказывает вызов инструмента, который должен быть выполнен на сервере. Ожидается, что клиент отправит это сообщение обратно в API.

объект toolResponse object ( ToolResponse )

Результат выполнения ToolCall на стороне сервера. Это поле заполняется клиентом результатами выполнения соответствующего ToolCall .

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

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

JSON-представление
{
  "thought": boolean,
  "thoughtSignature": string,
  "partMetadata": {
    object
  },
  "mediaResolution": {
    object (MediaResolution)
  },

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

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

Клякса

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

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

Поля
mimeType string

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

строка data string ( bytes format)

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

Строка, закодированная в формате Base64.

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

Вызов функции

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

Поля
string id

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

string name

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

Объект 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 или содержать подчеркивания и дефисы, максимальная длина — 128 символов.

Объект response object ( Struct format)

Обязательно. Ответ функции в формате JSON-объекта. Вызывающие стороны могут использовать любые ключи по своему выбору, соответствующие синтаксису функции, для возврата результата функции, например, "output", "result" и т. д. В частности, если вызов функции не удался, ответ может содержать ключ "error" для возврата подробной информации об ошибке в модель.

parts[] object ( FunctionResponsePart )

Необязательно. Заказанные Parts , составляющие функциональный ответ. Компоненты могут иметь разные MIME-типы IANA.

willContinue boolean

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

scheduling enum ( Scheduling )

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

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

FunctionResponsePart

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

Объект FunctionResponsePart состоит из данных, имеющих связанный с ними тип данных. FunctionResponsePart может содержать только один из допустимых типов, указанных в FunctionResponsePart.data .

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

Поля
Union type data
data части отклика функции могут быть только одним из следующих типов:
объект inlineData object ( FunctionResponseBlob )

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

JSON-представление
{

  // data
  "inlineData": {
    object (FunctionResponseBlob)
  }
  // Union type
}

FunctionResponseBlob

Исходные медиабайты для ответа функции.

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

Поля
mimeType string

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

строка data string ( bytes format)

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

Строка, закодированная в формате Base64.

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

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

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

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

FileData

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

Поля
mimeType string

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

string fileUri

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

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

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

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

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

Поля
string id

Необязательный параметр. Уникальный идентификатор части ExecutableCode . Сервер возвращает объект CodeExecutionResult с соответствующим id .

language enum ( Language )

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

string code

Обязательно. Код, который необходимо выполнить.

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

Язык

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

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

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

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

Генерируется только при использовании инструмента CodeExecution .

Поля
string id

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

outcome enum ( Outcome )

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

output string

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

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

Исход

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

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

Вызов инструмента

Предсказанный серверный ToolCall возвращаемый моделью. Это сообщение содержит информацию об инструменте, который модель хочет вызвать. Клиент НЕ должен выполнять этот ToolCall . Вместо этого клиент должен передать этот ToolCall обратно в API в последующем сообщении Content вместе с соответствующим ToolResponse .

Поля
string id

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

перечисление toolType enum ( ToolType )

Обязательно. Тип вызванного инструмента.

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

Необязательный параметр. Аргументы вызова инструмента. Пример: {"arg1" : "value1", "arg2" : "value2", ...}

JSON-представление
{
  "id": string,
  "toolType": enum (ToolType),
  "args": {
    object
  }
}

Тип инструмента

Тип инструмента в вызове функции.

Перечисления
TOOL_TYPE_UNSPECIFIED Тип инструмента не указан.
GOOGLE_SEARCH_WEB Инструмент поиска Google, соответствует Tool.google_search.search_types.web_search.
GOOGLE_SEARCH_IMAGE Инструмент поиска изображений, соответствует Tool.google_search.search_types.image_search.
URL_CONTEXT Инструмент контекста URL соответствует Tool.url_context.
GOOGLE_MAPS Инструмент Google Maps, отображается как Tool.google_maps.

ToolResponse

Результат выполнения ToolCall на стороне сервера. Это сообщение содержит результаты вызова инструмента, инициированного ToolCall из модели. Клиент должен передать этот ToolResponse обратно в API в последующем шаге в сообщении Content вместе с соответствующим ToolCall .

Поля
string id

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

перечисление toolType enum ( ToolType )

Обязательно. Тип вызванного инструмента, соответствующий параметру toolType в соответствующем ToolCall ).

Объект response object ( Struct format)

Необязательно. Ответ инструмента.

JSON-представление
{
  "id": string,
  "toolType": enum (ToolType),
  "response": {
    object
  }
}

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

Устарело: используйте GenerateContentRequest.processing_options вместо этого. Метаданные описывают содержимое входного видеофайла.

Поля
строка 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
}

MediaResolution

Разрешение медиафайлов для токенизации.

Поля
value Union type
Уровень разрешения медиафайла может принимать только одно из следующих value :
level enum ( Level )

Качество токенизации, используемое для данного медиафайла. для поддержки API Gemini .

JSON-представление
{

  // value
  "level": enum (Level)
  // Union type
}

Уровень

Уровень разрешения медиафайлов.

Перечисления
MEDIA_RESOLUTION_UNSPECIFIED Разрешение для СМИ пока не установлено.
MEDIA_RESOLUTION_LOW Разрешение видео установлено на низкое.
MEDIA_RESOLUTION_MEDIUM Разрешение видео установлено на среднее.
MEDIA_RESOLUTION_HIGH Разрешение видео установлено на высокое.
MEDIA_RESOLUTION_ULTRA_HIGH Разрешение видео установлено на сверхвысокое.

Инструмент

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

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

Следующий ID: 15

Поля
объект functionDeclarations[] object ( FunctionDeclaration )

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

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

объект googleSearchRetrieval object ( GoogleSearchRetrieval )

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

объект codeExecution object ( CodeExecution )

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

объект computerUse object ( ComputerUse )

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

объект urlContext object ( UrlContext )

Необязательный инструмент для получения контекста URL-адреса.

mcpServers[] object ( McpServer )

Необязательно. Серверы MCP для подключения.

объект googleMaps object ( GoogleMaps )

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

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

Объявление функции

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

Поля
string name

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

string description

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

behavior enum ( Behavior )

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

объект parameters object ( Schema )

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

parametersJsonSchema value ( Value format)

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

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

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

объект response object ( Schema )

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

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

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

Это поле взаимоисключающее с 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 )

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

format string

Необязательно. Формат данных. Допускаются любые значения, но большинство из них не запускают никаких специальных функций.

string title

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

string description

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

nullable boolean

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

enum[] string

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

строка maxItems string ( int64 format)

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

minItems string ( int64 format)

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

карта properties map (key: string, value: object ( Schema ))

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

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

обязательная string required[]

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

minProperties string ( int64 format)

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

строка maxProperties string ( int64 format)

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

minLength string ( int64 format)

Необязательно. Поля схемы для типа string. Минимальная длина строки типа string.

строка maxLength string ( int64 format)

Необязательный параметр. Максимальная длина строки типа.STRING.

string pattern

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

example value ( Value format)

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

anyOf[] object ( Schema )

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

propertyOrdering[] string

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

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

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

объект items object ( Schema )

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

minimum number

Необязательно. Поля схемы для типов INTEGER и NUMBER. Минимальное значение типов INTEGER и 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.

Поля
объект dynamicRetrievalConfig object ( DynamicRetrievalConfig )

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

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

DynamicRetrievalConfig

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

Поля
mode enum ( Mode )

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

dynamicThreshold number

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

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

Режим

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

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

Выполнение кода

Этот тип не содержит полей.

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

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

GoogleПоиск

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

Поля
Объект timeRangeFilter object ( Interval )

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

объект searchTypes object ( SearchTypes )

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

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

Интервал

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

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

Поля
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
}

SearchTypes

Различные типы поиска, которые можно включить в инструменте Google Search.

Поля
JSON-представление
{
  "webSearch": {
    object (WebSearch)
  },
  "imageSearch": {
    object (ImageSearch)
  }
}

Веб-поиск

Этот тип не содержит полей.

Стандартный поиск в интернете по запросу "заземление и связанные с ним конфигурации".

Поиск изображений

Этот тип не содержит полей.

Поиск изображений по заземлению и связанным с ним конфигурациям.

Использование компьютера

Тип инструмента для работы за компьютером.

Поля
environment enum ( Environment )

Обязательно. Условия эксплуатации.

excludedPredefinedFunctions[] string

Необязательно. По умолчанию предопределенные функции включаются в окончательный вызов модели. Некоторые из них можно явно исключить из автоматического включения. Это может служить двум целям: 1. Использование более ограниченного/другого пространства действий. 2. Улучшение определений/инструкций предопределенных функций.

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

Среда

Представляет собой среду, в которой осуществляется работа, например, веб-браузер.

Перечисления
ENVIRONMENT_UNSPECIFIED По умолчанию используется браузер.
ENVIRONMENT_BROWSER Работает в веб-браузере.

UrlContext

Этот тип не содержит полей.

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

Поиск файлов

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

Поля
fileSearchStoreNames[] string

Обязательно. Названия файловых хранилищ (fileSearchStores), из которых нужно получить данные. Пример: fileSearchStores/my-file-search-store-123

metadataFilter string

Необязательно. Фильтр метаданных для применения к документам и фрагментам семантического поиска.

topK integer

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

JSON-представление
{
  "fileSearchStoreNames": [
    string
  ],
  "metadataFilter": string,
  "topK": integer
}

McpServer

MCPServer — это сервер, который может быть вызван моделью для выполнения действий. Это сервер, реализующий протокол MCP. Следующий ID: 5

Поля
string name

Имя MCPServer.

transport Union type
Транспорт, используемый для подключения к MCPServer. transport может быть только одним из следующих:
object ( StreamableHttpTransport ) streamableHttpTransport (StreamableHttpTransport)

Транспортный механизм, способный передавать HTTP-запросы и ответы в потоковом режиме.

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

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

StreamableHttpTransport

Транспорт, способный передавать HTTP-запросы и ответы в потоковом режиме. Следующий ID: 6

Поля
string url

Полный URL-адрес конечной точки MCPServer. Пример: "https://api.example.com/mcp"

Карта headers map (key: string, value: string)

Необязательно: поля для заголовков аутентификации, тайм-аутов и т. д., если необходимо.

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

Строка timeout string ( Duration format)

Истекло время ожидания HTTP-запроса для обычных операций.

Длительность в секундах, содержащая до девяти знаков после запятой, заканчивающаяся на « s ». Пример: "3.5s" .

sseReadTimeout string ( Duration format)

Истекло время ожидания для операций чтения SSE.

A duration in seconds with up to nine fractional digits, ending with ' s '. Example: "3.5s" .

terminateOnClose boolean

Whether to close the client session when the transport closes.

JSON-представление
{
  "url": string,
  "headers": {
    string: string,
    ...
  },
  "timeout": string,
  "sseReadTimeout": string,
  "terminateOnClose": boolean
}

Google Карты

The GoogleMaps Tool that provides geospatial context for the user's query.

Поля
enableWidget boolean

Optional. Whether to return a widget context token in the GroundingMetadata of the response. Developers can use the widget context token to render a Google Maps widget with geospatial context related to the places that the model references in the response.

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

ToolConfig

The Tool configuration containing parameters for specifying Tool use in the request.

Поля
functionCallingConfig object ( FunctionCallingConfig )

Optional. Function calling config.

retrievalConfig object ( RetrievalConfig )

Optional. Retrieval config.

includeServerSideToolInvocations boolean

Optional. If true, the API response will include the server-side tool calls and responses within the Content message. This allows clients to observe the server's tool interactions.

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

FunctionCallingConfig

Configuration for specifying function calling behavior.

Поля
mode enum ( Mode )

Optional. Specifies the mode in which function calling should execute. If unspecified, the default value will be set to AUTO.

allowedFunctionNames[] string

Optional. A set of function names that, when provided, limits the functions the model will call.

This should only be set when the Mode is ANY or VALIDATED. Function names should match [FunctionDeclaration.name]. When set, model will predict a function call from only allowed function names.

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

Режим

Defines the execution behavior for function calling by defining the execution mode.

Перечисления
MODE_UNSPECIFIED Unspecified function calling mode. This value should not be used.
AUTO Default model behavior, model decides to predict either a function call or a natural language response.
ANY Model is constrained to always predicting a function call only. If "allowedFunctionNames" are set, the predicted function call will be limited to any one of "allowedFunctionNames", else the predicted function call will be any one of the provided "functionDeclarations".
NONE Model will not predict any function call. Model behavior is same as when not passing any function declarations.
VALIDATED Model decides to predict either a function call or a natural language response, but will validate function calls with constrained decoding. If "allowedFunctionNames" are set, the predicted function call will be limited to any one of "allowedFunctionNames", else the predicted function call will be any one of the provided "functionDeclarations".

RetrievalConfig

Retrieval config.

Поля
latLng object ( LatLng )

Optional. The location of the user.

languageCode string

Optional. The language code of the user. Language code for content. Use language tags defined by BCP47 .

JSON-представление
{
  "latLng": {
    object (LatLng)
  },
  "languageCode": string
}

LatLng

An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard . Values must be within normalized ranges.

Поля
latitude number

The latitude in degrees. It must be in the range [-90.0, +90.0].

longitude number

The longitude in degrees. It must be in the range [-180.0, +180.0].

JSON-представление
{
  "latitude": number,
  "longitude": number
}

UsageMetadata

Metadata on the usage of the cached content.

Поля
totalTokenCount integer

Total number of tokens that the cached content consumes.

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