Caching

שמירת מטמון של הקשר מאפשרת לכם לשמור ולעשות שימוש חוזר בטוקנים של קלט שחושבו מראש שאתם רוצים להשתמש בהם שוב ושוב, למשל כשאתם שואלים שאלות שונות לגבי אותו קובץ מדיה. השימוש ב-Cloud CDN יכול להוביל לחיסכון בעלויות ולשיפור המהירות, בהתאם לשימוש. למידע נוסף, אפשר לעיין במדריך בנושא שמירת הקשר במטמון.

שיטה: cachedContents.create

יצירת משאב CachedContent.

נקודת קצה

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

גוף הבקשה

גוף הבקשה מכיל מופע של CachedContent.

Fields
contents[] object (Content)

אופציונלי. קלט בלבד. אי אפשר לשנות אותו. התוכן שרוצים להוסיף למטמון.

tools[] object (Tool)

אופציונלי. קלט בלבד. אי אפשר לשנות אותו. רשימה של Tools שהמודל יכול להשתמש בה כדי ליצור את התשובה הבאה

expiration Union type
השדה הזה מציין מתי תוקף המשאב יפוג. הערך expiration יכול להיות רק אחד מהבאים:
expireTime string (Timestamp format)

חותמת זמן בשעון UTC שמציינת מתי המשאב הזה נחשב כמשאב שתוקפו פג. הערך הזה תמיד מופיע בפלט, לא משנה מה נשלח בקלט.

הפונקציה משתמשת ב-RFC 3339, והפלט שנוצר תמיד יהיה מנורמל ל-Z וישתמש ב-0, 3, 6 או 9 ספרות חלקיות. אפשר להשתמש גם בהיסטים אחרים מלבד Z. דוגמאות: "2014-10-02T15:01:23Z", ‏ "2014-10-02T15:01:23.045123456Z" או "2014-10-02T15:01:23+05:30".

ttl string (Duration format)

קלט בלבד. ערך TTL חדש למשאב הזה, קלט בלבד.

משך זמן בשניות עם עד תשע ספרות אחרי הנקודה העשרונית, שמסתיים ב-'s'. דוגמה: "3.5s".

displayName string

אופציונלי. אי אפשר לשנות אותו. שם התצוגה המשמעותי של התוכן שבמטמון, שנוצר על ידי המשתמש. 128 תווים לכל היותר ב-Unicode.

model string

חובה. אי אפשר לשנות אותו. השם של Model שבו רוצים להשתמש לתוכן שנשמר במטמון. הפורמט: models/{model}

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

Go

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

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

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

קונכייה

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

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

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

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

מהשם

Python

from google import genai
from google.genai import types

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

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

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

Node.js

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

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

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

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

Go

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

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

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

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

מצ'אט

Python

from google import genai
from google.genai import types

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

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

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

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

Node.js

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

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

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

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

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

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

Go

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

modelName := "gemini-1.5-flash-001"
systemInstruction := "You are an expert analyzing transcripts."

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

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

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

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

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

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

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

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

גוף התשובה

אם הפעולה בוצעה ללא שגיאות, גוף התגובה יכיל מופע חדש של CachedContent.

שיטה: cachedContents.list

רשימות CachedContents.

נקודת קצה

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

פרמטרים של שאילתה

pageSize integer

אופציונלי. המספר המקסימלי של תכנים שמאוחסנים במטמון שיוחזרו. יכול להיות שהשירות יחזיר פחות מהערך הזה. אם לא מציינים מספר, יוחזר מספר ברירת מחדל של פריטים (מתחת למקסימום). הערך המקסימלי הוא 1,000. ערכים מעל 1,000 יוגבלו ל-1,000.

pageToken string

אופציונלי. טוקן דף שהתקבל מקריאה קודמת של cachedContents.list. צריך להזין את האסימון כדי לאחזר את הדף הבא.

כשמבצעים חלוקה לעמודים, כל הפרמטרים האחרים שסופקו ל-cachedContents.list חייבים להיות זהים לקריאה שסיפקה את אסימון הדף.

גוף הבקשה

גוף הבקשה צריך להיות ריק.

גוף התשובה

תגובה עם רשימה של CachedContents.

אם הפעולה מצליחה, גוף התגובה מכיל נתונים במבנה הבא:

שדות
cachedContents[] object (CachedContent)

רשימת התוכן שנשמר במטמון.

nextPageToken string

אסימון שאפשר לשלוח כ-pageToken כדי לאחזר את הדף הבא. אם השדה הזה לא מופיע, אין דפים נוספים.

ייצוג ב-JSON
{
  "cachedContents": [
    {
      object (CachedContent)
    }
  ],
  "nextPageToken": string
}

שיטה: cachedContents.get

קורא את המשאב CachedContent.

נקודת קצה

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

פרמטרים של נתיב

name string

חובה. שם המשאב שמתייחס לרשומה במטמון התוכן. פורמט: 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);

Go

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

modelName := "gemini-1.5-flash-001"
document, err := client.Files.UploadFromPath(
	ctx, 
	filepath.Join(getMedia(), "a11.txt"), 
	&genai.UploadFileConfig{
		MIMEType : "text/plain",
	},
)
if err != nil {
	log.Fatal(err)
}
parts := []*genai.Part{
	genai.NewPartFromURI(document.URI, document.MIMEType),
}
contents := []*genai.Content{
	genai.NewContentFromParts(parts, "user"),
}

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

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

קונכייה

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

גוף התשובה

אם הפעולה בוצעה ללא שגיאות, גוף התגובה יכיל מופע של CachedContent.

Method: cachedContents.patch

עדכון של משאב CachedContent (אפשר לעדכן רק את תאריך התפוגה).

נקודת קצה

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

Go

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

modelName := "gemini-1.5-flash-001"
document, err := client.Files.UploadFromPath(
	ctx, 
	filepath.Join(getMedia(), "a11.txt"), 
	&genai.UploadFileConfig{
		MIMEType : "text/plain",
	},
)
if err != nil {
	log.Fatal(err)
}
parts := []*genai.Part{
	genai.NewPartFromURI(document.URI, document.MIMEType),
}
contents := []*genai.Content{
	genai.NewContentFromParts(parts, "user"),
}

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

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

קונכייה

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

גוף התשובה

אם הפעולה בוצעה ללא שגיאות, גוף התגובה יכיל מופע של CachedContent.

שיטה: cachedContents.delete

מחיקת משאב CachedContent.

נקודת קצה

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

פרמטרים של נתיב

name string

חובה. שם המשאב שאליו מתייחסת הרשומה במטמון התוכן. הפורמט: 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);

Go

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

modelName := "gemini-1.5-flash-001"
document, err := client.Files.UploadFromPath(
	ctx, 
	filepath.Join(getMedia(), "a11.txt"), 
	&genai.UploadFileConfig{
		MIMEType : "text/plain",
	},
)
if err != nil {
	log.Fatal(err)
}
parts := []*genai.Part{
	genai.NewPartFromURI(document.URI, document.MIMEType),
}
contents := []*genai.Content{
	genai.NewContentFromParts(parts, "user"),
}

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

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

קונכייה

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

גוף התשובה

אם הפעולה בוצעה ללא שגיאות, גוף התגובה הוא אובייקט JSON ריק.

משאב REST: ‏ cachedContents

משאב: CachedContent

תוכן שעבר עיבוד מראש ואפשר להשתמש בו בבקשה הבאה אל GenerativeService.

אפשר להשתמש בתוכן שמור במטמון רק עם המודל שאיתו הוא נוצר.

שדות
contents[] object (Content)

אופציונלי. קלט בלבד. אי אפשר לשנות אותו. התוכן שרוצים להוסיף למטמון.

tools[] object (Tool)

אופציונלי. קלט בלבד. אי אפשר לשנות אותו. רשימה של Tools שהמודל יכול להשתמש בה כדי ליצור את התשובה הבאה

createTime string (Timestamp format)

פלט בלבד. מועד היצירה של רשומת המטמון.

הפונקציה משתמשת ב-RFC 3339, והפלט שנוצר תמיד יהיה מנורמל ל-Z וישתמש ב-0, 3, 6 או 9 ספרות חלקיות. אפשר להשתמש גם בהיסטים אחרים מלבד Z. דוגמאות: "2014-10-02T15:01:23Z", ‏ "2014-10-02T15:01:23.045123456Z" או "2014-10-02T15:01:23+05:30".

updateTime string (Timestamp format)

פלט בלבד. המועד שבו רשומת המטמון עודכנה לאחרונה לפי שעון UTC.

הפונקציה משתמשת ב-RFC 3339, והפלט שנוצר תמיד יהיה מנורמל ל-Z וישתמש ב-0, 3, 6 או 9 ספרות חלקיות. אפשר להשתמש גם בהיסטים אחרים מלבד Z. דוגמאות: "2014-10-02T15:01:23Z", ‏ "2014-10-02T15:01:23.045123456Z" או "2014-10-02T15:01:23+05:30".

usageMetadata object (UsageMetadata)

פלט בלבד. מטא-נתונים על השימוש בתוכן שנשמר במטמון.

expiration Union type
השדה הזה מציין מתי תוקף המשאב יפוג. הערך expiration יכול להיות רק אחד מהבאים:
expireTime string (Timestamp format)

חותמת זמן בשעון UTC שמציינת מתי המשאב הזה נחשב כמשאב שתוקפו פג. הערך הזה תמיד מופיע בפלט, לא משנה מה נשלח בקלט.

הפונקציה משתמשת ב-RFC 3339, והפלט שנוצר תמיד יהיה מנורמל ל-Z וישתמש ב-0, 3, 6 או 9 ספרות חלקיות. אפשר להשתמש גם בהיסטים אחרים מלבד Z. דוגמאות: "2014-10-02T15:01:23Z", ‏ "2014-10-02T15:01:23.045123456Z" או "2014-10-02T15:01:23+05:30".

ttl string (Duration format)

קלט בלבד. ערך TTL חדש למשאב הזה, קלט בלבד.

משך זמן בשניות עם עד תשע ספרות אחרי הנקודה העשרונית, שמסתיים ב-'s'. דוגמה: "3.5s".

name string

פלט בלבד. מזהה. שם המשאב שאליו מתייחס התוכן שבמטמון. פורמט: cachedContents/{id}

displayName string

אופציונלי. אי אפשר לשנות אותו. שם התצוגה המשמעותי של התוכן שבמטמון, שנוצר על ידי המשתמש. 128 תווים לכל היותר ב-Unicode.

model string

חובה. אי אפשר לשנות אותו. השם של Model שבו רוצים להשתמש לתוכן שנשמר במטמון. הפורמט: models/{model}

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 שונים.

role string

אופציונלי. יוצר התוכן. הערך צריך להיות user או model.

מומלץ להגדיר את הפרמטר הזה לשיחות עם כמה תפניות, אחרת אפשר להשאיר אותו ריק או לא מוגדר.

ייצוג ב-JSON
{
  "parts": [
    {
      object (Part)
    }
  ],
  "role": string
}

חלק

סוג נתונים שמכיל מדיה שהיא חלק מהודעה Content מרובת חלקים.

Part מורכב מנתונים שמשויך אליהם סוג נתונים. Part יכול להכיל רק אחד מהסוגים המקובלים ב-Part.data.

ל-Part צריך להיות סוג MIME קבוע של IANA שמזהה את הסוג ותת-הסוג של המדיה אם השדה inlineData מלא בבייטים גולמיים.

שדות
thought boolean

אופציונלי. מציין אם החלק נוצר על ידי המודל.

thoughtSignature string (bytes format)

אופציונלי. חתימה אטומה למחשבה כדי שאפשר יהיה לעשות בה שימוש חוזר בבקשות הבאות.

מחרוזת בקידוד Base64.

data Union type
הערך 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.

metadata Union type
אמצעי בקרה לעיבוד מקדים נוסף של נתונים. הערך metadata יכול להיות רק אחד מהבאים:
videoMetadata object (VideoMetadata)

אופציונלי. מטא-נתונים של סרטון. צריך לציין את המטא-נתונים רק כשנתוני הסרטון מוצגים ב-inlineData או ב-fileData.

ייצוג ב-JSON
{
  "thought": boolean,
  "thoughtSignature": string,

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

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

Blob

בייטים גולמיים של מדיה.

אין לשלוח טקסט כבייטים גולמיים, אלא להשתמש בשדה 'text'.

שדות
mimeType string

סוג ה-MIME התקני של IANA של נתוני המקור. דוגמאות: – image/png – image/jpeg אם יסופק סוג MIME לא נתמך, תוחזר שגיאה. רשימה מלאה של הסוגים הנתמכים זמינה במאמר פורמטים נתמכים של קבצים.

data string (bytes format)

בייטים גולמיים לפורמטים של מדיה.

מחרוזת בקידוד Base64.

ייצוג ב-JSON
{
  "mimeType": string,
  "data": string
}

FunctionCall

ערך FunctionCall שחזוי על ידי המודל ומכיל מחרוזת שמייצגת את FunctionDeclaration.name עם הארגומנטים והערכים שלהם.

שדות
id string

אופציונלי. המזהה הייחודי של הקריאה לפונקציה. אם השדה מאוכלס, הלקוח יבצע את functionCall ויחזיר את התשובה עם id תואם.

name string

חובה. השם של הפונקציה שרוצים להפעיל. הערך חייב להיות a-z, ‏ A-Z, ‏ 0-9, או להכיל קווים תחתונים ומקפים, עם אורך מקסימלי של 63 תווים.

args object (Struct format)

אופציונלי. הפרמטרים והערכים של הפונקציה בפורמט אובייקט JSON.

ייצוג ב-JSON
{
  "id": string,
  "name": string,
  "args": {
    object
  }
}

FunctionResponse

פלט התוצאה מ-FunctionCall שמכיל מחרוזת שמייצגת את FunctionDeclaration.name ואובייקט JSON מובנה שמכיל פלט מהפונקציה, משמש כהקשר למודל. המאפיין הזה צריך להכיל את התוצאה של FunctionCall שנוצרה על סמך חיזוי של מודל.

שדות
id string

אופציונלי. המזהה של קריאת הפונקציה שהתשובה הזו מתייחסת אליה. השדה הזה מאוכלס על ידי הלקוח כדי להתאים לקריאה המתאימה לפונקציה id.

name string

חובה. השם של הפונקציה שרוצים להפעיל. הערך חייב להיות a-z, ‏ A-Z, ‏ 0-9, או להכיל קווים תחתונים ומקפים, עם אורך מקסימלי של 63 תווים.

response object (Struct format)

חובה. התגובה של הפונקציה בפורמט אובייקט JSON.

willContinue boolean

אופציונלי. האות הזה מציין שהבקשה להפעלת הפונקציה נמשכת, ויוחזרו עוד תשובות. כך הבקשה להפעלת הפונקציה הופכת לגנרטור. המדיניות רלוונטית רק להפעלות של פונקציות מסוג NON_BLOCKING, אחרת המערכת מתעלמת ממנה. אם המדיניות מוגדרת כ-False, תשובות חדשות לא ייכללו. מותר להחזיר response ריק עם willContinue=False כדי לציין שהקריאה לפונקציה הסתיימה. יכול להיות שהפעולה הזו עדיין תפעיל את יצירת המודל. כדי למנוע הפעלה של יצירה ולסיים את הקריאה לפונקציה, צריך להגדיר בנוסף את scheduling ל-SILENT.

scheduling enum (Scheduling)

אופציונלי. מציינים איך לתזמן את התשובה בשיחה. ההגדרה הזו רלוונטית רק להפעלות של פונקציות מסוג NON_BLOCKING, אחרת המערכת מתעלמת ממנה. ברירת המחדל היא WHEN_IDLE.

ייצוג ב-JSON
{
  "id": string,
  "name": string,
  "response": {
    object
  },
  "willContinue": boolean,
  "scheduling": enum (Scheduling)
}

תזמון

מציינים איך לתזמן את התשובה בשיחה.

טיפוסים בני מנייה (enum)
SCHEDULING_UNSPECIFIED הערך הזה לא בשימוש.
SILENT רק תוסיף את התוצאה להקשר של השיחה, אל תקטע את התהליך או תפעיל יצירה.
WHEN_IDLE להוסיף את התוצאה להקשר של השיחה ולתת הנחיה ליצירת פלט בלי להפריע ליצירה המתמשכת.
INTERRUPT הוספת התוצאה להקשר של השיחה, הפסקת היצירה המתמשכת והנחיה ליצירת פלט.

FileData

נתונים שמבוססים על URI.

שדות
mimeType string

אופציונלי. סוג ה-MIME התקני של IANA של נתוני המקור.

fileUri string

חובה. URI.

ייצוג ב-JSON
{
  "mimeType": string,
  "fileUri": string
}

ExecutableCode

קוד שנוצר על ידי המודל ומיועד להרצה, והתוצאה שמוחזרת למודל.

נוצר רק כשמשתמשים בכלי CodeExecution, שבו הקוד יופעל באופן אוטומטי, וגם ייווצר CodeExecutionResult תואם.

שדות
language enum (Language)

חובה. שפת התכנות של code.

code string

חובה. הקוד שיופעל.

ייצוג ב-JSON
{
  "language": enum (Language),
  "code": string
}

שפה

שפות התכנות הנתמכות לקוד שנוצר.

טיפוסים בני מנייה (enum)
LANGUAGE_UNSPECIFIED לא נבחרה שפה. אין להשתמש בערך הזה.
PYTHON ‫Python >= 3.10, עם numpy ו-simpy.

CodeExecutionResult

התוצאה של הפעלת ExecutableCode.

נוצר רק כשמשתמשים ב-CodeExecution, ותמיד מופיע אחרי part שמכיל את ExecutableCode.

שדות
outcome enum (Outcome)

חובה. התוצאה של הרצת הקוד.

output string

אופציונלי. התשובה מכילה את הפלט הרגיל (stdout) אם ביצוע הקוד מצליח, או את הפלט של שגיאות (stderr) או תיאור אחר אם הביצוע נכשל.

ייצוג ב-JSON
{
  "outcome": enum (Outcome),
  "output": string
}

תוצאה

ספירה של התוצאות האפשריות של הרצת הקוד.

טיפוסים בני מנייה (enum)
OUTCOME_UNSPECIFIED הסטטוס לא צוין. אין להשתמש בערך הזה.
OUTCOME_OK ביצוע הקוד הושלם בהצלחה.
OUTCOME_FAILED ביצוע הקוד הסתיים, אבל עם כשל. השדה stderr צריך להכיל את הסיבה.
OUTCOME_DEADLINE_EXCEEDED הביצוע של הקוד נמשך יותר מדי זמן ובוטל. יכול להיות שיוצג פלט חלקי, אבל לא בהכרח.

VideoMetadata

המטא-נתונים מתארים את תוכן הווידאו של הקלט.

שדות
startOffset string (Duration format)

אופציונלי. ההיסט מתחילת הסרטון.

משך זמן בשניות עם עד תשע ספרות אחרי הנקודה העשרונית, שמסתיים ב-'s'. דוגמה: "3.5s".

endOffset string (Duration format)

אופציונלי. ההיסט של סוף הסרטון.

משך זמן בשניות עם עד תשע ספרות אחרי הנקודה העשרונית, שמסתיים ב-'s'. דוגמה: "3.5s".

fps number

אופציונלי. קצב הפריימים של הסרטון שנשלח למודל. אם לא מציינים ערך, ברירת המחדל היא 1.0. טווח ה-fps הוא (0.0, 24.0].

ייצוג ב-JSON
{
  "startOffset": string,
  "endOffset": string,
  "fps": number
}

כלי

פרטי כלי שהמודל עשוי להשתמש בהם כדי ליצור תשובה.

Tool הוא קטע קוד שמאפשר למערכת ליצור אינטראקציה עם מערכות חיצוניות כדי לבצע פעולה או סדרת פעולות, ללא ידיעת המודל או מחוץ לתחום הפעולה שלו.

שדות
functionDeclarations[] object (FunctionDeclaration)

אופציונלי. רשימה של FunctionDeclarations שזמינות למודל שאפשר להשתמש בהן לקריאה לפונקציות.

המודל או המערכת לא מבצעים את הפונקציה. במקום זאת, הפונקציה המוגדרת עשויה להיות מוחזרת כ-FunctionCall עם ארגומנטים לצד הלקוח לצורך ביצוע. יכול להיות שהמודל יחליט להפעיל קבוצת משנה של הפונקציות האלה על ידי מילוי FunctionCall בתגובה. התור הבא לשיחה עשוי להכיל FunctionResponse עם הקשר ליצירת Content.role 'פונקציה' לתור הבא של המודל.

googleSearchRetrieval object (GoogleSearchRetrieval)

אופציונלי. כלי לאחזור מידע שמבוסס על חיפוש Google.

codeExecution object (CodeExecution)

אופציונלי. ההגדרה הזו מאפשרת למודל להריץ קוד כחלק מהיצירה.

urlContext object (UrlContext)

אופציונלי. כלי לתמיכה באחזור הקשר של כתובת URL.

ייצוג ב-JSON
{
  "functionDeclarations": [
    {
      object (FunctionDeclaration)
    }
  ],
  "googleSearchRetrieval": {
    object (GoogleSearchRetrieval)
  },
  "codeExecution": {
    object (CodeExecution)
  },
  "googleSearch": {
    object (GoogleSearch)
  },
  "urlContext": {
    object (UrlContext)
  }
}

FunctionDeclaration

ייצוג מובנה של הצהרת פונקציה כמוגדר במפרט OpenAPI 3.03. ההצהרה כוללת את שם הפונקציה והפרמטרים שלה. ה-FunctionDeclaration הזה הוא ייצוג של בלוק קוד שאפשר להשתמש בו כTool על ידי המודל, והוא מופעל על ידי הלקוח.

שדות
name string

חובה. שם הפונקציה. הערך חייב להיות a-z, ‏ A-Z, ‏ 0-9, או להכיל קווים תחתונים ומקפים, עם אורך מקסימלי של 63 תווים.

description string

חובה. תיאור קצר של הפונקציה.

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

אופציונלי. הפורמט של הנתונים. השימוש בזה מיועד רק לסוגי נתונים פרימיטיביים. פורמטים נתמכים: לסוג NUMBER: float, double לסוג INTEGER: int32, int64 לסוג STRING: enum, date-time

title string

אופציונלי. השם של הסכימה.

description string

אופציונלי. תיאור קצר של הפרמטר. יכול להיות שהמידע הזה יכלול דוגמאות לשימוש. התיאור של הפרמטר יכול להיות בפורמט Markdown.

nullable boolean

אופציונלי. מציין אם הערך יכול להיות null.

enum[] string

אופציונלי. ערכים אפשריים של רכיב מסוג STRING עם פורמט enum. לדוגמה, אפשר להגדיר כיוון Enum כך : {type:STRING, format:enum, enum:["EAST", NORTH", "SOUTH", "WEST"]}

maxItems string (int64 format)

אופציונלי. המספר המקסימלי של הרכיבים עבור Type.ARRAY.

minItems string (int64 format)

אופציונלי. מספר המינימלי של הרכיבים עבור Type.ARRAY.

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

אופציונלי. מאפיינים של Type.OBJECT.

אובייקט שמכיל רשימה של "key": value זוגות. דוגמה: { "name": "wrench", "mass": "1.3kg", "count": "3" }

required[] string

אופציונלי. מאפייני חובה של Type.OBJECT.

minProperties string (int64 format)

אופציונלי. מספר המאפיינים המינימלי עבור Type.OBJECT.

maxProperties string (int64 format)

אופציונלי. מספר המאפיינים המקסימלי עבור Type.OBJECT.

minLength string (int64 format)

אופציונלי. שדות סכימה לסוג STRING אורך מינימלי של הסוג STRING

maxLength string (int64 format)

אופציונלי. האורך המקסימלי של Type.STRING

pattern string

אופציונלי. תבנית של Type.STRING להגבלת מחרוזת לביטוי רגולרי.

example value (Value format)

אופציונלי. דוגמה לאובייקט. השדה יאוכלס רק אם האובייקט הוא השורש.

anyOf[] object (Schema)

אופציונלי. הערך צריך לעבור אימות מול כל אחת מסכימות המשנה ברשימה (אחת או יותר).

propertyOrdering[] string

אופציונלי. סדר המאפיינים. זה לא שדה רגיל במפרט של Open API. הוא משמש לקביעת סדר המאפיינים בתגובה.

default value (Value format)

אופציונלי. ערך ברירת המחדל של השדה. לפי JSON Schema, השדה הזה מיועד לגנרטורים של תיעוד ולא משפיע על האימות. לכן הוא נכלל כאן ומתעלמים ממנו, כדי שמפתחים ששולחים סכימות עם שדה default לא יקבלו שגיאות של שדה לא ידוע.

items object (Schema)

אופציונלי. סכימה של רכיבי Type.ARRAY.

minimum number

אופציונלי. שדות סכמה לסוגים INTEGER ו-NUMBER הערך המינימלי של Type.INTEGER ו-Type.NUMBER

maximum number

אופציונלי. הערך המקסימלי של Type.INTEGER ו-Type.NUMBER

ייצוג ב-JSON
{
  "type": enum (Type),
  "format": string,
  "title": string,
  "description": string,
  "nullable": boolean,
  "enum": [
    string
  ],
  "maxItems": string,
  "minItems": string,
  "properties": {
    string: {
      object (Schema)
    },
    ...
  },
  "required": [
    string
  ],
  "minProperties": string,
  "maxProperties": string,
  "minLength": string,
  "maxLength": string,
  "pattern": string,
  "example": value,
  "anyOf": [
    {
      object (Schema)
    }
  ],
  "propertyOrdering": [
    string
  ],
  "default": value,
  "items": {
    object (Schema)
  },
  "minimum": number,
  "maximum": number
}

סוג

הסוג מכיל את רשימת סוגי הנתונים של OpenAPI כפי שהוגדרו בכתובת https://spec.openapis.org/oas/v3.0.3#data-types

טיפוסים בני מנייה (enum)
TYPE_UNSPECIFIED לא צוין, אין להשתמש.
STRING סוג מחרוזת.
NUMBER סוג המספר.
INTEGER סוג Integer.
BOOLEAN טיפוס בוליאני.
ARRAY סוג המערך.
OBJECT סוג האובייקט.
NULL סוג Null.

התנהגות

הגדרת אופן הפעולה של הפונקציה. ברירת המחדל היא BLOCKING.

טיפוסים בני מנייה (enum)
UNSPECIFIED הערך הזה לא בשימוש.
BLOCKING אם מוגדרת פונקציה, המערכת תמתין לקבלת תשובה מהפונקציה לפני שתמשיך את השיחה.
NON_BLOCKING אם ההגדרה הזו מוגדרת, המערכת לא תמתין לקבלת התגובה של הפונקציה. במקום זאת, הוא ינסה לטפל בתשובות לפונקציות כשהן יהיו זמינות, תוך שמירה על השיחה בין המשתמש למודל.

GoogleSearchRetrieval

כלי לאחזור נתונים ציבוריים מהאינטרנט לצורך ביסוס, מבית Google.

שדות
dynamicRetrievalConfig object (DynamicRetrievalConfig)

מציין את הגדרת האחזור הדינמי של המקור הנתון.

ייצוג ב-JSON
{
  "dynamicRetrievalConfig": {
    object (DynamicRetrievalConfig)
  }
}

DynamicRetrievalConfig

תיאור האפשרויות להתאמה אישית של אחזור דינמי.

שדות
mode enum (Mode)

המצב של כלי החיזוי שישמש לאחזור דינמי.

dynamicThreshold number

ערך הסף שישמש לאחזור דינמי. אם לא מגדירים את המדיניות, המערכת תשתמש בערך ברירת המחדל.

ייצוג ב-JSON
{
  "mode": enum (Mode),
  "dynamicThreshold": number
}

מצב

המצב של כלי החיזוי שישמש לאחזור דינמי.

טיפוסים בני מנייה (enum)
MODE_UNSPECIFIED תמיד מפעילים אחזור.
MODE_DYNAMIC הפעלה של אחזור רק כשהמערכת מחליטה שזה נחוץ.

CodeExecution

אין שדות מסוג זה.

כלי שמריץ קוד שנוצר על ידי המודל ומחזיר את התוצאה למודל באופן אוטומטי.

אפשר גם לעיין בExecutableCode ובCodeExecutionResult, שנוצרים רק כשמשתמשים בכלי הזה.

GoogleSearch

סוג הכלי GoogleSearch. כלי לתמיכה בחיפוש Google במודל. מופעל על ידי Google.

שדות
timeRangeFilter object (Interval)

אופציונלי. סינון תוצאות החיפוש לפי טווח זמן מסוים. אם הלקוחות מגדירים שעת התחלה, הם חייבים להגדיר גם שעת סיום (ולהיפך).

ייצוג ב-JSON
{
  "timeRangeFilter": {
    object (Interval)
  }
}

מרווח

מייצג מרווח זמן, שמקודד כחותמת זמן של ההתחלה (כולל) וכחותמת זמן של הסיום (לא כולל).

ערך ההתחלה חייב להיות קטן מערך הסיום או שווה לו. אם שעת ההתחלה שווה לשעת הסיום, המרווח ריק (לא תואם לאף שעה). אם לא מציינים את שעת ההתחלה ואת שעת הסיום, המרווח מתאים לכל שעה.

שדות
startTime string (Timestamp format)

אופציונלי. ההתחלה של מרווח הזמן, כולל.

אם מציינים חותמת זמן שתואמת למרווח הזה, היא צריכה להיות זהה לתאריך ההתחלה או מאוחר ממנו.

הפונקציה משתמשת ב-RFC 3339, והפלט שנוצר תמיד יהיה מנורמל ל-Z וישתמש ב-0, 3, 6 או 9 ספרות חלקיות. אפשר להשתמש גם בהיסטים אחרים מלבד Z. דוגמאות: "2014-10-02T15:01:23Z", ‏ "2014-10-02T15:01:23.045123456Z" או "2014-10-02T15:01:23+05:30".

endTime string (Timestamp format)

אופציונלי. סוף המרווח, לא כולל.

אם מציינים חותמת זמן, היא צריכה להיות לפני סוף המרווח.

הפונקציה משתמשת ב-RFC 3339, והפלט שנוצר תמיד יהיה מנורמל ל-Z וישתמש ב-0, 3, 6 או 9 ספרות חלקיות. אפשר להשתמש גם בהיסטים אחרים מלבד Z. דוגמאות: "2014-10-02T15:01:23Z", ‏ "2014-10-02T15:01:23.045123456Z" או "2014-10-02T15:01:23+05:30".

ייצוג ב-JSON
{
  "startTime": string,
  "endTime": string
}

UrlContext

אין שדות מסוג זה.

כלי לתמיכה באחזור הקשר של כתובת URL.

ToolConfig

הגדרת הכלי שמכילה פרמטרים לציון השימוש ב-Tool בבקשה.

שדות
functionCallingConfig object (FunctionCallingConfig)

אופציונלי. הגדרת בקשות להפעלת פונקציה.

ייצוג ב-JSON
{
  "functionCallingConfig": {
    object (FunctionCallingConfig)
  }
}

FunctionCallingConfig

הגדרה לציון התנהגות של קריאה לפונקציה.

שדות
mode enum (Mode)

אופציונלי. מציינת את המצב שבו הפעלת הפונקציה צריכה להתבצע. אם לא מציינים ערך, ערך ברירת המחדל יהיה AUTO.

allowedFunctionNames[] string

אופציונלי. קבוצה של שמות פונקציות, שאם מספקים אותם, המודל יפעיל רק את הפונקציות האלה.

ההגדרה הזו צריכה להיות מוגדרת רק כשהמצב הוא ANY. שמות הפונקציות צריכים להיות זהים לערך [FunctionDeclaration.name]. אם המצב מוגדר ל-ANY, המודל ינבא קריאה לפונקציה מתוך קבוצת שמות הפונקציות שסופקו.

ייצוג ב-JSON
{
  "mode": enum (Mode),
  "allowedFunctionNames": [
    string
  ]
}

מצב

הגדרת אופן הפעולה של הפעלת פונקציות על ידי הגדרת מצב ההפעלה.

טיפוסים בני מנייה (enum)
MODE_UNSPECIFIED מצב לא מוגדר של הפעלת פונקציות. אין להשתמש בערך הזה.
AUTO התנהגות ברירת המחדל של המודל, המודל מחליט לחזות קריאה לפונקציה או תגובה בשפה טבעית.
ANY המודל מוגבל לחיזוי של קריאה לפונקציה בלבד. אם מוגדרים שמות של פונקציות מותרות (allowedFunctionNames), הקריאה החזויה לפונקציה תוגבל לאחד מהשמות האלה. אחרת, הקריאה החזויה לפונקציה תהיה אחת מההצהרות על הפונקציות (functionDeclarations) שסופקו.
NONE המודל לא יבצע חיזוי של הפעלת פונקציה. התנהגות המודל זהה למצב שבו לא מועברות הצהרות על פונקציות.
VALIDATED המודל מחליט לחזות קריאה לפונקציה או תשובה בשפה טבעית, אבל יאמת קריאות לפונקציה באמצעות פענוח מוגבל.

UsageMetadata

מטא-נתונים על השימוש בתוכן שנשמר במטמון.

שדות
totalTokenCount integer

המספר הכולל של האסימונים שהתוכן שנשמר במטמון צורך.

ייצוג ב-JSON
{
  "totalTokenCount": integer
}