Caching

Ruajtja në memorie e kontekstit ju lejon të ruani dhe ripërdorni shenjat hyrëse të parallogaritura që dëshironi të përdorni në mënyrë të përsëritur, për shembull kur bëni pyetje të ndryshme për të njëjtin skedar media. Kjo mund të çojë në kursime të kostos dhe shpejtësisë, në varësi të përdorimit. Për një hyrje të detajuar, shihni udhëzuesin e ruajtjes në memorien e kontekstit .

Metoda: cacheContents.krijoj

Krijon burimin CachedContent.

Pika përfundimtare

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

Trupi i kërkesës

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

Fushat
objekti contents[] object ( Content )

Fakultative. Vetëm hyrje. E pandryshueshme. Përmbajtja në cache.

tools[] object ( Tool )

Fakultative. Vetëm hyrje. E pandryshueshme. Një listë e Tools modeli mund të përdorë për të gjeneruar përgjigjen e radhës

expiration fushës së bashkimit. Përcakton se kur do të skadojë ky burim. expiration mund të jetë vetëm një nga sa vijon:
Vargu expireTime string ( Timestamp format)

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

Një vulë kohore në formatin RFC3339 UTC "Zulu", me rezolucion nanosekonda dhe deri në nëntë shifra të pjesshme. Shembuj: "2014-10-02T15:01:23Z" dhe "2014-10-02T15:01:23.045123456Z" .

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 të pjesshme, që mbarojnë me ' s '. Shembull: "3.5s" .

string name

Fakultative. Identifikues. Emri i burimit që i referohet përmbajtjes së memorizuar. Formati: cachedContents/{id}

string displayName

Fakultative. E pandryshueshme. Emri i shfaqur kuptimplotë i krijuar nga përdoruesi i përmbajtjes së memorizuar. Maksimumi 128 karaktere Unicode.

string model

E detyrueshme. E pandryshueshme. Emri i Model që do të përdoret për përmbajtjen e memorizuar Formati: models/{model}

systemInstruction object ( Content )

Fakultative. Vetëm hyrje. E pandryshueshme. Udhëzime për sistemin e grupit të zhvilluesit. Aktualisht vetëm tekst.

Objekti toolConfig object ( ToolConfig )

Fakultative. Vetëm hyrje. E pandryshueshme. Konfigurimi i mjetit. Ky konfigurim është i ndarë për të gjitha mjetet.

Shembull i kërkesës

bazë

Python

import google.generativeai as genai

document = genai.upload_file(path=media / "a11.txt")
model_name = "gemini-1.5-flash-001"
cache = genai.caching.CachedContent.create(
    model=model_name,
    system_instruction="You are an expert analyzing transcripts.",
    contents=[document],
)
print(cache)

model = genai.GenerativeModel.from_cached_content(cache)
response = model.generate_content("Please summarize this transcript")
print(response.text)

Nyja.js

// Make sure to include these imports:
// import { GoogleAICacheManager, GoogleAIFileManager } from "@google/generative-ai/server";
// import { GoogleGenerativeAI } from "@google/generative-ai";
const cacheManager = new GoogleAICacheManager(process.env.API_KEY);
const fileManager = new GoogleAIFileManager(process.env.API_KEY);

const uploadResult = await fileManager.uploadFile(`${mediaPath}/a11.txt`, {
  mimeType: "text/plain",
});

const cacheResult = await cacheManager.create({
  model: "models/gemini-1.5-flash-001",
  contents: [
    {
      role: "user",
      parts: [
        {
          fileData: {
            fileUri: uploadResult.file.uri,
            mimeType: uploadResult.file.mimeType,
          },
        },
      ],
    },
  ],
});

console.log(cacheResult);

const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModelFromCachedContent(cacheResult);
const result = await model.generateContent(
  "Please summarize this transcript.",
);
console.log(result.response.text());

Shkoni

file, err := client.UploadFileFromPath(ctx,
	filepath.Join(testDataDir, "a11.txt"),
	&genai.UploadFileOptions{MIMEType: "text/plain"})
if err != nil {
	log.Fatal(err)
}
defer client.DeleteFile(ctx, file.Name)
fd := genai.FileData{URI: file.URI}

argcc := &genai.CachedContent{
	Model:             "gemini-1.5-flash-001",
	SystemInstruction: genai.NewUserContent(genai.Text("You are an expert analyzing transcripts.")),
	Contents:          []*genai.Content{genai.NewUserContent(fd)},
}
cc, err := client.CreateCachedContent(ctx, argcc)
if err != nil {
	log.Fatal(err)
}
defer client.DeleteCachedContent(ctx, cc.Name)

modelWithCache := client.GenerativeModelFromCachedContent(cc)
prompt := "Please summarize this transcript"
resp, err := modelWithCache.GenerateContent(ctx, genai.Text(prompt))
if err != nil {
	log.Fatal(err)
}

printResponse(resp)

Shell

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=$GOOGLE_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=$GOOGLE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
      "contents": [
        {
          "parts":[{
            "text": "Please summarize this transcript"
          }],
          "role": "user"
        },
      ],
      "cachedContent": "'$CACHE_NAME'"
    }'

Nga emri

Python

import google.generativeai as genai

document = genai.upload_file(path=media / "a11.txt")
model_name = "gemini-1.5-flash-001"
cache = genai.caching.CachedContent.create(
    model=model_name,
    system_instruction="You are an expert analyzing transcripts.",
    contents=[document],
)
cache_name = cache.name  # Save the name for later

# Later
cache = genai.caching.CachedContent.get(cache_name)
apollo_model = genai.GenerativeModel.from_cached_content(cache)
response = apollo_model.generate_content("Find a lighthearted moment from this transcript")
print(response.text)

Nyja.js

// Make sure to include these imports:
// import { GoogleAICacheManager, GoogleAIFileManager } from "@google/generative-ai/server";
// import { GoogleGenerativeAI } from "@google/generative-ai";
const cacheManager = new GoogleAICacheManager(process.env.API_KEY);
const fileManager = new GoogleAIFileManager(process.env.API_KEY);

const uploadResult = await fileManager.uploadFile(`${mediaPath}/a11.txt`, {
  mimeType: "text/plain",
});

const cacheResult = await cacheManager.create({
  model: "models/gemini-1.5-flash-001",
  contents: [
    {
      role: "user",
      parts: [
        {
          fileData: {
            fileUri: uploadResult.file.uri,
            mimeType: uploadResult.file.mimeType,
          },
        },
      ],
    },
  ],
});
const cacheName = cacheResult.name; // Save the name for later.

// Later
const getCacheResult = await cacheManager.get(cacheName);
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModelFromCachedContent(getCacheResult);
model.generateContent("Please summarize this transcript.");

Shkoni

file, err := client.UploadFileFromPath(ctx, filepath.Join(testDataDir, "a11.txt"), nil)
if err != nil {
	log.Fatal(err)
}
defer client.DeleteFile(ctx, file.Name)
fd := genai.FileData{URI: file.URI}

argcc := &genai.CachedContent{
	Model:             "gemini-1.5-flash-001",
	SystemInstruction: genai.NewUserContent(genai.Text("You are an expert analyzing transcripts.")),
	Contents:          []*genai.Content{genai.NewUserContent(fd)},
}
cc, err := client.CreateCachedContent(ctx, argcc)
if err != nil {
	log.Fatal(err)
}
defer client.DeleteCachedContent(ctx, cc.Name)

// Save the name for later
cacheName := cc.Name

// ... Later
cc2, err := client.GetCachedContent(ctx, cacheName)
if err != nil {
	log.Fatal(err)
}
modelWithCache := client.GenerativeModelFromCachedContent(cc2)
prompt := "Find a lighthearted moment from this transcript"
resp, err := modelWithCache.GenerateContent(ctx, genai.Text(prompt))
if err != nil {
	log.Fatal(err)
}

printResponse(resp)

Nga biseda

Python

import google.generativeai as genai

model_name = "gemini-1.5-flash-001"
system_instruction = "You are an expert analyzing transcripts."

model = genai.GenerativeModel(model_name=model_name, system_instruction=system_instruction)
chat = model.start_chat()
document = genai.upload_file(path=media / "a11.txt")
response = chat.send_message(["Hi, could you summarize this transcript?", document])
print("\n\nmodel:  ", response.text)
response = chat.send_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 = genai.caching.CachedContent.create(
    model=model_name,
    system_instruction=system_instruction,
    contents=chat.history,
)
model = genai.GenerativeModel.from_cached_content(cached_content=cache)

# Continue the chat where you left off.
chat = model.start_chat()
response = chat.send_message(
    "I didn't understand that last part, could you explain it in simpler language?"
)
print("\n\nmodel:  ", response.text)

Nyja.js

// Make sure to include these imports:
// import { GoogleGenerativeAI } from "@google/generative-ai";
// import { GoogleAICacheManager, GoogleAIFileManager } from "@google/generative-ai/server";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const cacheManager = new GoogleAICacheManager(process.env.API_KEY);
const fileManager = new GoogleAIFileManager(process.env.API_KEY);

const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash-001" });
const chat = model.startChat();

const uploadResult = await fileManager.uploadFile(`${mediaPath}/a11.txt`, {
  mimeType: "text/plain",
});

let result = await chat.sendMessage([
  "Hi, could you summarize this transcript?",
  {
    fileData: {
      fileUri: uploadResult.file.uri,
      mimeType: uploadResult.file.mimeType,
    },
  },
]);
console.log(`\n\nmodel: ${result.response.text()}`);
result = await chat.sendMessage(
  "Okay, could you tell me more about the trans-lunar injection",
);
console.log(`\n\nmodel: ${result.response.text()}`);

const cacheResult = await cacheManager.create({
  model: "models/gemini-1.5-flash-001",
  contents: await chat.getHistory(),
});

const newModel = genAI.getGenerativeModelFromCachedContent(cacheResult);

const newChat = newModel.startChat();
result = await newChat.sendMessage(
  "I didn't understand that last part, could you explain it in simpler language?",
);
console.log(`\n\nmodel: ${result.response.text()}`);

Shkoni

file, err := client.UploadFileFromPath(ctx, filepath.Join(testDataDir, "a11.txt"), nil)
if err != nil {
	log.Fatal(err)
}
defer client.DeleteFile(ctx, file.Name)
fd := genai.FileData{URI: file.URI}

modelName := "gemini-1.5-flash-001"
model := client.GenerativeModel(modelName)
model.SystemInstruction = genai.NewUserContent(genai.Text("You are an expert analyzing transcripts."))

cs := model.StartChat()
resp, err := cs.SendMessage(ctx, genai.Text("Hi, could you summarize this transcript?"), fd)
if err != nil {
	log.Fatal(err)
}

resp, err = cs.SendMessage(ctx, genai.Text("Okay, could you tell me more about the trans-lunar injection"))
if err != nil {
	log.Fatal(err)
}

// To cache the conversation so far, pass the chat history as the list of
// contents.

argcc := &genai.CachedContent{
	Model:             modelName,
	SystemInstruction: model.SystemInstruction,
	Contents:          cs.History,
}
cc, err := client.CreateCachedContent(ctx, argcc)
if err != nil {
	log.Fatal(err)
}
defer client.DeleteCachedContent(ctx, cc.Name)

modelWithCache := client.GenerativeModelFromCachedContent(cc)
cs = modelWithCache.StartChat()
resp, err = cs.SendMessage(ctx, genai.Text("I didn't understand that last part, could you please explain it in simpler language?"))
if err != nil {
	log.Fatal(err)
}
printResponse(resp)

Trupi i reagimit

Nëse është i suksesshëm, trupi i përgjigjes përmban një shembull të sapokrijuar të CachedContent .

Metoda: cacheContents.list

Liston Përmbajtjet në Cached.

Pika përfundimtare

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

Parametrat e pyetjes

integer pageSize

Fakultative. Numri maksimal i përmbajtjeve të ruajtura në memorie për t'u kthyer. Shërbimi mund të kthejë më pak se kjo vlerë. Nëse nuk specifikohet, do të kthehen një numër i paracaktuar (nën maksimum) artikujsh. Vlera maksimale është 1000; vlerat mbi 1000 do të detyrohen në 1000.

string pageToken

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

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

Trupi i kërkesës

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

Trupi i reagimit

Përgjigja 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
objekti cachedContents[] object ( CachedContent )

Lista e përmbajtjeve të ruajtura në memorie.

string nextPageToken

Një shenjë, e cila mund të dërgohet si pageToken për të tërhequr faqen tjetër. Nëse kjo fushë hiqet, nuk ka faqe të mëvonshme.

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

Metoda: cachedContents.get

Lexon burimin CachedContent.

Pika përfundimtare

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

Parametrat e rrugës

string name

E detyrueshme. Emri i burimit që i referohet hyrjes në cache 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 i kërkesës

Python

import google.generativeai as genai

document = genai.upload_file(path=media / "a11.txt")
model_name = "gemini-1.5-flash-001"
cache = genai.caching.CachedContent.create(
    model=model_name,
    system_instruction="You are an expert analyzing transcripts.",
    contents=[document],
)
print(genai.caching.CachedContent.get(name=cache.name))

Nyja.js

// Make sure to include these imports:
// import { GoogleAICacheManager, GoogleAIFileManager } from "@google/generative-ai/server";
const cacheManager = new GoogleAICacheManager(process.env.API_KEY);
const fileManager = new GoogleAIFileManager(process.env.API_KEY);

const uploadResult = await fileManager.uploadFile(`${mediaPath}/a11.txt`, {
  mimeType: "text/plain",
});

const cacheResult = await cacheManager.create({
  model: "models/gemini-1.5-flash-001",
  contents: [
    {
      role: "user",
      parts: [
        {
          fileData: {
            fileUri: uploadResult.file.uri,
            mimeType: uploadResult.file.mimeType,
          },
        },
      ],
    },
  ],
});
const cacheGetResult = await cacheManager.get(cacheResult.name);
console.log(cacheGetResult);

Shkoni

file, err := client.UploadFileFromPath(ctx, filepath.Join(testDataDir, "a11.txt"), nil)
if err != nil {
	log.Fatal(err)
}
defer client.DeleteFile(ctx, file.Name)
fd := genai.FileData{URI: file.URI}

argcc := &genai.CachedContent{
	Model:             "gemini-1.5-flash-001",
	SystemInstruction: genai.NewUserContent(genai.Text("You are an expert analyzing transcripts.")),
	Contents:          []*genai.Content{genai.NewUserContent(fd)},
}
cc, err := client.CreateCachedContent(ctx, argcc)
if err != nil {
	log.Fatal(err)
}
defer client.DeleteCachedContent(ctx, cc.Name)

// Save the name for later
cacheName := cc.Name

// ... Later
cc2, err := client.GetCachedContent(ctx, cacheName)
if err != nil {
	log.Fatal(err)
}
modelWithCache := client.GenerativeModelFromCachedContent(cc2)
prompt := "Find a lighthearted moment from this transcript"
resp, err := modelWithCache.GenerateContent(ctx, genai.Text(prompt))
if err != nil {
	log.Fatal(err)
}

printResponse(resp)

Shell

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

Trupi i reagimit

Nëse është i suksesshëm, trupi i përgjigjes përmban një shembull të CachedContent .

Metoda: cachedContents.patch

Përditëson burimin CachedContent (vetëm skadimi mund të përditësohet).

Pika përfundimtare

patch https://generativelanguage.googleapis.com/v1beta/{cachedContent.name=cachedContents/*}
PATCH https://generativelanguage.googleapis.com/v1beta/{cachedContent.name=cachedContents/*}

Parametrat e rrugës

cachedContent.name string

Fakultative. Identifikues. Emri i burimit që i referohet përmbajtjes së memorizuar. Formati: cachedContents/{id} Merr formën cachedContents/{cachedcontent} .

Parametrat e pyetjes

vargu updateMask string ( FieldMask format)

Lista e fushave për të përditësuar.

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

Trupi i kërkesës

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

Fushat
expiration fushës së bashkimit. Përcakton se kur do të skadojë ky burim. expiration mund të jetë vetëm një nga sa vijon:
Vargu expireTime string ( Timestamp format)

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

Një vulë kohore në formatin RFC3339 UTC "Zulu", me rezolucion nanosekonda dhe deri në nëntë shifra të pjesshme. Shembuj: "2014-10-02T15:01:23Z" dhe "2014-10-02T15:01:23.045123456Z" .

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 të pjesshme, që mbarojnë me ' s '. Shembull: "3.5s" .

string name

Fakultative. Identifikues. Emri i burimit që i referohet përmbajtjes së memorizuar. Formati: cachedContents/{id}

Shembull i kërkesës

Python

import google.generativeai as genai

import datetime

document = genai.upload_file(path=media / "a11.txt")
model_name = "gemini-1.5-flash-001"
cache = genai.caching.CachedContent.create(
    model=model_name,
    system_instruction="You are an expert analyzing transcripts.",
    contents=[document],
)

# You can update the ttl
cache.update(ttl=datetime.timedelta(hours=2))
print(f"After update:\n {cache}")

# Or you can update the expire_time
cache.update(expire_time=datetime.datetime.now() + datetime.timedelta(minutes=15))

Nyja.js

// Make sure to include these imports:
// import { GoogleAICacheManager, GoogleAIFileManager } from "@google/generative-ai/server";
const cacheManager = new GoogleAICacheManager(process.env.API_KEY);
const fileManager = new GoogleAIFileManager(process.env.API_KEY);

const uploadResult = await fileManager.uploadFile(`${mediaPath}/a11.txt`, {
  mimeType: "text/plain",
});

const cacheResult = await cacheManager.create({
  model: "models/gemini-1.5-flash-001",
  contents: [
    {
      role: "user",
      parts: [
        {
          fileData: {
            fileUri: uploadResult.file.uri,
            mimeType: uploadResult.file.mimeType,
          },
        },
      ],
    },
  ],
});
console.log("initial cache data:", cacheResult);
const cacheUpdateResult = await cacheManager.update(cacheResult.name, {
  cachedContent: {
    // 2 hours
    ttlSeconds: 60 * 60 * 2,
  },
});
console.log("updated cache data:", cacheUpdateResult);

Shkoni

file, err := client.UploadFileFromPath(ctx,
	filepath.Join(testDataDir, "a11.txt"),
	&genai.UploadFileOptions{MIMEType: "text/plain"})
if err != nil {
	log.Fatal(err)
}
defer client.DeleteFile(ctx, file.Name)

Shell

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

Trupi i reagimit

Nëse është i suksesshëm, trupi i përgjigjes përmban një shembull të CachedContent .

Metoda: cachedContents.fshij

Fshin burimin CachedContent.

Pika përfundimtare

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

Parametrat e rrugës

string name

E detyrueshme. Emri i burimit që i referohet hyrjes në cache të përmbajtjes Formati: cachedContents/{id} Ai merr formën cachedContents/{cachedcontent} .

Trupi i kërkesës

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

Shembull i kërkesës

Python

import google.generativeai as genai

document = genai.upload_file(path=media / "a11.txt")
model_name = "gemini-1.5-flash-001"
cache = genai.caching.CachedContent.create(
    model=model_name,
    system_instruction="You are an expert analyzing transcripts.",
    contents=[document],
)
cache.delete()

Nyja.js

// Make sure to include these imports:
// import { GoogleAICacheManager, GoogleAIFileManager } from "@google/generative-ai/server";
const cacheManager = new GoogleAICacheManager(process.env.API_KEY);
const fileManager = new GoogleAIFileManager(process.env.API_KEY);

const uploadResult = await fileManager.uploadFile(`${mediaPath}/a11.txt`, {
  mimeType: "text/plain",
});

const cacheResult = await cacheManager.create({
  model: "models/gemini-1.5-flash-001",
  contents: [
    {
      role: "user",
      parts: [
        {
          fileData: {
            fileUri: uploadResult.file.uri,
            mimeType: uploadResult.file.mimeType,
          },
        },
      ],
    },
  ],
});
await cacheManager.delete(cacheResult.name);

Shkoni

file, err := client.UploadFileFromPath(ctx,
	filepath.Join(testDataDir, "a11.txt"),
	&genai.UploadFileOptions{MIMEType: "text/plain"})
if err != nil {
	log.Fatal(err)
}
defer client.DeleteFile(ctx, file.Name)

Shell

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

Trupi i reagimit

Nëse ka sukses, trupi i përgjigjes është bosh.

Burimi REST: Përmbajtja në memorie të fshehtë

Burimi: CachedContent

Përmbajtja që është përpunuar paraprakisht dhe mund të përdoret në kërkesën e mëvonshme për GenerativeService.

Përmbajtja e memorizuar mund të përdoret vetëm me modelin për të cilin është krijuar.

Fushat
objekti contents[] object ( Content )

Fakultative. Vetëm hyrje. E pandryshueshme. Përmbajtja në cache.

tools[] object ( Tool )

Fakultative. Vetëm hyrje. E pandryshueshme. Një listë e Tools modeli mund të përdorë për të gjeneruar përgjigjen e radhës

createTime string ( Timestamp format)

Vetëm dalje. Koha e krijimit të hyrjes në cache.

Një vulë kohore në formatin RFC3339 UTC "Zulu", me rezolucion nanosekonda dhe deri në nëntë shifra të pjesshme. Shembuj: "2014-10-02T15:01:23Z" dhe "2014-10-02T15:01:23.045123456Z" .

Vargu updateTime string ( Timestamp format)

Vetëm dalje. Kur hyrja në cache u përditësua për herë të fundit në kohën UTC.

Një vulë kohore në formatin RFC3339 UTC "Zulu", me rezolucion nanosekonda dhe deri në nëntë shifra të pjesshme. Shembuj: "2014-10-02T15:01:23Z" dhe "2014-10-02T15:01:23.045123456Z" .

përdorimi i objektit usageMetadata object ( UsageMetadata )

Vetëm dalje. Metadatat mbi përdorimin e përmbajtjes së memorizuar.

expiration fushës së bashkimit. Përcakton se kur do të skadojë ky burim. expiration mund të jetë vetëm një nga sa vijon:
Vargu expireTime string ( Timestamp format)

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

Një vulë kohore në formatin RFC3339 UTC "Zulu", me rezolucion nanosekonda dhe deri në nëntë shifra të pjesshme. Shembuj: "2014-10-02T15:01:23Z" dhe "2014-10-02T15:01:23.045123456Z" .

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 të pjesshme, që mbarojnë me ' s '. Shembull: "3.5s" .

string name

Fakultative. Identifikues. Emri i burimit që i referohet përmbajtjes së memorizuar. Formati: cachedContents/{id}

string displayName

Fakultative. E pandryshueshme. Emri i shfaqur kuptimplotë i krijuar nga përdoruesi i përmbajtjes së memorizuar. Maksimumi 128 karaktere Unicode.

string model

E detyrueshme. E pandryshueshme. Emri i Model që do të përdoret për përmbajtjen e memorizuar Formati: models/{model}

systemInstruction object ( Content )

Fakultative. Vetëm hyrje. E pandryshueshme. Udhëzime për sistemin e grupit të zhvilluesit. Aktualisht vetëm tekst.

Objekti toolConfig object ( ToolConfig )

Fakultative. Vetëm hyrje. E pandryshueshme. Konfigurimi i mjetit. Ky konfigurim është i ndarë për të gjitha mjetet.

Përfaqësimi JSON
{
  "contents": [
    {
      object (Content)
    }
  ],
  "tools": [
    {
      object (Tool)
    }
  ],
  "createTime": string,
  "updateTime": string,
  "usageMetadata": {
    object (UsageMetadata)
  },

  // Union field expiration can be only one of the following:
  "expireTime": string,
  "ttl": string
  // End of list of possible types for union field expiration.
  "name": string,
  "displayName": string,
  "model": string,
  "systemInstruction": {
    object (Content)
  },
  "toolConfig": {
    object (ToolConfig)
  }
}

përmbajtja

Lloji i të dhënave të strukturuar bazë që përmban përmbajtje me shumë pjesë 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 me shumë pjesë që përmban përmbajtjen e kthesës së mesazhit.

Fushat
parts[] object ( Part )

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

string role

Fakultative. 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 i të dhënave që përmban media që është pjesë e një mesazhi Content shumëpjesëshe.

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

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

Fushat

data në terren të bashkimit.

data mund të jenë vetëm një nga të mëposhtmet:

string text

Teksti në linjë.

Objekti inlineData object ( Blob )

Bajt mediash në linjë.

Objekti functionCall object ( 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 (FunksionResponse)

Dalja e rezultatit të një FunctionCall që përmban një varg që përfaqëson FunctionDeclaration.name dhe një objekt të strukturuar JSON që përmban ndonjë dalje nga funksioni përdoret si kontekst për modelin.

objekti fileData object ( FileData )

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

object ( ExecutableCode ) executableCode (Kodi i ekzekutueshëm)

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

objekti codeExecutionResult object ( CodeExecutionResult )

Rezultati i ekzekutimit të kodit ExecutableCode .

Përfaqësimi JSON
{

  // Union field data can be only one of the following:
  "text": string,
  "inlineData": {
    object (Blob)
  },
  "functionCall": {
    object (FunctionCall)
  },
  "functionResponse": {
    object (FunctionResponse)
  },
  "fileData": {
    object (FileData)
  },
  "executableCode": {
    object (ExecutableCode)
  },
  "codeExecutionResult": {
    object (CodeExecutionResult)
  }
  // End of list of possible types for union field data.
}

Njollë

Bajt mediash të papërpunuara.

Teksti nuk duhet të dërgohet si bajt të 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 ofrohet 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ështetur .

vargu data string ( bytes format)

Bajt të papërpunuara për formatet e medias.

Një varg i koduar me bazë 64.

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

FunksioniThirrje

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 name

E detyrueshme. Emri i funksionit për të thirrur. Duhet të jetë az, AZ, 0-9, ose të përmbajë nënvizime dhe vija, me një gjatësi maksimale 63.

objekti args object ( Struct format)

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

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

Funksioni Përgjigje

Rezultati i daljes nga një FunctionCall që përmban një varg që përfaqëson FunctionDeclaration.name dhe një objekt të strukturuar JSON që përmban ndonjë dalje nga funksioni përdoret si kontekst për modelin. Kjo duhet të përmbajë rezultatin e një FunctionCall të bërë bazuar në parashikimin e modelit.

Fushat
string name

E detyrueshme. Emri i funksionit për të thirrur. Duhet të jetë az, AZ, 0-9, ose të përmbajë nënvizime dhe vija, me një gjatësi maksimale 63.

objekti response object ( Struct format)

E detyrueshme. Përgjigja e funksionit në formatin e objektit JSON.

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

Të dhënat e skedarit

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

Fushat
string mimeType

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

string fileUri

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 kthehet në model.

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

Fushat
numërimi 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 krijuar.

Enums
LANGUAGE_UNSPECIFIED Gjuhë e paspecifikuar. Kjo vlerë nuk duhet të përdoret.
PYTHON Python >= 3.10, me numpy dhe simpy në dispozicion.

Rezultati i ekzekutimit të kodit

Rezultati i ekzekutimit të kodit ExecutableCode .

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

Fushat
numri i outcome enum ( Outcome )

E detyrueshme. Rezultati i ekzekutimit të kodit.

output string

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

Enums
OUTCOME_UNSPECIFIED Status i paspecifikuar. 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ë të gjatë dhe u anulua. Mund të ketë ose jo një prodhim të pjesshëm.

Mjet

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

Një Tool është një pjesë kodi që i mundëson sistemit të ndërveprojë me sisteme të jashtme për të kryer një veprim, ose grup veprimesh, jashtë njohurive dhe qëllimit të modelit.

Fushat
functionDeclarations[] object ( FunctionDeclaration )

Fakultative. Një listë e FunctionDeclarations të disponueshme për modelin që mund të përdoret për thirrjen e funksionit.

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 mbushur FunctionCall në përgjigje. Radha tjetër e bisedës mund të përmbajë një FunctionResponse me kontekstin e gjenerimit të "funksionit" të Content.role për kthesën e modelit tjetër.

objekti googleSearchRetrieval object ( GoogleSearchRetrieval )

Fakultative. Mjet rikuperimi që mundësohet nga kërkimi në Google.

Objekti codeExecution object ( CodeExecution )

Fakultative. Mundëson modelin të ekzekutojë kodin si pjesë e gjenerimit.

Përfaqësimi JSON
{
  "functionDeclarations": [
    {
      object (FunctionDeclaration)
    }
  ],
  "googleSearchRetrieval": {
    object (GoogleSearchRetrieval)
  },
  "codeExecution": {
    object (CodeExecution)
  }
}

Deklarata e Funksionit

Paraqitja e strukturuar e një deklarate funksioni siç përcaktohet nga specifikimi OpenAPI 3.03 . Të përfshira në këtë deklaratë janë emri i funksionit dhe parametrat. Kjo Deklaratë Funksioni është një paraqitje e 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 dhe vija, me një gjatësi maksimale 63.

string description

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

objekti parameters object ( Schema )

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

Përfaqësimi JSON
{
  "name": string,
  "description": string,
  "parameters": {
    object (Schema)
  }
}

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 primitivë 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.

vargun string format

Fakultative. Formati i të dhënave. Kjo përdoret vetëm për llojet primitive të të dhënave. Formatet e mbështetura: për llojin NUMBER: float, dyfish për llojin INTEGER: int32, int64 për llojin STRING: enum

string description

Fakultative. Një përshkrim i shkurtër i parametrit. Kjo mund të përmbajë shembuj të përdorimit. Përshkrimi i parametrit mund të formatohet si Markdown.

boolean nullable

Fakultative. Tregon nëse vlera mund të jetë nule.

varg string enum[]

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

vargu maxItems string ( int64 format)

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

vargu minItems string ( int64 format)

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

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

Fakultative. Vetitë e Llojit.OBJEKT.

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

string required[]

Fakultative. Vetitë e kërkuara të Llojit.OBJEKT.

objekti items object ( Schema )

Fakultative. Skema e elementeve të Type.ARRAY.

Përfaqësimi JSON
{
  "type": enum (Type),
  "format": string,
  "description": string,
  "nullable": boolean,
  "enum": [
    string
  ],
  "maxItems": string,
  "minItems": string,
  "properties": {
    string: {
      object (Schema)
    },
    ...
  },
  "required": [
    string
  ],
  "items": {
    object (Schema)
  }
}

Lloji

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

Enums
TYPE_UNSPECIFIED Nuk është specifikuar, nuk duhet të përdoret.
STRING Lloji i vargut.
NUMBER Lloji i numrit.
INTEGER Lloji i plotë.
BOOLEAN Lloji Boolean.
ARRAY Lloji i grupit.
OBJECT Lloji i objektit.

Rikthimi i GoogleSearch

Mjet për marrjen e të dhënave publike të uebit për tokëzim, mundësuar nga Google.

Fushat
object ( DynamicRetrievalConfig ) dynamicRetrievalConfig (DynamicRetrievalConfig)

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

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

DynamicRetrievalConfig

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

Fushat
numri i mode enum ( Mode )

Mënyra e parashikuesit që do të përdoret në rikthimin dinamik.

number dynamicThreshold

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

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

Modaliteti

Mënyra e parashikuesit që do të përdoret në rikthimin dinamik.

Enums
MODE_UNSPECIFIED Gjithmonë aktivizoni rikthimin.
MODE_DYNAMIC Kryeni rikthimin vetëm kur sistemi vendos se është e nevojshme.

Ekzekutimi i kodit

Ky lloj nuk ka fusha.

Mjet që ekzekuton kodin e krijuar nga modeli dhe automatikisht ia kthen rezultatin modelit.

Shihni gjithashtu ExecutableCode dhe CodeExecutionResult të cilat krijohen vetëm kur përdorni këtë mjet.

ToolConfig

Konfigurimi i mjetit që përmban parametra për specifikimin e përdorimit Tool në kërkesë.

Fushat
Objekti functionCallingConfig object ( FunctionCallingConfig )

Fakultative. Konfigurimi i thirrjes së funksionit.

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

FunctionCallingConfig

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

Fushat
numërimi i mode enum ( Mode )

Fakultative. Përcakton mënyrën në të cilën duhet të ekzekutohet thirrja e funksionit. Nëse nuk specifikohet, vlera e paracaktuar do të vendoset në AUTO.

string allowedFunctionNames[]

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

Kjo duhet të vendoset vetëm kur modaliteti është ANY. Emrat e funksioneve duhet të përputhen me [FunctionDeclaration.name]. Me modalitetin e vendosur në ANY, modeli do të parashikojë një thirrje funksioni nga grupi i emrave të funksioneve të ofruara.

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.

Enums
MODE_UNSPECIFIED Modaliteti i thirrjes së funksionit të papërcaktuar. 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 të gjuhës natyrore.
ANY Modeli është i kufizuar që gjithmonë të parashikojë vetëm një thirrje funksioni. Nëse është caktuar "allowedFunctionNames", thirrja e parashikuar e funksionit do të kufizohet në cilindo nga "allowedFunctionNames", përndryshe thirrja e parashikuar e funksionit do të jetë një nga "functionDeclarations" të ofruara.
NONE Modeli nuk do të parashikojë asnjë thirrje funksioni. Sjellja e modelit është e njëjtë si kur nuk kalon asnjë deklaratë funksioni.

Metadata e përdorimit

Metadatat mbi përdorimin e përmbajtjes së memorizuar.

Fushat
totalTokenCount integer

Numri total i argumenteve që konsumon përmbajtja e memorizuar.

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