สำหรับฟีเจอร์ AI คุณอาจส่งโทเค็นอินพุต (เนื้อหา) เดียวกันซ้ำๆ ไปยังโมเดล สำหรับกรณีการใช้งานเหล่านี้ คุณสามารถ แคช เนื้อหาดังกล่าวแทนได้ ซึ่งหมายความว่าคุณจะส่งเนื้อหาไปยังโมเดล 1 ครั้ง จัดเก็บเนื้อหา และอ้างอิง เนื้อหาในคำขอที่ตามมา
การแคชบริบทช่วยลดเวลาในการตอบสนองและค่าใช้จ่ายได้อย่างมากสำหรับงานที่ทำซ้ำๆ ซึ่งเกี่ยวข้องกับ เนื้อหาจำนวนมาก เช่น ข้อความจำนวนมาก ไฟล์เสียง หรือไฟล์วิดีโอ กรณีการใช้งานที่พบบ่อยบางส่วนสำหรับเนื้อหาที่แคชไว้ ได้แก่ เอกสารเพอร์โซนาโดยละเอียด ฐานของโค้ด หรือคู่มือ
โมเดล Gemini มีกลไกการแคช 2 แบบที่แตกต่างกัน ดังนี้
การแคชแบบไม่เจาะจง: เปิดใช้โดยอัตโนมัติ ในโมเดลส่วนใหญ่ ไม่รับประกันการประหยัดค่าใช้จ่าย
การแคชแบบเจาะจง: สามารถเปิดใช้ เลือกได้ และ ด้วยตนเอง ในโมเดลส่วนใหญ่ มักจะส่งผลให้ ประหยัดค่าใช้จ่าย
การแคชแบบเจาะจงมีประโยชน์ในกรณีที่คุณต้องการรับประกันการประหยัดค่าใช้จ่ายมากขึ้น แต่ต้องเพิ่มงานของนักพัฒนาแอป
สำหรับการแคชแบบไม่เจาะจงและแบบเจาะจง ฟิลด์ cachedContentTokenCount ในข้อมูลเมตาของการตอบกลับจะระบุจำนวนโทเค็นในส่วนที่แคชไว้ของอินพุต สำหรับการแคชแบบเจาะจง โปรดตรวจสอบข้อมูลราคา
ที่ด้านล่างของหน้านี้
โมเดลที่รองรับ
ระบบรองรับการแคชเมื่อใช้โมเดลต่อไปนี้
gemini-3.1-pro-previewgemini-3.5-flashgemini-3.1-flash-litegemini-2.5-progemini-2.5-flashgemini-2.5-flash-lite
โมเดลที่สร้างสื่อ (เช่น โมเดล "Nana Banana" อย่าง gemini-3.1-flash-image) ไม่ รองรับการแคชบริบท
ข้อจำกัดด้านขนาดของเนื้อหาที่แคชไว้
แต่ละโมเดลมีข้อกำหนดจำนวนโทเค็น ขั้นต่ำ สำหรับเนื้อหาที่แคชไว้ ส่วนจำนวนโทเค็นสูงสุดจะขึ้นอยู่กับหน้าต่างบริบทของโมเดล
- โมเดล Gemini Pro: โทเค็นขั้นต่ำ 4096 รายการ
- โมเดล Gemini Flash: โทเค็นขั้นต่ำ 1024 รายการ
นอกจากนี้ ขนาดสูงสุดของเนื้อหาที่คุณแคชไว้โดยใช้ BLOB หรือข้อความคือ 10 MB
การแคชแบบไม่เจาะจง
การแคชแบบไม่เจาะจงจะเปิดใช้โดยค่าเริ่มต้น และพร้อมให้บริการสำหรับโมเดล Gemini ส่วนใหญ่
Google จะส่งต่อการประหยัดค่าใช้จ่ายโดยอัตโนมัติหากคำขอของคุณตรงกับเนื้อหาที่แคชไว้ ต่อไปนี้คือวิธีเพิ่มโอกาสที่คำขอของคุณจะใช้การแคชแบบไม่เจาะจง
- ลองวางเนื้อหาขนาดใหญ่และเนื้อหาที่พบบ่อยไว้ที่จุดเริ่มต้นของพรอมต์
- ลองส่งคำขอที่มีคำนำหน้าที่คล้ายกันภายในระยะเวลาสั้นๆ
ระบบจะระบุจำนวนโทเค็นในส่วนที่แคชไว้ของอินพุตในฟิลด์ cachedContentTokenCount ในข้อมูลเมตาของการตอบกลับ
การแคชแบบเจาะจง
การแคชแบบเจาะจง ไม่ได้ เปิดใช้โดยค่าเริ่มต้น และเป็น ความสามารถเสริมของโมเดล Gemini
วิธีตั้งค่าและใช้แคชเนื้อหาแบบเจาะจง
จัดการแคชแบบเจาะจง ซึ่งรวมถึง
โปรดทราบว่าแคชเนื้อหาแบบเจาะจงจะโต้ตอบกับการแคชแบบไม่เจาะจง ซึ่งอาจนำไปสู่การแคชเพิ่มเติมจากเนื้อหาที่แคชแบบเจาะจง คุณสามารถป้องกันการเก็บรักษาข้อมูลแคชได้โดยการปิดใช้การแคชแบบไม่เจาะจงและไม่สร้างแคชแบบเจาะจง ดูข้อมูลเพิ่มเติมได้ที่ หัวข้อเปิดและปิดใช้การแคช
สร้างและใช้แคชแบบเจาะจง
การสร้างและใช้แคชเนื้อหาแบบเจาะจงต้องมีสิ่งต่อไปนี้
ข้อมูลสำคัญเกี่ยวกับการสร้างและใช้แคชแบบเจาะจง
แคชต้องสอดคล้องกับคำขอพรอมต์ของแอปและเทมเพลตพรอมต์ของเซิร์ฟเวอร์ โดยมีรายละเอียดดังนี้
แคชมีไว้สำหรับผู้ให้บริการ Gemini API ที่เฉพาะเจาะจง คำขอพรอมต์ของแอปต้องใช้ผู้ให้บริการรายเดียวกัน
สำหรับ Firebase AI Logic เราขอแนะนำให้ใช้แคชเนื้อหาแบบเจาะจง กับ Vertex AI Gemini APIเท่านั้น ข้อมูลและ ตัวอย่างทั้งหมดในหน้านี้มีไว้สำหรับผู้ให้บริการ Gemini API รายดังกล่าวแคชมีไว้สำหรับโมเดล Gemini ที่เฉพาะเจาะจง คำขอพรอมต์ของแอปต้องใช้โมเดลเดียวกัน
แคชมีไว้สำหรับสถานที่ที่เฉพาะเจาะจงเมื่อใช้ Vertex AI Gemini API
สถานที่สำหรับแคชแบบเจาะจงต้องตรงกับ สถานที่ของเทมเพลตพรอมต์ของเซิร์ฟเวอร์ และ สถานที่ที่คุณเข้าถึงโมเดล ในคำขอพรอมต์ของแอป
นอกจากนี้ โปรดทราบข้อจำกัดและข้อกำหนดต่อไปนี้สำหรับการแคชแบบเจาะจง
เมื่อสร้างแคชแบบเจาะจงแล้ว คุณจะเปลี่ยนแปลงสิ่งใดๆ เกี่ยวกับแคชไม่ได้ ยกเว้น TTL หรือเวลาหมดอายุ
คุณสามารถแคชประเภท MIME ของไฟล์อินพุตที่ รองรับ หรือแม้แต่ข้อความที่ระบุไว้ในคำขอสร้างแคช
หากต้องการรวมไฟล์ไว้ในแคช คุณต้องระบุไฟล์เป็น Cloud Storage URI โดยต้องไม่ใช่ URL ของเบราว์เซอร์หรือ URL ของ YouTube
นอกจากนี้ ระบบจะตรวจสอบข้อจำกัดการเข้าถึงไฟล์ใน เวลาสร้างแคช และ จะไม่ตรวจสอบข้อจำกัดการเข้าถึงอีกครั้งในเวลาที่ผู้ใช้ส่งคำขอ ด้วยเหตุนี้ โปรดตรวจสอบว่าข้อมูลที่รวมอยู่ในแคชแบบเจาะจงเหมาะสำหรับผู้ใช้ทุกคนที่ส่งคำขอซึ่งรวมแคชดังกล่าว
หากต้องการใช้คำแนะนำหรือเครื่องมือของระบบ (เช่น การดำเนินการโค้ด, บริบท URL, Grounding with
Google Search , หรือ Grounding withGoogle Maps ) แคชเองต้องมีการกำหนดค่าของคำแนะนำหรือเครื่องมือเหล่านั้น คุณ ไม่สามารถ กำหนดค่าในเทมเพลตพรอมต์ของเซิร์ฟเวอร์หรือในคำขอพรอมต์ของแอป โปรดทราบว่าเทมเพลตพรอมต์ของเซิร์ฟเวอร์ ยังไม่ รองรับการเรียกใช้ฟังก์ชัน (หรือการแชท) ดูรายละเอียดเกี่ยวกับวิธีกำหนดค่าคำแนะนำ และเครื่องมือของระบบในแคชได้ที่ REST API ของ Vertex AI Gemini API
ขั้นตอนที่ 1: สร้างแคช
สร้างแคชโดยใช้ REST API ของ Vertex AI Gemini API โดยตรง
ตัวอย่างต่อไปนี้แสดงการสร้างแคชแบบเจาะจงของไฟล์ PDF เป็นเนื้อหา
ไวยากรณ์:
PROJECT_ID="PROJECT_ID"
MODEL_ID="GEMINI_MODEL" # for example, gemini-3.5-flash
LOCATION="LOCATION" # location for both the cache and the model
MIME_TYPE="MIME_TYPE"
CACHED_CONTENT_URI="CLOUD_STORAGE_FILE_URI" # must be a Cloud Storage URI
CACHE_DISPLAY_NAME="CACHE_DISPLAY_NAME" # optional
TTL="CACHE_TIME_TO_LIVE" # optional (if not specified, defaults to 3600s)
curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/cachedContents \
-d @- <<EOF
{
"model":"projects/${PROJECT_ID}/locations/${LOCATION}/publishers/google/models/${MODEL_ID}",
"contents": [
{
"role": "user",
"parts": [
{
"fileData": {
"mimeType": "${MIME_TYPE}",
"fileUri": "${CACHED_CONTENT_URI}"
}
}
]
}
],
"displayName": "${CACHE_DISPLAY_NAME}",
"ttl": "${TTL}"
}
EOF
ตัวอย่างคำขอ:
PROJECT_ID="my-amazing-app"
MODEL_ID="gemini-3.5-flash"
LOCATION="global"
MIME_TYPE="application/pdf"
CACHED_CONTENT_URI="gs://cloud-samples-data/generative-ai/pdf/2312.11805v3.pdf"
CACHE_DISPLAY_NAME="Gemini - A Family of Highly Capable Multimodal Model (PDF)"
TTL="7200s"
curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/cachedContents \
-d @- <<EOF
{
"model":"projects/${PROJECT_ID}/locations/${LOCATION}/publishers/google/models/${MODEL_ID}",
"contents": [
{
"role": "user",
"parts": [
{
"fileData": {
"mimeType": "${MIME_TYPE}",
"fileUri": "${CACHED_CONTENT_URI}"
}
}
]
}
],
"displayName": "${CACHE_DISPLAY_NAME}",
"ttl": "${TTL}"
}
EOF
ตัวอย่างการตอบกลับ:
การตอบกลับจะมี name ของทรัพยากรแบบเต็ม ซึ่งไม่ซ้ำกันทั่วโลกสำหรับแคช (โปรดทราบว่าส่วนสุดท้ายคือรหัสแคช) คุณจะใช้ค่า name ทั้งหมดนี้ในขั้นตอนถัดไปของเวิร์กโฟลว์
{
"name": "projects/861083271981/locations/global/cachedContents/4545031458888089601",
"model": "projects/my-amazing-app/locations/global/publishers/google/models/gemini-3.5-flash",
"createTime": "2024-06-04T01:11:50.808236Z",
"updateTime": "2024-06-04T01:11:50.808236Z",
"expireTime": "2024-06-04T02:11:50.794542Z"
}
ขั้นตอนที่ 2: อ้างอิงแคชในเทมเพลตพรอมต์ของเซิร์ฟเวอร์
หลังจากสร้างแคชแล้ว ให้อ้างอิงแคชตาม name ภายในcachedContent
พร็อพเพอร์ตี้ของ
เทมเพลตพรอมต์ของเซิร์ฟเวอร์
ตรวจสอบว่าคุณปฏิบัติตามข้อกำหนดต่อไปนี้เมื่อสร้างเทมเพลตพรอมต์ของเซิร์ฟเวอร์
ใช้
nameของทรัพยากรแบบเต็มจากการตอบกลับเมื่อสร้างแคช โดย ไม่ใช่ ชื่อที่แสดงที่ไม่บังคับที่คุณระบุไว้ในคำขอสถานที่สำหรับเทมเพลตพรอมต์ของเซิร์ฟเวอร์ต้องตรงกับสถานที่ของแคช
หากต้องการใช้คำแนะนำหรือเครื่องมือของระบบ คุณต้องกำหนดค่าคำแนะนำหรือเครื่องมือเหล่านั้นเป็น ส่วนหนึ่งของแคช และ ไม่ใช่ เป็นส่วนหนึ่งของเทมเพลตพรอมต์ของเซิร์ฟเวอร์
ไวยากรณ์:
{{cachedContent name="YOUR_CACHE_RESOURCE_NAME"}}
{{role "user"}}
{{userPrompt}}
ตัวอย่าง:
{{cachedContent name="projects/861083271981/locations/global/cachedContents/4545031458888089601"}}
{{role "user"}}
{{userPrompt}}
อีกทางเลือกหนึ่งคือ ค่าของพารามิเตอร์ name ในเทมเพลตพรอมต์ของเซิร์ฟเวอร์
อาจเป็น
ตัวแปรอินพุตแบบไดนามิก
เช่น
{{cachedContent name=someVariable}}name ของแคชเป็นอินพุตสำหรับคำขอจาก
แอปได้
ขั้นตอนที่ 3: อ้างอิงเทมเพลตพรอมต์ของเซิร์ฟเวอร์ในคำขอจากแอป
โปรดระมัดระวังอย่างยิ่งเกี่ยวกับสิ่งต่อไปนี้เมื่อเขียนคำขอ
ใช้ Vertex AI Gemini API เนื่องจากแคชสร้างขึ้นด้วย Gemini API ผู้ให้บริการรายดังกล่าว
สถานที่ที่คุณเข้าถึงโมเดลในคำขอพรอมต์ของแอปต้องตรงกับสถานที่ของเทมเพลตพรอมต์ของเซิร์ฟเวอร์และแคช
Swift
// ...
// Initialize the Vertex AI Gemini API backend service
// Create a `TemplateGenerativeModel` instance
// Make sure to specify the same location as the server prompt template and the cache
let model = FirebaseAI.firebaseAI(backend: .vertexAI(location: "LOCATION"))
.templateGenerativeModel()
do {
let response = try await model.generateContent(
// Specify your template ID
templateID: "TEMPLATE_ID"
)
if let text = response.text {
print("Response Text: \(text)")
}
} catch {
print("An error occurred: \(error)")
}
print("\n")
Kotlin
// ...
// Initialize the Vertex AI Gemini API backend service
// Create a `TemplateGenerativeModel` instance
// Make sure to specify the same location as the server prompt template and the cache
val model = Firebase.ai(backend = GenerativeBackend.vertexAI(location = "LOCATION"))
.templateGenerativeModel()
val response = model.generateContent(
// Specify your template ID
"TEMPLATE_ID",
)
val text = response.text
println(text)
Java
// ...
// Initialize the Vertex AI Gemini API backend service
// Create a `TemplateGenerativeModel` instance
// Make sure to specify the same location as the server prompt template and the cache
TemplateGenerativeModel generativeModel = FirebaseAI.getInstance().templateGenerativeModel();
TemplateGenerativeModelFutures model = TemplateGenerativeModelFutures.from(generativeModel);
Future<GenerateContentResponse> response = model.generateContent(
// Specify your template ID
"TEMPLATE_ID"
);
addCallback(response,
new FutureCallback<GenerateContentResponse>() {
public void onSuccess(GenerateContentResponse result) {
System.out.println(result.getText());
}
public void onFailure(Throwable t) {
reportError(t);
}
}
executor);
Web
// ...
// Initialize the Vertex AI Gemini API backend service
// Make sure to specify the same location as the server prompt template and the cache
const ai = getAI(app, { backend: new VertexAIBackend('LOCATION') });
// Create a `TemplateGenerativeModel` instance
const model = getTemplateGenerativeModel(ai);
const result = await model.generateContent(
// Specify your template ID
'TEMPLATE_ID'
);
const response = result.response;
const text = response.text();
Dart
// ...
// Initialize the Vertex AI Gemini API backend service
// Create a `TemplateGenerativeModel` instance
// Make sure to specify the same location as the server prompt template and the cache
var _model = FirebaseAI.vertexAI(location: 'LOCATION').templateGenerativeModel()
var response = await _model.generateContent(
// Specify your template ID
'TEMPLATE_ID',
);
var text = response?.text;
print(text);
Unity
// ...
// Initialize the Vertex AI Gemini API backend service
// Make sure to specify the same location as the server prompt template and the cache
var firebaseAI = FirebaseAI.GetInstance(FirebaseAI.Backend.VertexAI(location: "LOCATION"));
// Create a `TemplateGenerativeModel` instance
var model = firebaseAI.GetTemplateGenerativeModel();
try
{
var response = await model.GenerateContentAsync(
// Specify your template ID
"TEMPLATE_ID"
);
Debug.Log($"Response Text: {response.Text}");
}
catch (Exception e) {
Debug.LogError($"An error occurred: {e.Message}");
}
จัดการแคชแบบเจาะจง
ส่วนนี้อธิบายการจัดการแคชเนื้อหาแบบเจาะจง ซึ่งรวมถึงวิธี แสดงแคชทั้งหมด, รับข้อมูลเมตาเกี่ยวกับแคช, อัปเดต TTL หรือเวลาหมดอายุของแคช, และ ลบแคช
คุณจัดการแคชแบบเจาะจงโดยใช้ REST API ของ Vertex AI Gemini API
เมื่อสร้างแคชเนื้อหาแบบเจาะจงแล้ว คุณจะเปลี่ยนแปลงสิ่งใดๆ เกี่ยวกับแคชไม่ได้ ยกเว้น TTL หรือเวลาหมดอายุ
แสดงแคชทั้งหมด
คุณสามารถแสดงแคชแบบเจาะจงทั้งหมดที่พร้อมใช้งานสำหรับโปรเจ็กต์ คำสั่งนี้จะแสดงเฉพาะแคชในสถานที่ที่ระบุ
PROJECT_ID="PROJECT_ID"
LOCATION="LOCATION"
curl \
-X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/cachedContents
รับข้อมูลเมตาเกี่ยวกับแคช
คุณไม่สามารถดึงหรือดูเนื้อหาที่แคชไว้จริง อย่างไรก็ตาม คุณ
สามารถดึง ข้อมูลเมตา เกี่ยวกับแคชแบบเจาะจง ซึ่งรวมถึง name, model,
display_name, usage_metadata, create_time, update_time และ
expire_time
คุณต้องระบุ CACHE_ID ซึ่งเป็นส่วนสุดท้ายใน name ของทรัพยากรแบบเต็มของแคช
PROJECT_ID="PROJECT_ID"
LOCATION="LOCATION"
CACHE_ID="CACHE_ID" # the final segment in the `name` of the cache
curl \
-X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/cachedContents/${CACHE_ID}
อัปเดต TTL หรือเวลาหมดอายุของแคช
เมื่อสร้างแคชแบบเจาะจง คุณสามารถตั้งค่า ttl หรือ expire_time ได้โดยไม่บังคับ
ttl: TTL (Time to Live) สำหรับแคช ซึ่งก็คือจำนวนวินาทีและนาโนวินาทีที่แคชจะมีอายุหลังจากสร้างหรือหลังจากอัปเดตttlแล้วก่อนที่จะหมดอายุ เมื่อคุณตั้งค่าttlระบบจะอัปเดตexpireTimeของแคชโดยอัตโนมัติexpire_time:Timestamp(เช่น2024-06-30T09:00:00.000000Z) ที่ระบุวันที่และเวลา แน่นอน ที่แคชจะหมดอายุ
หากไม่ได้ตั้งค่าใดค่าหนึ่ง ค่า TTL เริ่มต้นคือ 1 ชั่วโมง ไม่มีขอบเขตขั้นต่ำหรือสูงสุดสำหรับ TTL
สำหรับแคชแบบเจาะจงที่มีอยู่ คุณสามารถเพิ่มหรืออัปเดต ttl หรือ expire_time ได้
คุณต้องระบุ CACHE_ID ซึ่งเป็นส่วนสุดท้ายใน name ของทรัพยากรแบบเต็มของแคช
อัปเดต ttl
PROJECT_ID="PROJECT_ID"
LOCATION="LOCATION"
CACHE_ID="CACHE_ID" # the final segment in the `name` of the cache
TTL="CACHE_TIME_TO_LIVE"
curl \
-X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/cachedContents/${CACHE_ID} -d \
'{
"ttl": "'$TTL'"
}'
อัปเดต expire_time
PROJECT_ID="PROJECT_ID"
LOCATION="LOCATION"
CACHE_ID="CACHE_ID" # the final segment in the `name` of the cache
EXPIRE_TIME="ABSOLUTE_TIME_CACHE_EXPIRES"
curl \
-X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/cachedContents/${CACHE_ID} -d \
'{
"expire_time": "'$EXPIRE_TIME'"
}'
ลบแคช
เมื่อไม่ต้องการใช้แคชแบบเจาะจงอีกต่อไป คุณสามารถลบแคชได้
คุณต้องระบุ CACHE_ID ซึ่งเป็นส่วนสุดท้ายใน name ของทรัพยากรแบบเต็มของแคช
PROJECT_ID="PROJECT_ID"
LOCATION="LOCATION"
CACHE_ID="CACHE_ID" # the final segment in the `name` of the cache
curl \
-X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/cachedContents/${CACHE_ID}
ราคาสำหรับการแคชแบบเจาะจง
การแคชแบบเจาะจงเป็นฟีเจอร์แบบชำระเงินที่ออกแบบมาเพื่อลดค่าใช้จ่าย ราคาจะขึ้นอยู่กับปัจจัยต่อไปนี้
โทเค็นอินพุตสำหรับการสร้างแคช: สำหรับการแคชแบบไม่เจาะจงและแบบเจาะจง ระบบจะเรียกเก็บเงินคุณสำหรับโทเค็นอินพุตที่ใช้สร้างแคชในราคา โทเค็นอินพุตมาตรฐาน
พื้นที่เก็บข้อมูลของแคช: สำหรับการแคชแบบเจาะจง จะมีค่าใช้จ่ายในการจัดเก็บตามระยะเวลาที่จัดเก็บแคชด้วย แต่ไม่มีค่าใช้จ่ายในการจัดเก็บสำหรับการแคชแบบไม่เจาะจง ดูข้อมูลเพิ่มเติมได้ที่ ราคาสำหรับ Vertex AI Gemini API
การใช้เนื้อหาที่แคชไว้: การแคชแบบเจาะจงจะรับประกันส่วนลดเมื่อมีการอ้างอิงแคชแบบเจาะจง ซึ่งหมายความว่าคุณจะได้รับส่วนลดสำหรับโทเค็นอินพุตเมื่อโทเค็นเหล่านั้นอ้างอิงแคชที่มีอยู่ สำหรับ Gemini 2.5 และโมเดลที่ใหม่กว่า ส่วนลดนี้คือ 90%
ระบบจะระบุจำนวนโทเค็นในส่วนที่แคชไว้ของอินพุตในฟิลด์ cachedContentTokenCount ในข้อมูลเมตาของการตอบกลับ