Tipik bir yapay zeka iş akışında, bir modele aynı giriş jetonlarını tekrar tekrar iletebilirsiniz. Gemini API iki farklı önbelleğe alma mekanizması sunar:
- Örtük önbelleğe alma (otomatik, maliyet tasarrufu garantisi yok)
- Açık önbelleğe alma (manuel, maliyet tasarrufu garantisi)
Gizli önbelleğe alma, Gemini 2.5 modellerinde varsayılan olarak etkindir. Bir istek, önbelleğe isabet eden içerik içeriyorsa maliyet tasarrufunu otomatik olarak size geri veririz.
Açık önbelleğe alma, maliyet tasarrufu sağlamak istediğiniz ancak geliştirici çalışması gerektiren durumlarda kullanışlıdır.
Örtük önbelleğe alma
Örtük önbelleğe alma, tüm Gemini 2.5 modelleri için varsayılan olarak etkindir. İsteğiniz önbelleğe ulaşırsa maliyet tasarruflarını otomatik olarak iletiriz. Bunu etkinleştirmek için herhangi bir işlem yapmanız gerekmez. 8 Mayıs 2025'ten itibaren geçerlidir. Bağlam önbelleğe alma için minimum giriş jetonu sayısı 2.5 Flash için 1.024 ve 2.5 Pro için 2.048'dir.
Örtük önbellek isabeti olasılığını artırmak için:
- İsteminizi büyük ve yaygın içeriklerle başlatmayı deneyin
- Kısa süre içinde benzer ön eklerle istek göndermeye çalıştıysanız
Yanıt nesnesinin usage_metadata
alanında, önbelleğe alınan isabetlerin jeton sayısını görebilirsiniz.
Açık önbelleğe alma
Gemini API'nin açık önbelleğe alma özelliğini kullanarak bazı içerikleri modele bir kez iletebilir, giriş jetonlarını önbelleğe alabilir ve ardından sonraki istekler için önbelleğe alınan jetonlara başvurabilirsiniz. Belirli hacimlerde, önbelleğe alınmış jetonları kullanmak aynı jeton grubunu tekrar tekrar iletmek yerine daha düşük maliyetlidir.
Bir jeton grubunu önbelleğe aldığınızda, jetonlar otomatik olarak silinmeden önce önbelleğin ne kadar süre boyunca var olmasını istediğinizi seçebilirsiniz. Bu önbelleğe alma süresine geçerlilik süresi (TTL) denir. Ayarlanmazsa TTL varsayılan olarak 1 saat olur. Önbelleğe alma maliyeti, giriş jetonu boyutuna ve jetonların ne kadar süreyle kalmasını istediğinize bağlıdır.
Bu bölümde, bir Gemini SDK'sı (veya curl) yüklediğiniz ve hızlı başlangıç bölümünde gösterildiği gibi bir API anahtarı yapılandırdığınız varsayılmaktadır.
Önbelleği kullanarak içerik oluşturma
Aşağıdaki örnekte, önbelleğe alınmış bir sistem talimatı ve metin dosyası kullanılarak nasıl içerik oluşturulacağı gösterilmektedir.
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();
Önbellekleri listeleme
Önbelleğe alınmış içeriği almak veya görüntülemek mümkün değildir ancak önbelleğe alınmış meta verileri (name
, model
, displayName
, usageMetadata
, createTime
, updateTime
ve expireTime
) alabilirsiniz.
Yüklenen tüm önbellekleri meta verileriyle birlikte listelemek için GoogleGenAI.caches.list()
kullanın:
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();
}
Önbelleği güncelleme
Önbelleğe yeni bir ttl
veya expireTime
ayarlayabilirsiniz. Önbelleğe alma ile ilgili başka bir şeyin değiştirilmesi desteklenmez.
Aşağıdaki örnekte, GoogleGenAI.caches.update()
kullanılarak bir önbelleğin ttl
değerinin nasıl güncelleneceği gösterilmektedir.
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);
Önbelleği silme
Önbelleğe alma hizmeti, içeriği önbellekten manuel olarak kaldırmak için bir silme işlemi sağlar. Aşağıdaki örnekte, GoogleGenAI.caches.delete()
kullanılarak bir önbelleğin nasıl silineceği gösterilmektedir.
await ai.caches.delete({ name: cache.name });
Belirli önbelleğe alma ne zaman kullanılır?
Bağlam önbelleğe alma, özellikle önemli bir başlangıç bağlamının daha kısa istekler tarafından tekrar tekrar referans verildiği senaryolara uygundur. Aşağıdaki gibi kullanım alanları için bağlama dayalı önbelleğe alma özelliğini kullanabilirsiniz:
- Kapsamlı sistem talimatları içeren chatbot'lar
- Uzun video dosyalarının tekrarlı analizi
- Büyük doküman kümelerine yönelik yinelenen sorgular
- Sık sık kod deposu analizi veya hata düzeltme
Açık önbelleğe alma maliyetleri nasıl azaltır?
Bağlam önbelleğe alma, genel operasyon maliyetlerini azaltmak için tasarlanmış ücretli bir özelliktir. Faturalandırma aşağıdaki faktörlere göre yapılır:
- Önbelleğe alınan jeton sayısı: Sonraki istemlere dahil edildiğinde daha düşük bir oranda faturalandırılan, önbelleğe alınan giriş jetonlarının sayısı.
- Depolama süresi: Önbelleğe alınan jetonların depolandığı süre (TTL). Önbelleğe alınan jeton sayısının TTL süresine göre faturalandırılır. TTL için minimum veya maksimum sınır yoktur.
- Diğer faktörler: Önbelleğe alınmamış giriş jetonları ve çıkış jetonları gibi diğer ücretler geçerlidir.
Güncel fiyatlandırma ayrıntıları için Gemini API fiyatlandırma sayfasına bakın. Jetonları nasıl sayacağınızı öğrenmek için Jeton kılavuzuna göz atın.
Göz önünde bulundurulacak diğer noktalar
Bağlam önbelleğe alma özelliğini kullanırken aşağıdaki hususları göz önünde bulundurun:
- Bağlam önbelleğe alma için minimum giriş jetonu sayısı 2.5 Flash için 1.024 ve 2.5 Pro için 2.048'dir. Maksimum, belirli modelin maksimum değeriyle aynıdır. (Jeton sayma hakkında daha fazla bilgi için Jeton rehberi başlıklı makaleyi inceleyin.)
- Model, önbelleğe alınmış jetonlar ile normal giriş jetonları arasında herhangi bir ayrım yapmaz. Önbelleğe alınan içerik, istemin ön ekinde yer alır.
- Bağlam önbelleğe alma işleminde özel bir ücret veya kullanım sınırı yoktur.
GenerateContent
için standart ücret sınırları geçerlidir ve jeton sınırları, önbelleğe alınmış jetonları içerir. - Önbelleğe alınan jetonların sayısı, önbelleğe alma hizmetinin oluşturma, alma ve listeleme işlemlerinden
usage_metadata
içinde ve önbelleğe alma işlemi sırasındaGenerateContent
içinde döndürülür.