Caching

Ruajtja në memorje e kontekstit ju lejon të ruani dhe ripërdorni token-e hyrës të parallogaritur që dëshironi të përdorni në mënyrë të përsëritur, për shembull kur bëni pyetje të ndryshme në lidhje me të njëjtin skedar mediatik. Kjo mund të çojë në kursime në kosto dhe shpejtësi, varësisht nga përdorimi. Për një hyrje të detajuar, shihni udhëzuesin e Ruajtjes në Memorje të Kontekstit .

Metoda: cachedContents.create

Krijon burimin CachedContent.

Pika e Fundit

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

Trupi i kërkesës

Trupi i kërkesës përmban një instancë të CachedContent .

Fushat
contents[] object ( Content )

Opsionale. Vetëm hyrje. E pandryshueshme. Përmbajtja në memorien e përkohshme.

tools[] object ( Tool )

Opsionale. Vetëm hyrje. I pandryshueshëm. Një listë Tools që modeli mund të përdorë për të gjeneruar përgjigjen tjetër.

Union type expiration
Specifikon se kur do të skadojë ky burim. expiration mund të jetë vetëm një nga të mëposhtmet:
Vargu i expireTime string ( Timestamp format)

Vula kohore në UTC e kohës kur ky burim konsiderohet i skaduar. Kjo jepet gjithmonë në dalje, pavarësisht se çfarë është dërguar në hyrje.

Përdor RFC 3339, ku rezultati i gjeneruar do të jetë gjithmonë i normalizuar sipas Z-së dhe do të përdorë 0, 3, 6 ose 9 shifra thyesore. Pranohen edhe zhvendosje të tjera përveç "Z". Shembuj: "2014-10-02T15:01:23Z" , "2014-10-02T15:01:23.045123456Z" ose "2014-10-02T15:01:23+05:30" .

vargu ttl string ( Duration format)

Vetëm hyrje. TTL e re për këtë burim, vetëm hyrje.

Një kohëzgjatje në sekonda me deri në nëntë shifra thyesore, që mbaron me ' s '. Shembull: "3.5s" .

string displayName të Shfaqjes

Opsionale. I pandryshueshëm. Emri i shfaqjes kuptimplotë i gjeneruar nga përdoruesi i përmbajtjes së ruajtur në memorien e përkohshme. Maksimumi 128 karaktere Unicode.

string model

E detyrueshme. I pandryshueshëm. Emri i Model që do të përdoret për përmbajtjen e ruajtur në memorje. Formati: models/{model}

objekti systemInstruction object ( Content )

Opsionale. Vetëm hyrje. I pandryshueshëm. Zhvilluesi vendosi udhëzimet e sistemit. Aktualisht vetëm tekst.

object ( ToolConfig ) toolConfig (ToolConfig)

Opsionale. Vetëm hyrje. I pandryshueshëm. Konfigurimi i mjetit. Ky konfigurim ndahet për të gjitha mjetet.

Shembull kërkese

Bazë

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

Shko

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)

Guaskë

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

Nga emri

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

Shko

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)

Nga biseda

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

Shko

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

Trupi i përgjigjes

Nëse është e suksesshme, trupi i përgjigjes përmban një instancë të sapokrijuar të CachedContent .

Metoda: cachedContents.list

Listat e Përmbajtjeve të Ruajtura në Memorje.

Pika e Fundit

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

Parametrat e pyetjes

pageSize integer

Opsionale. Numri maksimal i përmbajtjeve të ruajtura në memorje për t'u kthyer. Shërbimi mund të kthejë më pak se kjo vlerë. Nëse nuk specifikohet, do të kthehet një numër i parazgjedhur (nën maksimumin) i artikujve. Vlera maksimale është 1000; vlerat mbi 1000 do të detyrohen në 1000.

string pageToken it

Opsionale. Një shenjë faqeje, e marrë nga një thirrje e mëparshme cachedContents.list . Jepni këtë për të marrë faqen pasuese.

Gjatë faqosjes, të gjithë parametrat e tjerë të dhënë për cachedContents.list duhet të përputhen me thirrjen që ofroi tokenin e faqes.

Trupi i kërkesës

Trupi i kërkesës duhet të jetë bosh.

Trupi i përgjigjes

Përgjigje me listën CachedContents.

Nëse është i suksesshëm, trupi i përgjigjes përmban të dhëna me strukturën e mëposhtme:

Fushat
cachedContents[] object ( CachedContent )

Lista e përmbajtjeve të ruajtura në memorien e përkohshme.

string nextPageToken

Një shenjë, e cila mund të dërgohet si pageToken për të marrë faqen tjetër. Nëse kjo fushë lihet jashtë, nuk ka faqe pasuese.

Përfaqësimi JSON
{
  "cachedContents": [
    {
      object (CachedContent)
    }
  ],
  "nextPageToken": string
}

Metoda: cachedContents.get

Lexon burimin CachedContent.

Pika e Fundit

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

Parametrat e shtegut

string name

E detyrueshme. Emri i burimit që i referohet hyrjes në memorien e përkohshme të përmbajtjes. Formati: cachedContents/{id} Merr formën cachedContents/{cachedcontent} .

Trupi i kërkesës

Trupi i kërkesës duhet të jetë bosh.

Shembull kërkese

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

Shko

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)

Guaskë

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

Trupi i përgjigjes

Nëse është e suksesshme, trupi i përgjigjes përmban një instancë të CachedContent .

Metoda: cachedContents.patch

Përditëson burimin CachedContent (vetëm data e skadimit mund të përditësohet).

Pika e Fundit

përditësim https: / /generativelanguage.googleapis.com /v1beta /{cachedContent.name=cachedContents /*}
PATCH https://generativelanguage.googleapis.com/v1beta/{cachedContent.name=cachedContents/*}

Parametrat e shtegut

string cachedContent.name

Vetëm rezultati. Identifikuesi. Emri i burimit që i referohet përmbajtjes së ruajtur në memorje. Formati: cachedContents/{id} Merr formën cachedContents/{cachedcontent} .

Parametrat e pyetjes

vargu updateMask string ( FieldMask format)

Lista e fushave që duhen përditësuar.

Kjo është një listë e ndarë me presje e emrave të fushave plotësisht të kualifikuara. Shembull: "user.displayName,photo" .

Trupi i kërkesës

Trupi i kërkesës përmban një instancë të CachedContent .

Fushat
Union type expiration
Specifikon se kur do të skadojë ky burim. expiration mund të jetë vetëm një nga të mëposhtmet:
Vargu i expireTime string ( Timestamp format)

Vula kohore në UTC e kohës kur ky burim konsiderohet i skaduar. Kjo jepet gjithmonë në dalje, pavarësisht se çfarë është dërguar në hyrje.

Përdor RFC 3339, ku rezultati i gjeneruar do të jetë gjithmonë i normalizuar sipas Z-së dhe do të përdorë 0, 3, 6 ose 9 shifra thyesore. Pranohen edhe zhvendosje të tjera përveç "Z". Shembuj: "2014-10-02T15:01:23Z" , "2014-10-02T15:01:23.045123456Z" ose "2014-10-02T15:01:23+05:30" .

vargu ttl string ( Duration format)

Vetëm hyrje. TTL e re për këtë burim, vetëm hyrje.

Një kohëzgjatje në sekonda me deri në nëntë shifra thyesore, që mbaron me ' s '. Shembull: "3.5s" .

Shembull kërkese

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

Shko

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)

Guaskë

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

Trupi i përgjigjes

Nëse është e suksesshme, trupi i përgjigjes përmban një instancë të CachedContent .

Metoda: cachedContents.delete

Fshin burimin CachedContent.

Pika e Fundit

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

Parametrat e shtegut

string name

E detyrueshme. Emri i burimit që i referohet hyrjes në memorien e përkohshme të përmbajtjes. Formati: cachedContents/{id} Merr formën cachedContents/{cachedcontent} .

Trupi i kërkesës

Trupi i kërkesës duhet të jetë bosh.

Shembull kërkese

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

Shko

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)

Guaskë

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

Trupi i përgjigjes

Nëse është i suksesshëm, trupi i përgjigjes është një objekt JSON bosh.

Burimi REST: cachedContents

Burimi: CachedContent

Përmbajtje që është përpunuar paraprakisht dhe mund të përdoret në kërkesën pasuese drejtuar GenerativeService.

Përmbajtja e ruajtur në memorien e përkohshme mund të përdoret vetëm me modelin për të cilin është krijuar.

Fushat
contents[] object ( Content )

Opsionale. Vetëm hyrje. E pandryshueshme. Përmbajtja në memorien e përkohshme.

tools[] object ( Tool )

Opsionale. Vetëm hyrje. I pandryshueshëm. Një listë Tools që modeli mund të përdorë për të gjeneruar përgjigjen tjetër.

createTime string ( Timestamp format)

Vetëm rezultati. Koha e krijimit të hyrjes në memorien e përkohshme.

Përdor RFC 3339, ku rezultati i gjeneruar do të jetë gjithmonë i normalizuar sipas Z-së dhe do të përdorë 0, 3, 6 ose 9 shifra thyesore. Pranohen edhe zhvendosje të tjera përveç "Z". Shembuj: "2014-10-02T15:01:23Z" , "2014-10-02T15:01:23.045123456Z" ose "2014-10-02T15:01:23+05:30" .

vargu updateTime string ( Timestamp format)

Vetëm dalje. Kur hyrja e memories së përkohshme është përditësuar për herë të fundit në kohën UTC.

Përdor RFC 3339, ku rezultati i gjeneruar do të jetë gjithmonë i normalizuar sipas Z-së dhe do të përdorë 0, 3, 6 ose 9 shifra thyesore. Pranohen edhe zhvendosje të tjera përveç "Z". Shembuj: "2014-10-02T15:01:23Z" , "2014-10-02T15:01:23.045123456Z" ose "2014-10-02T15:01:23+05:30" .

object ( UsageMetadata ) usageMetadata (UsageMetadata)

Vetëm rezultate. Meta të dhëna mbi përdorimin e përmbajtjes së ruajtur në memorien e përkohshme.

Union type expiration
Specifikon se kur do të skadojë ky burim. expiration mund të jetë vetëm një nga të mëposhtmet:
Vargu i expireTime string ( Timestamp format)

Vula kohore në UTC e kohës kur ky burim konsiderohet i skaduar. Kjo jepet gjithmonë në dalje, pavarësisht se çfarë është dërguar në hyrje.

Përdor RFC 3339, ku rezultati i gjeneruar do të jetë gjithmonë i normalizuar sipas Z-së dhe do të përdorë 0, 3, 6 ose 9 shifra thyesore. Pranohen edhe zhvendosje të tjera përveç "Z". Shembuj: "2014-10-02T15:01:23Z" , "2014-10-02T15:01:23.045123456Z" ose "2014-10-02T15:01:23+05:30" .

vargu ttl string ( Duration format)

Vetëm hyrje. TTL e re për këtë burim, vetëm hyrje.

Një kohëzgjatje në sekonda me deri në nëntë shifra thyesore, që mbaron me ' s '. Shembull: "3.5s" .

string name

Vetëm rezultat. Identifikues. Emri i burimit që i referohet përmbajtjes së ruajtur në memorje. Formati: cachedContents/{id}

string displayName të Shfaqjes

Opsionale. I pandryshueshëm. Emri i shfaqjes kuptimplotë i gjeneruar nga përdoruesi i përmbajtjes së ruajtur në memorien e përkohshme. Maksimumi 128 karaktere Unicode.

string model

E detyrueshme. I pandryshueshëm. Emri i Model që do të përdoret për përmbajtjen e ruajtur në memorje. Formati: models/{model}

objekti systemInstruction object ( Content )

Opsionale. Vetëm hyrje. I pandryshueshëm. Zhvilluesi vendosi udhëzimet e sistemit. Aktualisht vetëm tekst.

object ( ToolConfig ) toolConfig (ToolConfig)

Opsionale. Vetëm hyrje. I pandryshueshëm. Konfigurimi i mjetit. Ky konfigurim ndahet për të gjitha mjetet.

Përfaqësimi 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)
  }
}

Përmbajtja

Lloji i të dhënave të strukturuara bazë që përmban përmbajtje shumëpjesëshe të një mesazhi.

Një Content përfshin një fushë role që përcakton prodhuesin e Content dhe një fushë parts që përmban të dhëna shumëpjesëshe që përmbajnë përmbajtjen e mesazhit të radhës.

Fushat
objekti parts[] object ( Part )

Parts të renditura që përbëjnë një mesazh të vetëm. Pjesët mund të kenë lloje të ndryshme MIME.

string role

Opsionale. Prodhuesi i përmbajtjes. Duhet të jetë ose 'përdorues' ose 'model'.

E dobishme për t'u vendosur për biseda me shumë kthesa, përndryshe mund të lihet bosh ose e pacaktuar.

Përfaqësimi JSON
{
  "parts": [
    {
      object (Part)
    }
  ],
  "role": string
}

Pjesë

Një lloj të dhënash që përmban media që është pjesë e një mesazhi Content me shumë pjesë.

Një Part përbëhet nga të dhëna që kanë një lloj të dhënash të shoqëruar. Një Part mund të përmbajë vetëm një nga llojet e pranuara në Part.data .

Një Part duhet të ketë një lloj fiks IANA MIME që identifikon llojin dhe nëntipin e medias nëse fusha inlineData është e mbushur me bajt të papërpunuar.

Fushat
thought boolean

Opsionale. Tregon nëse pjesa është menduar nga modeli.

vargu thoughtSignature string ( bytes format)

Opsionale. Një nënshkrim i errët për mendimin në mënyrë që të mund të ripërdoret në kërkesat pasuese.

Një varg i koduar me base64.

object ( Struct format) partMetadata (formati Struct)

Meta të dhënat e personalizuara të shoqëruara me Pjesën. Agjentët që përdorin genai.Part si përfaqësim të përmbajtjes mund të kenë nevojë të mbajnë gjurmët e informacionit shtesë. Për shembull, mund të jetë emri i një skedari/burimi nga i cili buron Pjesa ose një mënyrë për të shumëfishuar rrjedha të shumëfishta Pjesësh.

Union type data
data mund të jenë vetëm një nga të mëposhtmet:
string text

Tekst i integruar.

Objekti inlineData object ( Blob )

Bajt mediash të integruara.

object ( FunctionCall ) functionCall (FunctionCall)

Një FunctionCall i parashikuar i kthyer nga modeli që përmban një varg që përfaqëson FunctionDeclaration.name me argumentet dhe vlerat e tyre.

object ( FunctionResponse ) functionResponse (FunctionResponse)

Rezultati i një FunctionCall që përmban një varg që përfaqëson FunctionDeclaration.name dhe një objekt të strukturuar JSON që përmban çdo rezultat nga funksioni përdoret si kontekst për modelin.

object ( FileData ) fileData (FileData)

Të dhëna të bazuara në URI.

object ( ExecutableCode ) executableCode (ExecutableCode)

Kodi i gjeneruar nga modeli që është menduar të ekzekutohet.

object ( CodeExecutionResult ) codeExecutionResult (CodeExecutionResult)

Rezultati i ekzekutimit të ExecutableCode .

Union type metadata
Kontrollon përpunimin paraprak shtesë të të dhënave. metadata mund të jenë vetëm një nga të mëposhtmet:
object ( VideoMetadata ) videoMetadata (VideoMetadata)

Opsionale. Meta të dhënat e videos. Meta të dhënat duhet të specifikohen vetëm kur të dhënat e videos paraqiten në inlineData ose fileData.

Përfaqësimi JSON
{
  "thought": boolean,
  "thoughtSignature": string,
  "partMetadata": {
    object
  },

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

Pikë

Bajt të medias së papërpunuar.

Teksti nuk duhet të dërgohet si bajt i papërpunuar, përdorni fushën 'tekst'.

Fushat
string mimeType

Lloji standard MIME IANA i të dhënave burimore. Shembuj: - image/png - image/jpeg Nëse jepet një lloj MIME i pambështetur, do të kthehet një gabim. Për një listë të plotë të llojeve të mbështetura, shihni Formatet e skedarëve të mbështetura .

varg data string ( bytes format)

Bajt të papërpunuar për formatet mediatike.

Një varg i koduar me base64.

Përfaqësimi JSON
{
  "mimeType": string,
  "data": string
}

Thirrja e Funksionit

Një FunctionCall i parashikuar i kthyer nga modeli që përmban një varg që përfaqëson FunctionDeclaration.name me argumentet dhe vlerat e tyre.

Fushat
string id

Opsionale. ID-ja unike e thirrjes së funksionit. Nëse plotësohet, klienti duhet të ekzekutojë functionCall dhe të kthejë përgjigjen me id në përkatëse.

string name

E detyrueshme. Emri i funksionit që do të thirret. Duhet të jetë az, AZ, 0-9, ose të përmbajë nënvizime dhe viza, me një gjatësi maksimale prej 64.

objekti args object ( Struct format)

Opsionale. Parametrat dhe vlerat e funksionit në formatin e objektit JSON.

Përfaqësimi JSON
{
  "id": string,
  "name": string,
  "args": {
    object
  }
}

FunksioniPërgjigja

Rezultati i dhënë nga një FunctionCall që përmban një varg që përfaqëson FunctionDeclaration.name dhe një objekt të strukturuar JSON që përmban çdo rezultat nga funksioni përdoret si kontekst për modelin. Ky duhet të përmbajë rezultatin e një FunctionCall të bërë bazuar në parashikimin e modelit.

Fushat
string id

Opsionale. ID-ja e thirrjes së funksionit për të cilën është kjo përgjigje. Plotësohet nga klienti për t'u përputhur id në përkatëse të thirrjes së funksionit.

string name

E detyrueshme. Emri i funksionit që do të thirret. Duhet të jetë az, AZ, 0-9, ose të përmbajë nënvizime dhe viza, me një gjatësi maksimale prej 64.

object ( Struct format) response (formati Struct)

E detyrueshme. Përgjigja e funksionit në formatin e objektit JSON. Thirrësit mund të përdorin çdo çelës sipas zgjedhjes së tyre që i përshtatet sintaksës së funksionit për të kthyer rezultatin e funksionit, p.sh. "output", "result", etj. Në veçanti, nëse thirrja e funksionit dështoi të ekzekutohej, përgjigjja mund të ketë një çelës "gabim" për të kthyer detajet e gabimit në model.

parts[] object ( FunctionResponsePart )

Opsionale. Parts të porositura që përbëjnë një përgjigje funksioni. Pjesët mund të kenë lloje të ndryshme IANA MIME.

willContinue boolean

Opsionale. Sinjalizon që thirrja e funksionit vazhdon dhe do të kthehen më shumë përgjigje, duke e shndërruar thirrjen e funksionit në një gjenerator. I zbatueshëm vetëm për thirrjet e funksionit NON_BLOCKING, përndryshe injorohet. Nëse vendoset në false, përgjigjet e ardhshme nuk do të merren në konsideratë. Lejohet të kthehet response boshe me willContinue=False për të sinjalizuar se thirrja e funksionit ka mbaruar. Kjo mund të shkaktojë ende gjenerimin e modelit. Për të shmangur shkaktimin e gjenerimit dhe për të përfunduar thirrjen e funksionit, vendosni gjithashtu schedulingSILENT .

numërimi scheduling enum ( Scheduling )

Opsionale. Specifikon se si duhet të planifikohet përgjigja në bisedë. I zbatueshëm vetëm për thirrjet e funksioneve NON_BLOCKING, përndryshe injorohet. Parazgjedhja është WHEN_IDLE.

Përfaqësimi JSON
{
  "id": string,
  "name": string,
  "response": {
    object
  },
  "parts": [
    {
      object (FunctionResponsePart)
    }
  ],
  "willContinue": boolean,
  "scheduling": enum (Scheduling)
}

FunctionResponsePjesa

Një lloj të dhënash që përmban media që është pjesë e një mesazhi FunctionResponse .

Një FunctionResponsePart përbëhet nga të dhëna që kanë një lloj të dhënash të shoqëruar. Një FunctionResponsePart mund të përmbajë vetëm një nga llojet e pranuara në FunctionResponsePart.data .

Një FunctionResponsePart duhet të ketë një lloj IANA MIME të fiksuar që identifikon llojin dhe nëntipin e medias nëse fusha inlineData është e mbushur me bajt të papërpunuar.

Fushat
Union type data
Të dhënat e pjesës së përgjigjes së funksionit. data mund të jenë vetëm një nga të mëposhtmet:
Objekti inlineData object ( FunctionResponseBlob )

Bajt mediash të integruara.

Përfaqësimi JSON
{

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

FunksioniResponseBlob

Bajt të medias së papërpunuar për përgjigjen e funksionit.

Teksti nuk duhet të dërgohet si bajt i papërpunuar, përdorni fushën 'FunctionResponse.response'.

Fushat
string mimeType

Lloji standard MIME IANA i të dhënave burimore. Shembuj: - image/png - image/jpeg Nëse jepet një lloj MIME i pambështetur, do të kthehet një gabim. Për një listë të plotë të llojeve të mbështetura, shihni Formatet e skedarëve të mbështetura .

varg data string ( bytes format)

Bajt të papërpunuar për formatet mediatike.

Një varg i koduar me base64.

Përfaqësimi JSON
{
  "mimeType": string,
  "data": string
}

Planifikimi

Specifikon se si duhet të planifikohet përgjigja në bisedë.

Numërime
SCHEDULING_UNSPECIFIED Kjo vlerë nuk përdoret.
SILENT Shtoni rezultatin vetëm në kontekstin e bisedës, mos e ndërprisni ose mos aktivizoni gjenerimin.
WHEN_IDLE Shtoni rezultatin në kontekstin e bisedës dhe kërkoni që të gjenerohet rezultati pa ndërprerë gjenerimin në vazhdim.
INTERRUPT Shtoni rezultatin në kontekstin e bisedës, ndërpritni gjenerimin e vazhdueshëm dhe nxitni për të gjeneruar rezultate.

Të Dhënat e Skedarit

Të dhëna të bazuara në URI.

Fushat
string mimeType

Opsionale. Lloji standard MIME IANA i të dhënave burimore.

string fileUri -t

E detyrueshme. URI.

Përfaqësimi JSON
{
  "mimeType": string,
  "fileUri": string
}

Kodi i Ekzekutueshëm

Kodi i gjeneruar nga modeli që është menduar të ekzekutohet dhe rezultati i kthyer te modeli.

Gjenerohet vetëm kur përdoret mjeti CodeExecution , në të cilin kodi do të ekzekutohet automatikisht dhe do të gjenerohet gjithashtu një CodeExecutionResult përkatës.

Fushat
numërimi i language enum ( Language )

E detyrueshme. Gjuha e programimit të code .

string code

E detyrueshme. Kodi që do të ekzekutohet.

Përfaqësimi JSON
{
  "language": enum (Language),
  "code": string
}

Gjuha

Gjuhët e programimit të mbështetura për kodin e gjeneruar.

Numërime
LANGUAGE_UNSPECIFIED Gjuhë e paspecifikuar. Kjo vlerë nuk duhet të përdoret.
PYTHON Python >= 3.10, me numpy dhe simpy të disponueshëm.

Rezultati i Ekzekutimit të Kodit

Rezultati i ekzekutimit të ExecutableCode .

Gjenerohet vetëm kur përdoret CodeExecution dhe gjithmonë vjen pas një part që përmban ExecutableCode .

Fushat
numërimi i outcome enum ( Outcome )

E detyrueshme. Rezultati i ekzekutimit të kodit.

output string

Opsionale. Përmban stdout kur ekzekutimi i kodit është i suksesshëm, stderr ose përshkrim tjetër ndryshe.

Përfaqësimi JSON
{
  "outcome": enum (Outcome),
  "output": string
}

Rezultati

Numërimi i rezultateve të mundshme të ekzekutimit të kodit.

Numërime
OUTCOME_UNSPECIFIED Status i papërcaktuar. Kjo vlerë nuk duhet të përdoret.
OUTCOME_OK Ekzekutimi i kodit përfundoi me sukses.
OUTCOME_FAILED Ekzekutimi i kodit përfundoi, por me një dështim. stderr duhet të përmbajë arsyen.
OUTCOME_DEADLINE_EXCEEDED Ekzekutimi i kodit u zhvillua për një kohë shumë të gjatë dhe u anulua. Mund të ketë ose jo një rezultat të pjesshëm.

Meta të dhëna video

Metadatat përshkruajnë përmbajtjen e videos së futur.

Fushat
vargu startOffset string ( Duration format)

Opsionale. Zhvendosja fillestare e videos.

Një kohëzgjatje në sekonda me deri në nëntë shifra thyesore, që mbaron me ' s '. Shembull: "3.5s" .

Vargu endOffset string ( Duration format)

Opsionale. Zhvendosja në fund të videos.

Një kohëzgjatje në sekonda me deri në nëntë shifra thyesore, që mbaron me ' s '. Shembull: "3.5s" .

number fps

Opsionale. Shpejtësia e kuadrove të videos së dërguar te modeli. Nëse nuk specifikohet, vlera e parazgjedhur do të jetë 1.0. Diapazoni i kuadrove për sekondë është (0.0, 24.0].

Përfaqësimi JSON
{
  "startOffset": string,
  "endOffset": string,
  "fps": number
}

Mjet

Detajet e mjetit që modeli mund të përdorë për të gjeneruar përgjigje.

Një Tool është një pjesë kodi që i mundëson sistemit të bashkëveprojë me sisteme të jashtme për të kryer një veprim, ose një sërë veprimesh, jashtë njohurive dhe fushëveprimit të modelit.

ID-ja tjetër: 12

Fushat
objekti functionDeclarations[] object ( FunctionDeclaration )

Opsionale. Një listë e FunctionDeclarations të disponueshme për modelin që mund të përdoren për thirrjen e funksioneve.

Modeli ose sistemi nuk e ekzekuton funksionin. Në vend të kësaj, funksioni i përcaktuar mund të kthehet si një FunctionCall me argumente në anën e klientit për ekzekutim. Modeli mund të vendosë të thërrasë një nëngrup të këtyre funksioneve duke plotësuar FunctionCall në përgjigje. Raundi tjetër i bisedës mund të përmbajë një FunctionResponse me kontekstin e gjenerimit të "funksionit" Content.role për raundin tjetër të modelit.

objekti googleSearchRetrieval object ( GoogleSearchRetrieval )

Opsionale. Mjet kërkimi që mundësohet nga kërkimi në Google.

object ( CodeExecution ) codeExecution (CodeExecution)

Opsionale. I mundëson modelit të ekzekutojë kodin si pjesë të gjenerimit.

objekti computerUse object ( ComputerUse )

Opsionale. Mjet për të mbështetur modelin që bashkëvepron drejtpërdrejt me kompjuterin. Nëse aktivizohet, ai automatikisht plotëson Deklaratat e Funksioneve specifike për përdorimin e kompjuterit.

object ( UrlContext ) urlContext (UrlContext)

Opsionale. Mjet për të mbështetur rikthimin e kontekstit të URL-së.

objekti i googleMaps object ( GoogleMaps )

Opsionale. Mjet që lejon bazën e përgjigjes së modelit me kontekst gjeohapësinor që lidhet me pyetjen e përdoruesit.

Përfaqësimi JSON
{
  "functionDeclarations": [
    {
      object (FunctionDeclaration)
    }
  ],
  "googleSearchRetrieval": {
    object (GoogleSearchRetrieval)
  },
  "codeExecution": {
    object (CodeExecution)
  },
  "googleSearch": {
    object (GoogleSearch)
  },
  "computerUse": {
    object (ComputerUse)
  },
  "urlContext": {
    object (UrlContext)
  },
  "fileSearch": {
    object (FileSearch)
  },
  "googleMaps": {
    object (GoogleMaps)
  }
}

Deklarata e Funksionit

Përfaqësim i strukturuar i një deklarate funksioni siç përcaktohet nga specifikimi OpenAPI 3.03 . Në këtë deklaratë përfshihen emri dhe parametrat e funksionit. Kjo Deklaratë Funksioni është një përfaqësim i një blloku kodi që mund të përdoret si një Tool nga modeli dhe të ekzekutohet nga klienti.

Fushat
string name

E detyrueshme. Emri i funksionit. Duhet të jetë az, AZ, 0-9, ose të përmbajë nënvizime, dy pika, pika dhe viza, me një gjatësi maksimale prej 64.

string description

E detyrueshme. Një përshkrim i shkurtër i funksionit.

numërim behavior enum ( Behavior )

Opsionale. Specifikon funksionin Sjellja. Aktualisht mbështetet vetëm nga metoda BidiGenerateContent.

objekti parameters object ( Schema )

Opsionale. Përshkruan parametrat e këtij funksioni. Pasqyron vargun e objektit të parametrit Open API 3.03. Çelësi: emri i parametrit. Emrat e parametrave janë të ndjeshëm ndaj shkronjave të mëdha dhe të vogla. Vlera e skemës: Skema që përcakton llojin e përdorur për parametrin.

parametersJsonSchema value ( Value format)

Opsionale. Përshkruan parametrat e funksionit në formatin JSON Schema. Skema duhet të përshkruajë një objekt ku vetitë janë parametrat e funksionit. Për shembull:

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

Kjo fushë është reciprokisht ekskluzive me parameters .

object ( Schema ) response (Skema)

Opsionale. Përshkruan rezultatin nga ky funksion në formatin JSON Schema. Pasqyron Objektin e Përgjigjes së Open API 3.03. Skema përcakton llojin e përdorur për vlerën e përgjigjes së funksionit.

value ( Value format) responseJsonSchema (formati i vlerës)

Opsionale. Përshkruan rezultatin nga ky funksion në formatin JSON Schema. Vlera e specifikuar nga skema është vlera e përgjigjes së funksionit.

Kjo fushë është reciprokisht ekskluzive me response .

Përfaqësimi JSON
{
  "name": string,
  "description": string,
  "behavior": enum (Behavior),
  "parameters": {
    object (Schema)
  },
  "parametersJsonSchema": value,
  "response": {
    object (Schema)
  },
  "responseJsonSchema": value
}

Skema

Objekti Schema lejon përcaktimin e llojeve të të dhënave hyrëse dhe dalëse. Këto lloje mund të jenë objekte, por edhe primitive dhe vargje. Përfaqëson një nëngrup të zgjedhur të një objekti skeme OpenAPI 3.0 .

Fushat
type enum ( Type )

E detyrueshme. Lloji i të dhënave.

format string

Opsionale. Formati i të dhënave. Lejohet çdo vlerë, por shumica nuk aktivizojnë ndonjë funksionalitet të veçantë.

string title

Opsionale. Titulli i skemës.

string description

Opsionale. Një përshkrim i shkurtër i parametrit. Ky mund të përmbajë shembuj përdorimi. Përshkrimi i parametrit mund të formatohet si Markdown.

boolean nullable

Opsionale. Tregon nëse vlera mund të jetë null.

vargu string enum[]

Opsionale. Vlerat e mundshme të elementit Type.STRING me formatin enum. Për shembull, mund të përcaktojmë një Drejtim Enum si: {type:STRING, format:enum, enum:["LINDJE", VERI", "JUG", "PERËNDIM"]}

vargu maxItems string ( int64 format)

Opsionale. Numri maksimal i elementeve për Type.ARRAY.

Vargu i minItems string ( int64 format)

Opsionale. Numri minimal i elementeve për Type.ARRAY.

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

Opsionale. Vetitë e Tipit.OBJECT.

Një objekt që përmban një listë çiftesh "key": value :. Shembull: { "name": "wrench", "mass": "1.3kg", "count": "3" } .

string required[]

Opsionale. Vetitë e kërkuara të Type.OBJECT.

Vargu i minProperties string ( int64 format)

Opsionale. Numri minimal i vetive për Type.OBJECT.

vargu maxProperties string ( int64 format)

Opsionale. Numri maksimal i vetive për Type.OBJECT.

Vargu i gjatësisë minLength string ( int64 format)

Opsionale. FUSHAT E SKEMËS PËR TIPIN STRING Gjatësia minimale e Tipit.STRING

maxLength string ( int64 format)

Opsionale. Gjatësia maksimale e Llojit.STRING

string pattern

Opsionale. Modeli i Tipit.STRING për të kufizuar një varg në një shprehje të rregullt.

example value ( Value format)

Opsionale. Shembull i objektit. Do të plotësohet vetëm kur objekti është rrënja.

anyOf[] object ( Schema )

Opsionale. Vlera duhet të validohet kundrejt çdo (një ose më shumë) nënskemave në listë.

string propertyOrdering[]

Opsionale. Renditja e vetive. Nuk është një fushë standarde në specifikimin e hapur të api-t. Përdoret për të përcaktuar renditjen e vetive në përgjigje.

value ( Value format) default (Formati i vlerës)

Opsionale. Vlera e parazgjedhur e fushës. Sipas Skemës JSON, kjo fushë është menduar për gjeneratorët e dokumentacionit dhe nuk ndikon në validim. Kështu, përfshihet këtu dhe injorohet në mënyrë që zhvilluesit që dërgojnë skema me një fushë default të mos marrin gabime të fushës së panjohur.

objekti items object ( Schema )

Opsionale. Skema e elementeve të Type.ARRAY.

number minimum

Opsionale. FUSHAT E SKEMËS PËR TIPIN INTEGER dhe NUMËR Vlera minimale e TIPI.INTEGER dhe TIPI.NUMËR

number maximum

Opsionale. Vlera maksimale e Type.INTEGER dhe Type.NUMBER

Përfaqësimi 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
}

Lloji

Lloji përmban listën e llojeve të të dhënave OpenAPI siç përcaktohen nga https://spec.openapis.org/oas/v3.0.3#data-types

Numërime
TYPE_UNSPECIFIED Nuk specifikohet, nuk duhet të përdoret.
STRING Lloji i vargut.
NUMBER Lloji i numrit.
INTEGER Lloji i numrit të plotë.
BOOLEAN Lloji boolean.
ARRAY Lloji i vargut.
OBJECT Lloji i objektit.
NULL Lloji Null.

Sjellje

Përcakton sjelljen e funksionit. Vlera e parazgjedhur është BLOCKING .

Numërime
UNSPECIFIED Kjo vlerë nuk përdoret.
BLOCKING Nëse është vendosur, sistemi do të presë për të marrë përgjigjen e funksionit përpara se të vazhdojë bisedën.
NON_BLOCKING Nëse vendoset, sistemi nuk do të presë për të marrë përgjigjen e funksionit. Në vend të kësaj, ai do të përpiqet të trajtojë përgjigjet e funksionit kur ato bëhen të disponueshme, duke ruajtur njëkohësisht bisedën midis përdoruesit dhe modelit.

Kërkimi në Google

Mjet për të marrë të dhëna publike të uebit për tokëzim, mundësuar nga Google.

Fushat
objekti dynamicRetrievalConfig object ( DynamicRetrievalConfig )

Specifikon konfigurimin dinamik të rikthimit për burimin e dhënë.

Përfaqësimi JSON
{
  "dynamicRetrievalConfig": {
    object (DynamicRetrievalConfig)
  }
}

Konfigurimi i Rikthimit Dinamike

Përshkruan opsionet për të personalizuar rikthimin dinamik.

Fushat
numërimi i mode enum ( Mode )

Modaliteti i parashikuesit që do të përdoret në rikthimin dinamik.

number dynamicThreshold

Pragu që do të përdoret në rikthimin dinamik. Nëse nuk është vendosur, përdoret një vlerë e parazgjedhur e sistemit.

Përfaqësimi JSON
{
  "mode": enum (Mode),
  "dynamicThreshold": number
}

Modaliteti

Modaliteti i parashikuesit që do të përdoret në rikthimin dinamik.

Numërime
MODE_UNSPECIFIED Gjithmonë aktivizo rikthimin.
MODE_DYNAMIC Ekzekutoni rikuperimin vetëm kur sistemi vendos se është e nevojshme.

Ekzekutimi i Kodit

Ky lloj nuk ka fusha.

Mjet që ekzekuton kodin e gjeneruar nga modeli dhe automatikisht e kthen rezultatin në model.

Shihni gjithashtu ExecutableCode dhe CodeExecutionResult të cilat gjenerohen vetëm kur përdoret ky mjet.

Kërkimi në Google

Lloji i mjetit të Kërkimit në Google. Mjet për të mbështetur Kërkimin në Google në Model. Mundësuar nga Google.

Fushat
object ( Interval ) timeRangeFilter (Interval)

Opsionale. Filtroni rezultatet e kërkimit në një interval kohor specifik. Nëse klientët caktojnë një kohë fillimi, ata duhet të caktojnë një kohë mbarimi (dhe anasjelltas).

Përfaqësimi JSON
{
  "timeRangeFilter": {
    object (Interval)
  }
}

Intervali

Përfaqëson një interval kohor, të koduar si një fillim i Timestamp (gjithëpërfshirës) dhe një fund i Timestamp (përjashtues).

Fillimi duhet të jetë më i vogël ose i barabartë me fundin. Kur fillimi është i barabartë me fundin, intervali është bosh (nuk përputhet me kohën). Kur si fillimi ashtu edhe mbarimi nuk janë të specifikuar, intervali përputhet me çdo kohë.

Fushat
vargu startTime string ( Timestamp format)

Opsionale. Fillimi gjithëpërfshirës i intervalit.

Nëse specifikohet, një Timestamp që përputhet me këtë interval do të duhet të jetë i njëjtë ose pas fillimit.

Përdor RFC 3339, ku rezultati i gjeneruar do të jetë gjithmonë i normalizuar sipas Z-së dhe do të përdorë 0, 3, 6 ose 9 shifra thyesore. Pranohen edhe zhvendosje të tjera përveç "Z". Shembuj: "2014-10-02T15:01:23Z" , "2014-10-02T15:01:23.045123456Z" ose "2014-10-02T15:01:23+05:30" .

endTime string ( Timestamp format)

Opsionale. Fundi ekskluziv i intervalit.

Nëse specifikohet, një Timestamp që përputhet me këtë interval do të duhet të jetë para fundit.

Përdor RFC 3339, ku rezultati i gjeneruar do të jetë gjithmonë i normalizuar sipas Z-së dhe do të përdorë 0, 3, 6 ose 9 shifra thyesore. Pranohen edhe zhvendosje të tjera përveç "Z". Shembuj: "2014-10-02T15:01:23Z" , "2014-10-02T15:01:23.045123456Z" ose "2014-10-02T15:01:23+05:30" .

Përfaqësimi JSON
{
  "startTime": string,
  "endTime": string
}

Përdorimi i Kompjuterit

Lloji i mjetit të përdorimit të kompjuterit.

Fushat
environment enum ( Environment )

E detyrueshme. Mjedisi që po operohet.

string excludedPredefinedFunctions[]

Opsionale. Si parazgjedhje, funksionet e paracaktuara përfshihen në thirrjen përfundimtare të modelit. Disa prej tyre mund të përjashtohen në mënyrë të qartë nga përfshirja automatike. Kjo mund të shërbejë për dy qëllime: 1. Përdorimin e një hapësire veprimi më të kufizuar/të ndryshme. 2. Përmirësimin e përkufizimeve/udhëzimeve të funksioneve të paracaktuara.

Përfaqësimi JSON
{
  "environment": enum (Environment),
  "excludedPredefinedFunctions": [
    string
  ]
}

Mjedisi

Përfaqëson mjedisin që operohet, siç është një shfletues interneti.

Numërime
ENVIRONMENT_UNSPECIFIED Parazgjedhur në shfletues.
ENVIRONMENT_BROWSER Operon në një shfletues interneti.

Konteksti i Url-it

Ky lloj nuk ka fusha.

Mjet për të mbështetur rikthimin e kontekstit të URL-së.

Kërkimi i skedarëve

Mjeti FileSearch që rikuperon njohuri nga korpuset Semantic Retrieval. Skedarët importohen në korpuset Semantic Retrieval duke përdorur ImportFile API.

Fushat
objekti retrievalResources[] object ( RetrievalResource )

E nevojshme. Burime të rikuperimit semantik nga të cilat mund të rikuperohet. Aktualisht mbështet vetëm një korpus. Në të ardhmen mund të hapim mbështetje për shumë korpuse.

object ( RetrievalConfig ) retrievalConfig (RetrievalConfig)

Opsionale. Konfigurimi për rikthimin.

Përfaqësimi JSON
{
  "retrievalResources": [
    {
      object (RetrievalResource)
    }
  ],
  "retrievalConfig": {
    object (RetrievalConfig)
  }
}

Burimi i Rikthimit

Burimi i rikthimit semantik nga i cili do të rikthehet.

Fushat
string ragStoreName

E detyrueshme. Emri i burimit të rikthimit semantik nga i cili do të rikthehet. Shembull: ragStores/my-rag-store-123

Përfaqësimi JSON
{
  "ragStoreName": string
}

RetrievalConfig

Konfigurimi i rikthimit semantik.

Fushat
metadataFilter string

Opsionale. Filtër metadatash për t'u aplikuar në dokumentet dhe pjesët e rikthimit semantik.

integer topK

Opsionale. Numri i pjesëve të rikuperimit semantik që duhen rikuperuar.

Përfaqësimi JSON
{
  "metadataFilter": string,
  "topK": integer
}

GoogleMaps

Mjeti GoogleMaps që ofron kontekst gjeohapësinor për pyetjen e përdoruesit.

Fushat
enableWidget boolean

Opsionale. Nëse duhet të kthehet një token konteksti i widget-it në GroundingMetadata të përgjigjes. Zhvilluesit mund ta përdorin tokenin e kontekstit të widget-it për të paraqitur një widget të Google Maps me kontekst gjeohapësinor që lidhet me vendet që modeli i referohet në përgjigje.

Përfaqësimi JSON
{
  "enableWidget": boolean
}

Konfigurimi i Veglave

Konfigurimi i Mjetit që përmban parametrat për specifikimin e përdorimit Tool në kërkesë.

Fushat
object ( FunctionCallingConfig ) functionCallingConfig (FunctionCallingConfig)

Opsionale. Konfigurimi i thirrjes së funksionit.

object ( RetrievalConfig ) retrievalConfig (RetrievalConfig)

Opsionale. Konfigurimi i rikuperimit.

Përfaqësimi JSON
{
  "functionCallingConfig": {
    object (FunctionCallingConfig)
  },
  "retrievalConfig": {
    object (RetrievalConfig)
  }
}

Konfigurimi i Thirrjes së Funksionit

Konfigurimi për specifikimin e sjelljes së thirrjes së funksionit.

Fushat
numërimi i mode enum ( Mode )

Opsionale. Specifikon mënyrën në të cilën duhet të ekzekutohet thirrja e funksionit. Nëse nuk specifikohet, vlera e parazgjedhur do të vendoset në AUTO.

string allowedFunctionNames[]

Opsionale. Një grup emrash funksionesh që, kur ofrohen, kufizon funksionet që modeli do të thërrasë.

Kjo duhet të caktohet vetëm kur Moda është ÇDO ose E VALIDUAR. Emrat e funksioneve duhet të përputhen me [FunctionDeclaration.name]. Kur caktohet, modeli do të parashikojë një thirrje funksioni vetëm nga emrat e funksioneve të lejuara.

Përfaqësimi JSON
{
  "mode": enum (Mode),
  "allowedFunctionNames": [
    string
  ]
}

Modaliteti

Përcakton sjelljen e ekzekutimit për thirrjen e funksionit duke përcaktuar mënyrën e ekzekutimit.

Numërime
MODE_UNSPECIFIED Modalitet i paspecifikuar i thirrjes së funksionit. Kjo vlerë nuk duhet të përdoret.
AUTO Sjellja e parazgjedhur e modelit, modeli vendos të parashikojë ose një thirrje funksioni ose një përgjigje në gjuhën natyrore.
ANY Modeli është i kufizuar të parashikojë gjithmonë vetëm një thirrje funksioni. Nëse caktohen "allowedFunctionNames", thirrja e parashikuar e funksionit do të kufizohet në cilindo prej "allowedFunctionNames", përndryshe thirrja e parashikuar e funksionit do të jetë cilado prej "functionDeclarations" të dhëna.
NONE Modeli nuk do të parashikojë asnjë thirrje funksioni. Sjellja e modelit është e njëjtë me atë kur nuk kalon asnjë deklaratë funksioni.
VALIDATED Modeli vendos të parashikojë ose një thirrje funksioni ose një përgjigje në gjuhën natyrore, por do të validojë thirrjet e funksioneve me dekodim të kufizuar. Nëse caktohen "allowedFunctionNames", thirrja e parashikuar e funksionit do të kufizohet në cilindo prej "allowedFunctionNames", përndryshe thirrja e parashikuar e funksionit do të jetë cilado prej "functionDeclarations" të dhëna.

RetrievalConfig

Konfigurimi i rikuperimit.

Fushat
objekt latLng object ( LatLng )

Opsionale. Vendndodhja e përdoruesit.

string languageCode

Opsionale. Kodi i gjuhës së përdoruesit. Kodi i gjuhës për përmbajtjen. Përdorni etiketat gjuhësore të përcaktuara nga BCP47 .

Përfaqësimi JSON
{
  "latLng": {
    object (LatLng)
  },
  "languageCode": string
}

LatLng

Një objekt që përfaqëson një çift gjerësie/gjatësie. Kjo shprehet si një çift dyshesh për të përfaqësuar gradë gjerësie dhe gradë gjatësie. Nëse nuk specifikohet ndryshe, ky objekt duhet të jetë në përputhje me standardin WGS84 . Vlerat duhet të jenë brenda diapazoneve të normalizuara.

Fushat
number latitude

Gjerësia gjeografike në gradë. Duhet të jetë në diapazonin [-90.0, +90.0].

number longitude

Gjatësia gjeografike në gradë. Duhet të jetë në diapazonin [-180.0, +180.0].

Përfaqësimi JSON
{
  "latitude": number,
  "longitude": number
}

PërdorimiMeta të dhëna

Meta të dhëna mbi përdorimin e përmbajtjes së ruajtur në memorien e përkohshme.

Fushat
totalTokenCount integer

Numri total i tokenëve që konsumon përmbajtja e ruajtur në memorien e përkohshme.

Përfaqësimi JSON
{
  "totalTokenCount": integer
}