Memoria e kontekstit

Në një rrjedhë pune tipike të AI, ju mund t'i kaloni të njëjtat argumente hyrëse vazhdimisht tek një model. Duke përdorur veçorinë e ruajtjes së kontekstit të Gemini API, mund t'i kaloni disa përmbajtje modelit një herë, të ruani në memorien e duhur shenjat hyrëse dhe më pas t'i referoheni argumenteve të ruajtura në memorie për kërkesat e mëvonshme. Në vëllime të caktuara, përdorimi i argumenteve të ruajtura në memorie është kosto më e ulët sesa kalimi në të njëjtin korpus tokenësh në mënyrë të përsëritur.

Kur ruani një grup argumentesh, mund të zgjidhni për sa kohë dëshironi të ekzistojë cache përpara se të fshihen automatikisht shenjat. Kjo kohëzgjatje memorie quhet koha për të jetuar (TTL). Nëse nuk është caktuar, TTL është parazgjedhur në 1 orë. Kostoja e ruajtjes në memorie varet nga madhësia e tokenit të hyrjes dhe nga sa kohë dëshironi që tokenët të vazhdojnë.

Ruajtja në memorie e kontekstit ndryshon nga modeli në model .

Kur të përdorni memorien e kontekstit

Ruajtja në memorie e kontekstit është veçanërisht e përshtatshme për skenarët ku një kontekst thelbësor fillestar referohet në mënyrë të përsëritur nga kërkesa më të shkurtra. Merrni parasysh përdorimin e memories së kontekstit për rastet e përdorimit të tilla si:

  • Chatbots me udhëzime të gjera të sistemit
  • Analiza e përsëritur e skedarëve video të gjatë
  • Pyetje të përsëritura kundër grupeve të mëdha të dokumenteve
  • Analiza e shpeshtë e depove të kodit ose rregullimi i gabimeve

Si të përdorni memorien e kontekstit

Ky seksion supozon se keni instaluar një Gemini SDK (ose keni instaluar curl) dhe se keni konfiguruar një çelës API, siç tregohet në fillimin e shpejtë .

Gjeneroni përmbajtje duke përdorur një cache

Shembulli i mëposhtëm tregon se si të gjeneroni përmbajtje duke përdorur një udhëzim të sistemit të ruajtur dhe një skedar teksti.

import {
  GoogleGenAI,
  createUserContent,
  createPartFromUri,
} from "@google/genai";

const ai = new GoogleGenAI({ apiKey: "GEMINI_API_KEY" });

async function main() {
  const doc = await ai.files.upload({
    file: "path/to/file.txt",
    config: { mimeType: "text/plain" },
  });
  console.log("Uploaded file name:", doc.name);

  const modelName = "gemini-2.0-flash-001";
  const cache = await ai.caches.create({
    model: modelName,
    config: {
      contents: createUserContent(createPartFromUri(doc.uri, doc.mimeType)),
      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);
}

await main();

Listoni cache

Nuk është e mundur të rikuperoni ose shikoni përmbajtjen e ruajtur në memorie, por mund të rikuperoni metadatat e memories së memories ( name , model , displayName , usageMetadata , createTime , updateTime dhe expireTime ).

Për të renditur të dhënat meta për të gjitha memoriet e ngarkuara, përdorni GoogleGenAI.caches.list() :

console.log("My caches:");
const pager = await ai.caches.list({ config: { pageSize: 10 } });
let page = pager.page;
while (true) {
  for (const c of page) {
    console.log("    ", c.name);
  }
  if (!pager.hasNextPage()) break;
  page = await pager.nextPage();
}

Përditëso një cache

Mund të vendosni një ttl të ri ose expireTime për një cache. Ndryshimi i ndonjë gjëje tjetër në lidhje me cache nuk mbështetet.

Shembulli i mëposhtëm tregon se si të përditësoni ttl të një cache duke përdorur GoogleGenAI.caches.update() .

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

Fshi një cache

Shërbimi i memorizimit ofron një operacion fshirjeje për heqjen manuale të përmbajtjes nga cache. Shembulli i mëposhtëm tregon se si të fshini një cache duke përdorur GoogleGenAI.caches.delete() .

await ai.caches.delete({ name: cache.name });

Si zvogëlon kostot memoria e fshehtë

Ruajtja në memorie e kontekstit është një veçori me pagesë e krijuar për të reduktuar kostot e përgjithshme operacionale. Faturimi bazohet në faktorët e mëposhtëm:

  1. Numri i shenjave të memories së memories: Numri i shenjave hyrëse të ruajtura në memorie, të faturuar me një tarifë të reduktuar kur përfshihen në kërkesat pasuese.
  2. Kohëzgjatja e ruajtjes: Sasia e kohës që ruhen argumentet e ruajtura në memorie (TTL), e faturuar bazuar në kohëzgjatjen TTL të numrit të shenjave të ruajtura në memorie. Nuk ka kufij minimalë ose maksimalë në TTL.
  3. Faktorë të tjerë: Zbatohen tarifa të tjera, si p.sh. për shenjat hyrëse dhe ato dalëse jo të ruajtura në memorie të fshehtë.

Për detaje të përditësuara të çmimeve, referojuni faqes së çmimeve të Gemini API. Për të mësuar se si të numëroni shenjat, shihni udhëzuesin Token .

Konsiderata shtesë

Mbani parasysh konsideratat e mëposhtme kur përdorni memorien e kontekstit:

  • Numri minimal i shenjave hyrëse për ruajtjen në memorien e kontekstit është 4,096, dhe maksimumi është i njëjtë me maksimumin për modelin e dhënë. (Për më shumë rreth numërimit të shenjave, shihni udhëzuesin Token ).
  • Modeli nuk bën asnjë dallim midis argumenteve të ruajtura në memorie dhe shenjave të zakonshme të hyrjes. Përmbajtja e memorizuar është një parashtesë e kërkesës.
  • Nuk ka kufizime të veçanta të tarifave ose përdorimit në memorien e kontekstit; zbatohen kufijtë standardë të tarifave për GenerateContent dhe kufijtë e tokenit përfshijnë argumentet e ruajtura në memorie të fshehtë.
  • Numri i shenjave të ruajtura në memorie kthehet në usage_metadata nga operacionet e krijimit, marrjes dhe listimit të shërbimit të memories së memories, dhe gjithashtu në GenerateContent kur përdorni cache.