Caching

ذخیره سازی زمینه به شما امکان می‌دهد تا توکن‌های ورودی از پیش محاسبه شده‌ای را که می‌خواهید بارها از آنها استفاده کنید، ذخیره و دوباره استفاده کنید، به عنوان مثال هنگام پرسیدن سوالات مختلف در مورد یک فایل رسانه‌ای مشابه. این می‌تواند بسته به نوع استفاده، منجر به صرفه‌جویی در هزینه و سرعت شود. برای آشنایی بیشتر، به راهنمای ذخیره سازی زمینه مراجعه کنید.

متد: cachedContents.create

منبع CachedContent را ایجاد می‌کند.

نقطه پایانی

پست https: / /generativelanguage.googleapis.com /v1beta /cachedContents

درخواست بدنه

بدنه درخواست شامل نمونه‌ای از CachedContent است.

فیلدها
contents[] object ( Content )

اختیاری. فقط ورودی. تغییرناپذیر. محتوایی که باید ذخیره شود.

tools[] object ( Tool )

اختیاری. فقط ورودی. تغییرناپذیر. فهرستی از Tools مدل ممکن است برای تولید پاسخ بعدی استفاده کند

Union type expiration
مشخص می‌کند که این منبع چه زمانی منقضی می‌شود. expiration فقط می‌تواند یکی از موارد زیر باشد:
رشته expireTime string ( Timestamp format)

مهر زمانی بر حسب UTC که نشان می‌دهد این منبع منقضی شده است. این مهر زمانی همیشه در خروجی ارائه می‌شود، صرف نظر از اینکه چه چیزی در ورودی ارسال شده است.

از RFC 3339 استفاده می‌کند، که در آن خروجی تولید شده همیشه به صورت Z-normalized خواهد بود و از ارقام کسری ۰، ۳، ۶ یا ۹ استفاده می‌کند. آفست‌های غیر از "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

اختیاری. تغییرناپذیر. نام نمایشی معنادار تولید شده توسط کاربر برای محتوای ذخیره شده. حداکثر ۱۲۸ کاراکتر یونیکد.

string model

الزامی. تغییرناپذیر. نام Model که برای محتوای ذخیره‌شده استفاده می‌شود. قالب: models/{model}

شیء systemInstruction object ( Content )

Optional. Input only. Immutable. Developer set system instruction. Currently text only.

شیء 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-3.6-flash"

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

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

نود جی اس

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

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

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

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

برو

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"), 
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

modelName := "gemini-3.6-flash"
document, err := client.Files.UploadFromPath(
	ctx, 
	filepath.Join(getMedia(), "a11.txt"), 
	&genai.UploadFileConfig{
		MIMEType : "text/plain",
	},
)
if err != nil {
	log.Fatal(err)
}
parts := []*genai.Part{
	genai.NewPartFromURI(document.URI, document.MIMEType),
}
contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}
cache, err := client.Caches.Create(ctx, modelName, &genai.CreateCachedContentConfig{
	Contents: contents,
	SystemInstruction: genai.NewContentFromText(
		"You are an expert analyzing transcripts.", genai.RoleUser,
	),
})
if err != nil {
	log.Fatal(err)
}
fmt.Println("Cache created:")
fmt.Println(cache)

// Use the cache for generating content.
response, err := client.Models.GenerateContent(
	ctx,
	modelName,
	genai.Text("Please summarize this transcript"),
	&genai.GenerateContentConfig{
		CachedContent: cache.Name,
	},
)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

پوسته

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-3.6-flash"

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)

نود جی اس

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

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

const cache = await ai.caches.create({
  model: modelName,
  config: {
    contents: contents,
    systemInstruction: "You are an expert analyzing transcripts.",
  },
});
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-3.6-flash"
document, err := client.Files.UploadFromPath(
	ctx, 
	filepath.Join(getMedia(), "a11.txt"), 
	&genai.UploadFileConfig{
		MIMEType : "text/plain",
	},
)
if err != nil {
	log.Fatal(err)
}
parts := []*genai.Part{
	genai.NewPartFromURI(document.URI, document.MIMEType),
}
contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}
cache, err := client.Caches.Create(ctx, modelName, &genai.CreateCachedContentConfig{
	Contents:          contents,
	SystemInstruction: genai.NewContentFromText(
		"You are an expert analyzing transcripts.", genai.RoleUser,
	),
})
if err != nil {
	log.Fatal(err)
}
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-3.6-flash"
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)

نود جی اس

// 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-3.6-flash";
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-3.6-flash"
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

فهرست‌های محتویات ذخیره‌شده (CachedContents).

نقطه پایانی

دریافت https: / /generativelanguage.googleapis.com /v1beta /cachedContents

پارامترهای پرس و جو

integer pageSize

اختیاری. حداکثر تعداد محتویات ذخیره شده برای برگرداندن. سرویس ممکن است کمتر از این مقدار را برگرداند. اگر مشخص نشود، تعداد پیش‌فرضی (کمتر از حداکثر) از موارد برگردانده می‌شود. حداکثر مقدار ۱۰۰۰ است؛ مقادیر بالاتر از ۱۰۰۰ به ۱۰۰۰ محدود می‌شوند.

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-3.6-flash"

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

نود جی اس

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

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

const cache = await ai.caches.create({
  model: modelName,
  config: {
    contents: contents,
    systemInstruction: "You are an expert analyzing transcripts.",
  },
});
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-3.6-flash"
document, err := client.Files.UploadFromPath(
	ctx, 
	filepath.Join(getMedia(), "a11.txt"), 
	&genai.UploadFileConfig{
		MIMEType : "text/plain",
	},
)
if err != nil {
	log.Fatal(err)
}
parts := []*genai.Part{
	genai.NewPartFromURI(document.URI, document.MIMEType),
}
contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}

cache, err := client.Caches.Create(ctx, modelName, &genai.CreateCachedContentConfig{
	Contents:          contents,
	SystemInstruction: genai.NewContentFromText(
		"You are an expert analyzing transcripts.", genai.RoleUser,
	),
})
if err != nil {
	log.Fatal(err)
}

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} است.

پارامترهای پرس و جو

رشته updateMask string ( FieldMask format)

لیست فیلدهایی که باید به‌روزرسانی شوند.

این لیستی از نام‌های کامل فیلدها است که با کاما از هم جدا شده‌اند. مثال: "user.displayName,photo" .

درخواست بدنه

بدنه درخواست شامل نمونه‌ای از CachedContent است.

فیلدها
Union type expiration
مشخص می‌کند که این منبع چه زمانی منقضی می‌شود. expiration فقط می‌تواند یکی از موارد زیر باشد:
رشته expireTime string ( Timestamp format)

مهر زمانی بر حسب UTC که نشان می‌دهد این منبع منقضی شده است. این مهر زمانی همیشه در خروجی ارائه می‌شود، صرف نظر از اینکه چه چیزی در ورودی ارسال شده است.

از RFC 3339 استفاده می‌کند، که در آن خروجی تولید شده همیشه به صورت Z-normalized خواهد بود و از ارقام کسری ۰، ۳، ۶ یا ۹ استفاده می‌کند. آفست‌های غیر از "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-3.6-flash"

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

نود جی اس

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

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-3.6-flash"
document, err := client.Files.UploadFromPath(
	ctx, 
	filepath.Join(getMedia(), "a11.txt"), 
	&genai.UploadFileConfig{
		MIMEType : "text/plain",
	},
)
if err != nil {
	log.Fatal(err)
}
parts := []*genai.Part{
	genai.NewPartFromURI(document.URI, document.MIMEType),
}
contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}

cache, err := client.Caches.Create(ctx, modelName, &genai.CreateCachedContentConfig{
	Contents:          contents,
	SystemInstruction: genai.NewContentFromText(
		"You are an expert analyzing transcripts.", genai.RoleUser,
	),
})
if err != nil {
	log.Fatal(err)
}

_, 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-3.6-flash"

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

نود جی اس

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

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

const cache = await ai.caches.create({
  model: modelName,
  config: {
    contents: contents,
    systemInstruction: "You are an expert analyzing transcripts.",
  },
});
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-3.6-flash"
document, err := client.Files.UploadFromPath(
	ctx, 
	filepath.Join(getMedia(), "a11.txt"), 
	&genai.UploadFileConfig{
		MIMEType : "text/plain",
	},
)
if err != nil {
	log.Fatal(err)
}
parts := []*genai.Part{
	genai.NewPartFromURI(document.URI, document.MIMEType),
}
contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}

cache, err := client.Caches.Create(ctx, modelName, &genai.CreateCachedContentConfig{
	Contents:          contents,
	SystemInstruction: genai.NewContentFromText(
		"You are an expert analyzing transcripts.", genai.RoleUser,
	),
})
if err != nil {
	log.Fatal(err)
}

_, 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-normalized خواهد بود و از ارقام کسری ۰، ۳، ۶ یا ۹ استفاده می‌کند. آفست‌های غیر از "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-normalized خواهد بود و از ارقام کسری ۰، ۳، ۶ یا ۹ استفاده می‌کند. آفست‌های غیر از "Z" نیز پذیرفته می‌شوند. مثال‌ها: "2014-10-02T15:01:23Z" ، "2014-10-02T15:01:23.045123456Z" یا "2014-10-02T15:01:23+05:30" .

شیء usageMetadata object ( UsageMetadata )

فقط خروجی. فراداده در مورد استفاده از محتوای ذخیره شده.

Union type expiration
مشخص می‌کند که این منبع چه زمانی منقضی می‌شود. expiration فقط می‌تواند یکی از موارد زیر باشد:
رشته expireTime string ( Timestamp format)

مهر زمانی بر حسب UTC که نشان می‌دهد این منبع منقضی شده است. این مهر زمانی همیشه در خروجی ارائه می‌شود، صرف نظر از اینکه چه چیزی در ورودی ارسال شده است.

از RFC 3339 استفاده می‌کند، که در آن خروجی تولید شده همیشه به صورت Z-normalized خواهد بود و از ارقام کسری ۰، ۳، ۶ یا ۹ استفاده می‌کند. آفست‌های غیر از "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

اختیاری. تغییرناپذیر. نام نمایشی معنادار تولید شده توسط کاربر برای محتوای ذخیره شده. حداکثر ۱۲۸ کاراکتر یونیکد.

string model

الزامی. تغییرناپذیر. نام Model که برای محتوای ذخیره‌شده استفاده می‌شود. قالب: models/{model}

شیء systemInstruction object ( Content )

Optional. Input only. Immutable. Developer set system instruction. Currently text only.

شیء 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)
  }
}

پیکربندی ابزار

پیکربندی ابزار شامل پارامترهایی برای تعیین استفاده Tool در درخواست.

فیلدها
شیء functionCallingConfig object ( FunctionCallingConfig )

اختیاری. پیکربندی فراخوانی تابع.

شیء retrievalConfig object ( RetrievalConfig )

اختیاری. پیکربندی بازیابی.

includeServerSideToolInvocations boolean

اختیاری. اگر مقدار آن درست باشد، پاسخ API شامل فراخوانی‌ها و پاسخ‌های ابزار سمت سرور در پیام Content خواهد بود. این به کلاینت‌ها اجازه می‌دهد تا تعاملات ابزار سرور را مشاهده کنند.

نمایش JSON
{
  "functionCallingConfig": {
    object (FunctionCallingConfig)
  },
  "retrievalConfig": {
    object (RetrievalConfig)
  },
  "includeServerSideToolInvocations": boolean
}

پیکربندی فراخوانی تابع

پیکربندی برای مشخص کردن رفتار فراخوانی تابع.

فیلدها
شمارشی mode enum ( Mode )

اختیاری. حالتی را که فراخوانی تابع باید در آن اجرا شود مشخص می‌کند. اگر مشخص نشود، مقدار پیش‌فرض روی AUTO تنظیم می‌شود.

string allowedFunctionNames[]

اختیاری. مجموعه‌ای از نام‌های تابع که در صورت ارائه، توابعی را که مدل فراخوانی خواهد کرد محدود می‌کنند.

این فقط باید زمانی تنظیم شود که حالت (Mode) روی ANY یا VALIDATED باشد. نام توابع باید با [FunctionDeclaration.name] مطابقت داشته باشد. وقتی تنظیم شود، مدل فراخوانی تابع را فقط از نام‌های تابع مجاز پیش‌بینی می‌کند.

نمایش JSON
{
  "mode": enum (Mode),
  "allowedFunctionNames": [
    string
  ]
}

حالت

با تعریف حالت اجرا، رفتار اجرایی را برای فراخوانی تابع تعریف می‌کند.

انوم‌ها
MODE_UNSPECIFIED حالت فراخوانی تابع نامشخص. این مقدار نباید استفاده شود.
AUTO رفتار پیش‌فرض مدل، مدل تصمیم می‌گیرد که یا یک فراخوانی تابع یا یک پاسخ زبان طبیعی را پیش‌بینی کند.
ANY مدل محدود به پیش‌بینی فقط فراخوانی یک تابع است. اگر "allowedFunctionNames" تنظیم شده باشد، فراخوانی تابع پیش‌بینی‌شده به هر یک از "allowedFunctionNames" محدود خواهد شد، در غیر این صورت فراخوانی تابع پیش‌بینی‌شده هر یک از "functionDeclarations" ارائه شده خواهد بود.
NONE مدل هیچ فراخوانی تابعی را پیش‌بینی نمی‌کند. رفتار مدل مانند زمانی است که هیچ اعلان تابعی ارسال نمی‌شود.
VALIDATED مدل تصمیم می‌گیرد که یا یک فراخوانی تابع یا یک پاسخ زبان طبیعی را پیش‌بینی کند، اما فراخوانی‌های تابع را با رمزگشایی محدود اعتبارسنجی می‌کند. اگر "allowedFunctionNames" تنظیم شده باشد، فراخوانی تابع پیش‌بینی‌شده به هر یک از "allowedFunctionNames" محدود خواهد شد، در غیر این صورت فراخوانی تابع پیش‌بینی‌شده هر یک از "functionDeclarations" ارائه شده خواهد بود.

پیکربندی بازیابی

پیکربندی بازیابی.

فیلدها
شیء latLng object ( LatLng )

اختیاری. موقعیت مکانی کاربر.

string languageCode

اختیاری. کد زبان کاربر. کد زبان برای محتوا. از برچسب‌های زبان تعریف‌شده توسط BCP47 استفاده کنید.

نمایش JSON
{
  "latLng": {
    object (LatLng)
  },
  "languageCode": string
}

لات‌لنگ

شیء‌ای که یک جفت عرض/طول جغرافیایی را نشان می‌دهد. این به صورت یک جفت دوتایی بیان می‌شود تا درجه عرض جغرافیایی و درجه طول جغرافیایی را نشان دهد. مگر اینکه خلاف آن مشخص شده باشد، این شیء باید با استاندارد WGS84 مطابقت داشته باشد. مقادیر باید در محدوده نرمال باشند.

فیلدها
number latitude

عرض جغرافیایی بر حسب درجه. باید در محدوده [-90.0، +90.0] باشد.

number longitude

طول جغرافیایی بر حسب درجه. باید در محدوده [-۱۸۰.۰، +۱۸۰.۰] باشد.

نمایش JSON
{
  "latitude": number,
  "longitude": number
}

کاربردفراداده

فراداده (metadata) در مورد استفاده از محتوای ذخیره شده.

فیلدها
integer totalTokenCount

تعداد کل توکن‌هایی که محتوای ذخیره‌شده مصرف می‌کند.

نمایش JSON
{
  "totalTokenCount": integer
}