ในเวิร์กโฟลว์ AI ทั่วไป คุณอาจส่งโทเค็นอินพุตเดียวกันซ้ำๆ ไปยังโมเดล เมื่อใช้ฟีเจอร์การแคชบริบทของ Gemini API คุณสามารถส่งเนื้อหาบางส่วนไปยังโมเดลได้เพียงครั้งเดียว แคชโทเค็นอินพุต แล้วอ้างอิงโทเค็นที่แคชไว้สำหรับคำขอที่ตามมา เมื่อใช้โทเค็นที่แคชไว้ในปริมาณหนึ่งๆ ค่าใช้จ่ายจะต่ำกว่าการส่งชุดโทเค็นเดียวกันซ้ำๆ
เมื่อแคชชุดโทเค็น คุณจะเลือกระยะเวลาที่ต้องการให้แคชอยู่ได้ก่อนที่ระบบจะลบโทเค็นโดยอัตโนมัติ ระยะเวลาการแคชนี้เรียกว่า Time to Live (TTL) หากไม่ได้ตั้งค่า TTL ระบบจะใช้ค่าเริ่มต้น 1 ชั่วโมง ค่าใช้จ่ายในการแคชจะขึ้นอยู่กับขนาดโทเค็นอินพุตและระยะเวลาที่คุณต้องการให้โทเค็นคงอยู่
การแคชบริบทจะแตกต่างกันไปในแต่ละรุ่น
กรณีที่ควรใช้การแคชบริบท
การแคชบริบทเหมาะอย่างยิ่งกับสถานการณ์ที่มีการอ้างอิงบริบทเริ่มต้นจำนวนมากซ้ำๆ โดยคำขอที่สั้นกว่า ลองใช้แคชตามบริบทสําหรับกรณีการใช้งาน เช่น
- แชทบ็อตที่มีวิธีการของระบบอย่างละเอียด
- การวิเคราะห์ไฟล์วิดีโอที่มีความยาวซ้ำๆ
- การค้นหาที่ซ้ำกันกับชุดเอกสารขนาดใหญ่
- การวิเคราะห์ที่เก็บโค้ดหรือการแก้ไขข้อบกพร่องบ่อยครั้ง
วิธีใช้การแคชบริบท
ส่วนนี้จะถือว่าคุณได้ติดตั้ง Gemini SDK (หรือติดตั้ง curl) และกำหนดค่าคีย์ API แล้ว ตามที่แสดงในบทแนะนำ
สร้างเนื้อหาโดยใช้แคช
ตัวอย่างต่อไปนี้แสดงวิธีสร้างเนื้อหาโดยใช้คำสั่งของระบบที่แคชไว้และไฟล์ข้อความ
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();
แสดงรายการแคช
คุณไม่สามารถเรียกดูหรือดูเนื้อหาที่แคชไว้ได้ แต่สามารถเรียกข้อมูลเมตาที่แคชไว้ (name
, model
, displayName
, usageMetadata
,
createTime
, updateTime
และ expireTime
)
หากต้องการแสดงรายการข้อมูลเมตาของแคชที่อัปโหลดทั้งหมด ให้ใช้ 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();
}
อัปเดตแคช
คุณสามารถตั้งค่า ttl
หรือ expireTime
ใหม่สำหรับแคชได้ ไม่รองรับการเปลี่ยนแปลงอื่นๆ เกี่ยวกับแคช
ตัวอย่างต่อไปนี้แสดงวิธีอัปเดต ttl
ของแคชโดยใช้ 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);
ลบแคช
บริการแคชมีการดำเนินการลบสำหรับการนำเนื้อหาออกจากแคชด้วยตนเอง ตัวอย่างต่อไปนี้แสดงวิธีลบแคชโดยใช้ GoogleGenAI.caches.delete()
await ai.caches.delete({ name: cache.name });
วิธีที่การแคชช่วยลดค่าใช้จ่าย
การแคชบริบทเป็นฟีเจอร์แบบชำระเงินที่ออกแบบมาเพื่อลดต้นทุนการดําเนินการโดยรวม การเรียกเก็บเงินจะอิงตามปัจจัยต่อไปนี้
- จํานวนโทเค็นแคช: จํานวนโทเค็นอินพุตที่แคชไว้ ซึ่งจะเรียกเก็บในราคาที่ลดลงเมื่อรวมอยู่ในพรอมต์ต่อๆ ไป
- ระยะเวลาการจัดเก็บ: ระยะเวลาที่จัดเก็บโทเค็นแคชไว้ (TTL) ซึ่งจะเรียกเก็บเงินตามระยะเวลา TTL ของจำนวนโทเค็นแคช TTL ไม่มีขีดจำกัดต่ำสุดหรือสูงสุด
- ปัจจัยอื่นๆ: ระบบจะเรียกเก็บเงินอื่นๆ เช่น สำหรับโทเค็นอินพุตและโทเค็นเอาต์พุตที่ไม่ได้แคชไว้
ดูรายละเอียดราคาล่าสุดได้ที่หน้าราคาของ Gemini API ดูวิธีนับโทเค็นได้ที่คู่มือโทเค็น
ข้อควรพิจารณาเพิ่มเติม
โปรดคํานึงถึงข้อควรพิจารณาต่อไปนี้เมื่อใช้การแคชบริบท
- จํานวนโทเค็นอินพุตขั้นต่ำสําหรับการแคชบริบทคือ 4,096 และสูงสุดจะเหมือนกับจํานวนสูงสุดของโมเดลนั้นๆ (ดูข้อมูลเพิ่มเติมเกี่ยวกับการนับโทเค็นได้ในคู่มือโทเค็น)
- โมเดลนี้ไม่ได้แยกความแตกต่างระหว่างโทเค็นที่แคชไว้กับโทเค็นอินพุตปกติ เนื้อหาที่แคชไว้คือคำนำหน้าของพรอมต์
- ไม่มีการจำกัดอัตราหรือการใช้งานพิเศษในการแคชบริบท ระบบจะใช้ขีดจำกัดอัตรามาตรฐานสำหรับ
GenerateContent
และขีดจำกัดโทเค็นจะรวมโทเค็นที่แคชไว้ - ระบบจะแสดงจำนวนโทเค็นที่แคชไว้ใน
usage_metadata
จากการดำเนินการสร้าง รับ และแสดงรายการของบริการแคช และในGenerateContent
เมื่อใช้แคช