Permintaan inferensi untuk model besar sering kali berisi input yang tumpang tindih, seperti dalam percakapan multi-putaran atau rangkaian pertanyaan tentang buku yang sama. Context Cache mengurangi komputasi berulang dengan menyimpan cache awalan umum dari permintaan tersebut, sehingga meningkatkan kecepatan respons dan menurunkan biaya penggunaan tanpa memengaruhi kualitas respons.
Untuk mendukung berbagai skenario, Context Cache menyediakan dua mode. Pilih mode berdasarkan kebutuhan Anda terkait kemudahan penggunaan, determinisme, dan biaya:
-
Explicit cache: Mode yang diaktifkan secara manual. Anda membuat cache untuk konten tertentu guna memastikan hit yang deterministik dalam periode validitas 5 menit. Token yang digunakan untuk membuat cache dikenai biaya sebesar 125% dari harga standar token input, sedangkan hit cache berikutnya hanya dikenai biaya 10% dari harga tersebut.
-
Implicit cache: Mode otomatis ini tidak memerlukan konfigurasi tambahan dan tidak dapat dinonaktifkan, ideal untuk skenario yang mengutamakan kemudahan. Sistem secara otomatis mengidentifikasi dan menyimpan cache awalan umum dari permintaan, tetapi probabilitas hit tidak dijamin. Bagian input yang dilayani dari cache dikenai biaya sebesar 20% dari harga standar token input.
|
Item |
Explicit cache |
Implicit cache |
|
Dampak terhadap kualitas respons |
Tidak |
Tidak ada |
|
Biaya token pembuatan cache |
125% dari harga standar token input |
100% dari harga standar token input |
|
Biaya token input yang di-cache |
10% dari harga standar token input |
20% dari harga standar token input |
|
Token minimum untuk caching |
1.024 |
256 |
|
Periode validitas cache |
5 menit (di-reset saat terjadi hit) |
Tidak pasti. Sistem secara berkala membersihkan data cache lama yang tidak digunakan. |
Explicit cache dan implicit cache saling eksklusif.
Penerapan Provisioned Throughput Unit (PTU) juga mendukung Context Cache. Saat terjadi hit cache, sistem menghitung penggunaan PTU dengan faktor diskon cache. Untuk informasi lebih lanjut, lihat Input panjang dan caching untuk PTU.
Untuk antarmuka OpenAI Chat Completions, DashScope, dan kompatibel Anthropic, gunakan Responses API dengan session cache untuk mengurangi latensi dan biaya inferensi. Lihat session cache untuk detailnya.
Explicit cache
Berbeda dengan implicit cache, explicit cache memerlukan pembuatan eksplisit dan menimbulkan overhead, tetapi memberikan rasio hit cache yang lebih tinggi serta latensi akses yang lebih rendah.
Cara kerja
Tambahkan penanda "cache_control": {"type": "ephemeral"} ke dalam array messages. Sistem kemudian mencari mundur dari setiap penanda cache_control dan memeriksa hingga 20 blok content sebelumnya untuk menemukan hit cache.
Satu permintaan mendukung hingga empat penanda cache.
-
Cache miss
Jika terjadi cache miss, sistem membuat blok cache baru dari konten antara awal array messages hingga penanda
cache_control. Blok cache baru memiliki periode validitas 5 menit.Sistem membuat cache setelah model menghasilkan respons. Tunggu hingga permintaan pembuatan selesai sebelum mencoba mengakses cache tersebut.
Satu blok cache berisi minimal 1.024 token.
-
Cache hit
Jika terjadi cache hit, sistem memilih awalan yang paling panjang dan mereset periode validitas blok cache yang sesuai menjadi 5 menit.
Contoh berikut menunjukkan cara kerjanya:
-
Kirim permintaan pertama: Kirim pesan sistem berisi teks A (lebih dari 1.024 token), dan tambahkan penanda cache:
[{"role": "system", "content": [{"type": "text", "text": A, "cache_control": {"type": "ephemeral"}}]}]Sistem membuat blok cache pertama, yang disebut blok cache A.
-
Kirim permintaan kedua: Kirim permintaan dengan struktur berikut:
[ {"role": "system", "content": A}, <Other messages> {"role": "user","content": [{"type": "text", "text": B, "cache_control": {"type": "ephemeral"}}]} ]-
Jika terdapat 20 atau kurang "Other messages," permintaan akan mengenai blok cache A, mereset periode validitasnya menjadi 5 menit. Sistem juga membuat blok cache baru berdasarkan A, pesan lainnya, dan B.
-
Jika terdapat lebih dari 20 "Other messages," permintaan tidak mengenai blok cache A. Sistem tetap membuat blok cache baru berdasarkan konteks lengkap (A, pesan lainnya, dan B).
-
Model yang didukung
Singapura
Model berikut tersedia dalam cakupan penerapan Internasional.
Qwen Max: qwen3.7-max, qwen3.7-max-2026-05-20, qwen3.7-max-2026-06-08, qwen3.6-max-preview, qwen3-max
Qwen Plus: qwen3.7-plus, qwen3.7-plus-2026-05-26, qwen3.6-plus, qwen3.5-plus, qwen3.5-plus-2026-04-20, qwen-plus
Qwen Flash: qwen3.6-flash, qwen3.5-flash, qwen-flash
Qwen Coder: qwen3-coder-plus, qwen3-coder-flash
Qwen VL: qwen3-vl-plus, qwen3-vl-flash
DeepSeek: deepseek-v3.2
China (Beijing)
Model berikut tersedia dalam cakupan penerapan Tiongkok daratan.
Qwen Max: qwen3.7-max, qwen3.7-max-2026-05-20, qwen3.7-max-2026-06-08, qwen3.6-max-preview, qwen3-max
Qwen Plus: qwen3.7-plus, qwen3.7-plus-2026-05-26, qwen3.6-plus, qwen3.5-plus, qwen3.5-plus-2026-04-20, qwen-plus
Qwen Flash: qwen3.6-flash, qwen3.5-flash, qwen-flash
Qwen Coder: qwen3-coder-plus, qwen3-coder-flash
Qwen VL: qwen3-vl-plus, qwen3-vl-flash
DeepSeek: deepseek-v3.2
Kimi: kimi-k2.7-code, kimi-k2.6, kimi-k2.5
GLM: glm-5.1
Jerman (Frankfurt)
Model yang didukung bervariasi tergantung pada cakupan penerapan layanan.
-
Cakupan global:
Qwen Max: qwen3.7-max, qwen3.7-max-2026-05-20, qwen3.7-max-2026-06-08, qwen3-max
Qwen Plus: qwen3.7-plus, qwen3.7-plus-2026-05-26, qwen3.6-plus, qwen3.5-plus, qwen-plus
Qwen Flash: qwen3.6-flash, qwen3.5-flash, qwen-flash
Qwen VL: qwen3-vl-plus
Qwen Coder: qwen3-coder-plus, qwen3-coder-flash
Kimi: kimi-k2.7-code, kimi-k2.5
-
Cakupan UE:
Qwen Max: qwen3-max
Qwen Plus: qwen-plus
Qwen Flash: qwen3.6-flash, qwen3.5-flash
Qwen VL: qwen3-vl-plus, qwen3-vl-flash
Hong Kong (China)
Model yang didukung bervariasi tergantung pada cakupan penerapan layanan.
-
Cakupan global:
Qwen Max: qwen3.7-max, qwen3.7-max-2026-05-20, qwen3.7-max-2026-06-08, qwen3-max
Qwen Plus: qwen3.7-plus, qwen3.7-plus-2026-05-26, qwen3.6-plus, qwen3.5-plus, qwen-plus
Qwen Flash: qwen3.6-flash, qwen3.5-flash, qwen-flash
-
Cakupan Hong Kong (China):
Qwen Max: qwen3-max
Qwen Plus: qwen-plus
Qwen Flash: qwen3.6-flash, qwen3.5-flash
Qwen VL: qwen3-vl-plus
Jepang (Tokyo)
Model yang didukung bervariasi tergantung pada cakupan penerapan layanan.
-
Cakupan Jepang:
Qwen Plus: qwen3.7-plus, qwen3.7-plus-2026-05-26
-
Cakupan global:
Qwen Max: qwen3.7-max, qwen3.7-max-2026-05-20, qwen3.7-max-2026-06-08, qwen3-max
Qwen Plus: qwen3.7-plus, qwen3.7-plus-2026-05-26, qwen3.6-plus, qwen3.5-plus, qwen-plus
Qwen Flash: qwen3.6-flash, qwen3.5-flash, qwen-flash
AS (Virginia)
Model berikut tersedia dalam cakupan penerapan AS.
-
Cakupan global:
kimi-k2.7-code
-
Cakupan AS:
Qwen Max: qwen3.7-max-us
Qwen Plus: qwen3.7-plus-us
Memulai dengan cepat
Contoh berikut menunjukkan mekanisme pembuatan blok cache dan hit cache untuk protokol kompatibel OpenAI, DashScope, dan kompatibel Anthropic.
Kompatibel OpenAI
from openai import OpenAI
import os
client = OpenAI(
# Jika variabel lingkungan tidak diatur, ganti baris berikut dengan: api_key="sk-xxx"
api_key=os.getenv("DASHSCOPE_API_KEY"),
# Jika Anda menggunakan model di China (Beijing), ganti base_url dengan: https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1
base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
)
# Konten repositori kode tiruan. Panjang prompt yang dapat di-cache minimal 1.024 token.
long_text_content = "<Your Code Here>" * 400
# Fungsi untuk membuat permintaan
def get_completion(user_input):
messages = [
{
"role": "system",
"content": [
{
"type": "text",
"text": long_text_content,
# Tempatkan penanda cache_control di sini. Ini membuat blok cache yang berisi semua konten dari awal array messages hingga titik ini.
"cache_control": {"type": "ephemeral"},
}
],
},
# Pertanyaan pengguna berbeda untuk setiap permintaan.
{
"role": "user",
"content": user_input,
},
]
completion = client.chat.completions.create(
# Pilih model yang mendukung explicit cache.
model="qwen3.7-max",
messages=messages,
)
return completion
# Permintaan pertama
first_completion = get_completion("What is the content of this code?")
print(f"Token pembuatan cache permintaan pertama: {first_completion.usage.prompt_tokens_details.cache_creation_input_tokens}")
print(f"Token yang di-cache permintaan pertama: {first_completion.usage.prompt_tokens_details.cached_tokens}")
print("=" * 20)
# Permintaan kedua. Konten kode sama, tetapi pertanyaannya berbeda.
second_completion = get_completion("How can this code be optimized?")
print(f"Token pembuatan cache permintaan kedua: {second_completion.usage.prompt_tokens_details.cache_creation_input_tokens}")
print(f"Token yang di-cache permintaan kedua: {second_completion.usage.prompt_tokens_details.cached_tokens}")
DashScope
import os
from dashscope import Generation
# URL berikut untuk Singapura. Ganti {WorkspaceId} dengan ID ruang kerja Anda. URL bervariasi berdasarkan wilayah.
dashscope.base_http_api_url = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1"
# Konten repositori kode tiruan. Panjang prompt yang dapat di-cache minimal 1.024 token.
long_text_content = "<Your Code Here>" * 400
# Fungsi untuk membuat permintaan
def get_completion(user_input):
messages = [
{
"role": "system",
"content": [
{
"type": "text",
"text": long_text_content,
# Tempatkan penanda cache_control di sini. Ini membuat blok cache yang berisi semua konten dari awal array messages hingga titik ini.
"cache_control": {"type": "ephemeral"},
}
],
},
# Pertanyaan pengguna berbeda untuk setiap permintaan.
{
"role": "user",
"content": user_input,
},
]
response = Generation.call(
# Jika variabel lingkungan tidak diatur, gunakan langsung Kunci API Model Studio Anda: api_key = "sk-xxx",
api_key=os.getenv("DASHSCOPE_API_KEY"),
model="qwen3.7-max",
messages=messages,
result_format="message"
)
return response
# Permintaan pertama
first_completion = get_completion("What is the content of this code?")
print(f"Token pembuatan cache permintaan pertama: {first_completion.usage.prompt_tokens_details['cache_creation_input_tokens']}")
print(f"Token yang di-cache permintaan pertama: {first_completion.usage.prompt_tokens_details['cached_tokens']}")
print("=" * 20)
# Permintaan kedua. Konten kode sama, tetapi pertanyaannya berbeda.
second_completion = get_completion("How can this code be optimized?")
print(f"Token pembuatan cache permintaan kedua: {second_completion.usage.prompt_tokens_details['cache_creation_input_tokens']}")
print(f"Token yang di-cache permintaan kedua: {second_completion.usage.prompt_tokens_details['cached_tokens']}")// Versi minimum Java SDK: 2.21.6
import com.alibaba.dashscope.aigc.generation.Generation;
import com.alibaba.dashscope.aigc.generation.GenerationParam;
import com.alibaba.dashscope.aigc.generation.GenerationResult;
import com.alibaba.dashscope.common.Message;
import com.alibaba.dashscope.common.MessageContentText;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import java.util.Arrays;
import java.util.Collections;
public class Main {
private static final String MODEL = "qwen3-coder-plus";
// Konten repositori kode tiruan (diulang 400 kali untuk memastikan melebihi 1.024 token).
private static final String LONG_TEXT_CONTENT = generateLongText(400);
private static String generateLongText(int repeatCount) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < repeatCount; i++) {
sb.append("<Your Code Here>");
}
return sb.toString();
}
private static GenerationResult getCompletion(String userQuestion)
throws NoApiKeyException, ApiException, InputRequiredException {
// URL berikut untuk Singapura. Ganti {WorkspaceId} dengan ID ruang kerja Anda. URL bervariasi berdasarkan wilayah.
Generation gen = new Generation("http", "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1");
// Bangun pesan sistem dengan kontrol cache.
MessageContentText systemContent = MessageContentText.builder()
.type("text")
.text(LONG_TEXT_CONTENT)
.cacheControl(MessageContentText.CacheControl.builder()
.type("ephemeral") // Atur jenis cache.
.build())
.build();
Message systemMsg = Message.builder()
.role(Role.SYSTEM.getValue())
.contents(Collections.singletonList(systemContent))
.build();
Message userMsg = Message.builder()
.role(Role.USER.getValue())
.content(userQuestion)
.build();
// Bangun parameter permintaan.
GenerationParam param = GenerationParam.builder()
.model(MODEL)
.messages(Arrays.asList(systemMsg, userMsg))
.resultFormat(GenerationParam.ResultFormat.MESSAGE)
.build();
return gen.call(param);
}
private static void printCacheInfo(GenerationResult result, String requestLabel) {
System.out.printf("%s token pembuatan cache: %d%n", requestLabel, result.getUsage().getPromptTokensDetails().getCacheCreationInputTokens());
System.out.printf("%s token yang di-cache: %d%n", requestLabel, result.getUsage().getPromptTokensDetails().getCachedTokens());
}
public static void main(String[] args) {
try {
// Permintaan pertama
GenerationResult firstResult = getCompletion("What is the content of this code?");
printCacheInfo(firstResult, "Permintaan pertama");
System.out.println(new String(new char[20]).replace('\0', '=')); // Permintaan kedua
GenerationResult secondResult = getCompletion("How can this code be optimized?");
printCacheInfo(secondResult, "Permintaan kedua");
} catch (NoApiKeyException | ApiException | InputRequiredException e) {
System.err.println("Panggilan API gagal: " + e.getMessage());
e.printStackTrace();
}
}
}Kompatibel Anthropic
import anthropic
import os
api_key = os.getenv("DASHSCOPE_API_KEY")
client = anthropic.Anthropic(
# Jika variabel lingkungan tidak diatur, ganti baris berikut dengan: api_key="sk-xxx"
api_key=api_key,
# Jika Anda menggunakan model di China (Beijing), ganti base_url dengan: https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/apps/anthropic
base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/apps/anthropic",
default_headers={"Authorization": f"Bearer {api_key}"},
)
# Konten repositori kode tiruan. Panjang prompt yang dapat di-cache minimal 1.024 token.
long_text_content = "<Your Code Here>" * 400
# Fungsi untuk membuat permintaan
def get_completion(user_input):
response = client.messages.create(
# Pilih model yang mendukung explicit cache.
model="qwen3.7-max",
max_tokens=1024,
system=[
{
"type": "text",
"text": long_text_content,
# Tempatkan penanda cache_control di sini untuk membuat blok cache dari konten teks sistem. Penanda ini juga dapat ditempatkan di `messages`.
"cache_control": {"type": "ephemeral"},
}
],
messages=[
# Pertanyaan pengguna berbeda untuk setiap permintaan.
{"role": "user", "content": user_input},
],
)
return response
# Permintaan pertama
first_completion = get_completion("What is the content of this code?")
print(f"Token pembuatan cache permintaan pertama: {first_completion.usage.cache_creation_input_tokens}")
print(f"Token yang di-cache permintaan pertama: {first_completion.usage.cache_read_input_tokens}")
print("=" * 20)
# Permintaan kedua. Konten kode sama, tetapi pertanyaannya berbeda.
second_completion = get_completion("How can this code be optimized?")
print(f"Token pembuatan cache permintaan kedua: {second_completion.usage.cache_creation_input_tokens}")
print(f"Token yang di-cache permintaan kedua: {second_completion.usage.cache_read_input_tokens}")
Menambahkan penanda cache_control mengaktifkan explicit cache untuk konten repositori kode tiruan. Untuk permintaan berikutnya yang menanyakan konten ini, sistem menggunakan kembali blok cache, sehingga menghilangkan komputasi ulang. Hal ini membuat permintaan yang mengenai cache lebih cepat dan lebih murah dibandingkan permintaan awal pembuatan cache.
Token pembuatan cache permintaan pertama: 1605
Token yang di-cache permintaan pertama: 0
====================
Token pembuatan cache permintaan kedua: 0
Token yang di-cache permintaan kedua: 1605
Kontrol detail halus dengan beberapa penanda cache
Dalam skenario kompleks, prompt sering terdiri dari beberapa bagian dengan frekuensi penggunaan ulang yang berbeda. Anda dapat menggunakan beberapa penanda cache untuk mencapai kontrol detail halus.
Misalnya, prompt untuk agen layanan pelanggan cerdas biasanya mencakup:
-
Persona sistem: Sangat stabil dan jarang berubah.
-
Pengetahuan eksternal: Diperoleh dari basis pengetahuan atau melalui kueri tool dan mungkin tidak berubah selama satu percakapan.
-
Riwayat percakapan: Berkembang secara dinamis.
-
Pertanyaan saat ini: Berbeda untuk setiap permintaan.
Jika Anda menyimpan cache seluruh prompt sebagai satu unit, perubahan kecil apa pun, seperti pembaruan pada pengetahuan eksternal, dapat menyebabkan cache miss.
Anda dapat menambahkan hingga empat penanda cache dalam satu permintaan untuk membuat blok cache terpisah untuk bagian-bagian berbeda dari prompt. Hal ini meningkatkan rasio hit cache dan memungkinkan kontrol detail halus.
Penagihan
Explicit cache hanya memengaruhi cara token input ditagih. Aturannya adalah sebagai berikut:
-
Pembuatan cache: Konten yang digunakan untuk membuat cache baru ditagih sebesar 125% dari harga standar token input. Jika konten untuk cache baru mencakup cache yang sudah ada sebagai awalan, hanya bagian tambahannya yang ditagih untuk pembuatan cache (yaitu jumlah token cache baru dikurangi jumlah token cache yang sudah ada).
Misalnya, jika Anda memiliki cache 1.200 token yang sudah ada (Cache A) dan Anda menggunakan permintaan baru untuk menyimpan cache 1.500 token konten (Konten AB), 1.200 token pertama ditagih sebagai hit cache sebesar 10% dari harga standar. 300 token baru ditagih untuk pembuatan cache sebesar 125% dari harga standar.
Parameter
cache_creation_input_tokensmenentukan jumlah token yang digunakan untuk pembuatan cache. -
Cache hit: Dikenakan biaya sebesar 10% dari harga token input standar.
Parameter
cached_tokensmenentukan jumlah token yang di-cache. -
Token lainnya: Token yang bukan hit cache maupun digunakan untuk pembuatan cache ditagih dengan harga standar token input.
Konten yang dapat di-cache
Hanya jenis pesan berikut dalam array messages yang mendukung penambahan penanda cache:
-
Pesan sistem
CatatanUntuk pemanggilan fungsi, jika permintaan mencakup parameter
tools, definisi tool dimasukkan dalam pesan sistem untuk perhitungan cache. Definisi tool tidak dapat di-cache secara independen. Penanda cache yang ditambahkan ke definisi tool diabaikan, karena hanya dapat ditambahkan ke konten pesan. -
Pesan pengguna
Saat membuat cache dengan model
qwen3-vl-plus, Anda dapat menempatkan penandacache_controlsetelah konten multimodal atau teks. Posisinya tidak memengaruhi cara seluruh pesan pengguna di-cache. -
Pesan asisten
-
Pesan tool (hasil eksekusi tool)
Misalnya, untuk pesan sistem, Anda harus mengubah bidang content menjadi array dan menambahkan bidang cache_control:
{
"role": "system",
"content": [
{
"type": "text",
"text": "<your specified prompt>",
"cache_control": {
"type": "ephemeral"
}
}
]
}
Struktur ini juga berlaku untuk jenis pesan lain dalam array messages.
Batasan cache
-
Panjang prompt minimum yang dapat di-cache adalah 1.024 token.
-
Cache menggunakan strategi pencocokan awalan mundur. Cache miss terjadi jika konten yang cocok dan pesan dengan penanda
cache_controldipisahkan oleh lebih dari 20 blok konten. -
typehanya dapat diatur keephemeral, yang membuat cache dengan periode validitas 5 menit. -
Satu permintaan mendukung hingga empat penanda cache.
Jika lebih dari empat penanda cache disediakan, hanya empat penanda terakhir yang berlaku.
Optimalisasi cache untuk Pemanggilan Fungsi
Definisi tool diserialisasi menjadi string JSON untuk caching. Untuk mencegah invalidasi cache, definisi ini harus identik di semua permintaan. Perhatikan hal berikut:
-
Urutan tool konsisten: Urutan tool dalam array
toolsharus konsisten di semua permintaan. -
Urutan bidang konsisten: Urutan bidang JSON dalam tool yang sama harus konsisten di semua permintaan.
-
Struktur bidang konsisten: Jangan menghilangkan atau menambahkan bidang, meskipun kosong atau opsional.
Contoh penggunaan
Implicit cache
Model yang didukung
China (Beijing)
Model berikut berada dalam cakupan penerapan Tiongkok daratan.
-
Model generasi teks
-
Qwen Max: qwen3.7-max, qwen3.7-max-2026-05-20, qwen3.7-max-2026-06-08, qwen3-max, qwen3-max-preview, qwen-max
-
Qwen Plus: qwen3.7-plus, qwen3.7-plus-2026-05-26, qwen-plus
-
Qwen Flash: qwen-flash
-
Qwen Turbo: qwen-turbo
-
Qwen Coder: qwen3-coder-plus, qwen3-coder-flash
-
DeepSeek: deepseek-v4-pro, deepseek-v4-flash, deepseek-v3.2, deepseek-v3.1, deepseek-v3, deepseek-r1
-
Kimi: kimi-k2.7-code, kimi-k2.6, kimi-k2.5, kimi-k2-thinking, Moonshot-Kimi-K2-Instruct
-
GLM: glm-5.2, glm-5.1, glm-5, glm-4.7, glm-4.6
-
MiniMax: MiniMax-M2.5
-
-
Model pemahaman visual
-
Qwen VL: qwen3-vl-plus, qwen3-vl-flash, qwen-vl-max, qwen-vl-plus
-
Singapura
Model berikut berada dalam cakupan penerapan Internasional.
-
Model generasi teks
-
Qwen Max: qwen3.7-max, qwen3.7-max-2026-05-20, qwen3.7-max-2026-06-08, qwen3-max, qwen3-max-preview, qwen-max
-
Qwen Plus: qwen3.7-plus, qwen3.7-plus-2026-05-26, qwen-plus
-
Qwen Flash: qwen-flash
-
Qwen Turbo: qwen-turbo
-
Qwen Coder: qwen3-coder-plus, qwen3-coder-flash
-
DeepSeek: deepseek-v4-pro, deepseek-v4-flash, deepseek-v3.2
-
GLM (diterapkan di Alibaba Cloud Model Studio): glm-5.1
-
-
Model pemahaman visual
-
Qwen VL: qwen3-vl-plus, qwen3-vl-flash, qwen-vl-max, qwen-vl-plus
-
AS (Virginia)
Model yang didukung bervariasi berdasarkan cakupan penerapan layanan.
-
Cakupan penerapan layanan global:
-
Model generasi teks
-
Qwen Max: qwen3.7-max, qwen3.7-max-2026-05-20, qwen3.7-max-2026-06-08, qwen3-max
-
Qwen Plus: qwen3.7-plus, qwen3.7-plus-2026-05-26, qwen-plus
-
Qwen Flash: qwen-flash
-
Qwen Coder: qwen3-coder-plus, qwen3-coder-flash
-
DeepSeek: deepseek-v4-pro, deepseek-v4-flash
-
Kimi (diterapkan di Alibaba Cloud Model Studio): kimi-k2.7-code, kimi-k2.5
-
GLM (diterapkan di Alibaba Cloud Model Studio): glm-5.2
-
-
Model pemahaman visual
-
Qwen VL: qwen3-vl-plus, qwen3-vl-flash
-
-
-
Cakupan penerapan layanan AS:
-
Model generasi teks
-
Qwen Max: qwen3.7-max-us
-
Qwen Plus: qwen-plus-us, qwen3.7-plus-us
-
Qwen Flash: qwen-flash-us
-
-
Model pemahaman visual
-
Qwen VL: qwen3-vl-flash-us
-
-
Jerman (Frankfurt)
Model yang didukung bervariasi berdasarkan cakupan penerapan layanan.
-
Cakupan penerapan layanan global:
-
Model generasi teks
-
Qwen Max: qwen3.7-max, qwen3.7-max-2026-05-20, qwen3.7-max-2026-06-08, qwen3-max
-
Qwen Plus: qwen3.7-plus, qwen3.7-plus-2026-05-26, qwen-plus
-
Qwen Flash: qwen-flash
-
Qwen Coder: qwen3-coder-plus, qwen3-coder-flash
-
DeepSeek: deepseek-v4-pro, deepseek-v4-flash
-
Kimi (diterapkan di Alibaba Cloud Model Studio): kimi-k2.7-code, kimi-k2.5
-
GLM (diterapkan di Alibaba Cloud Model Studio): glm-5.2
-
-
Model pemahaman visual
-
Qwen VL: qwen3-vl-plus, qwen3-vl-flash
-
-
-
Cakupan penerapan layanan UE:
-
Model generasi teks
-
Qwen Max: qwen3-max
-
Qwen Plus: qwen-plus
Model pemahaman visual
-
Qwen VL: qwen3-vl-plus, qwen3-vl-flash
-
-
China (Hong Kong)
Model yang didukung bervariasi berdasarkan cakupan penerapan layanan.
-
Cakupan penerapan layanan global:
-
Qwen Max: qwen3.7-max, qwen3.7-max-2026-05-20, qwen3.7-max-2026-06-08
-
Qwen Plus: qwen3.7-plus, qwen3.7-plus-2026-05-26
-
GLM (diterapkan di Alibaba Cloud Model Studio): glm-5.2
-
-
Cakupan penerapan layanan China (Hong Kong):
-
Model generasi teks
-
Qwen Max: qwen3-max
-
Qwen Plus: qwen-plus
-
-
Model pemahaman visual
-
Qwen VL: qwen3-vl-plus
-
-
Jepang (Tokyo)
Model yang didukung bervariasi berdasarkan cakupan penerapan layanan.
-
Cakupan penerapan layanan Jepang:
-
Model generasi teks
-
Qwen Plus: qwen3.7-plus, qwen3.7-plus-2026-05-26
-
DeepSeek (diterapkan di Alibaba Cloud Model Studio): deepseek-v4-pro, deepseek-v4-flash
-
-
-
Cakupan penerapan layanan global:
-
Model generasi teks
-
Qwen Max: qwen3.7-max, qwen3.7-max-2026-05-20
-
Qwen Plus: qwen3.7-plus, qwen3.7-plus-2026-05-26
-
DeepSeek (diterapkan di Alibaba Cloud Model Studio): deepseek-v4-pro, deepseek-v4-flash
-
GLM (diterapkan di Alibaba Cloud Model Studio): glm-5.1
-
Kimi (diterapkan di Alibaba Cloud Model Studio): kimi-k2.5
-
-
Cara kerja
Fitur implicit cache diaktifkan secara otomatis saat permintaan dikirim ke model yang didukung. Sistem bekerja sebagai berikut:
-
Pencarian: Setelah menerima permintaan, sistem menggunakan pencocokan awalan untuk memeriksa cache apakah terdapat awalan umum dari konten dalam array
messagespermintaan. -
Keputusan:
-
Jika terjadi hit cache, sistem menggunakan hasil cache untuk sisa inferensi.
-
Jika terjadi cache miss, sistem memproses permintaan secara normal dan menyimpan awalan prompt dalam cache untuk permintaan berikutnya.
-
Sistem secara berkala membersihkan data cache yang telah lama tidak digunakan. Probabilitas hit Context Cache tidak 100%. Cache miss dapat terjadi meskipun konteks permintaan identik. Sistem menentukan probabilitas hit spesifik.
Jumlah token minimum yang diperlukan untuk memicu implicit cache adalah sekitar 1.000 untuk seri qwen3.7-max dan 256 untuk model lainnya.
Meningkatkan probabilitas hit cache
Hit implicit cache terjadi ketika awalan dari permintaan berbeda memiliki konten duplikat. Untuk meningkatkan probabilitas hit, tempatkan konten duplikat di awal prompt dan konten unik di akhir.
-
Model teks: Misalnya, asumsikan sistem telah menyimpan cache "ABCD". Permintaan untuk "ABE" mungkin mengenai bagian "AB", tetapi permintaan untuk "BCD" tidak akan mengenai cache.
-
Model pemahaman visual:
-
Untuk mengajukan beberapa pertanyaan tentang gambar atau video yang sama, tempatkan gambar atau video sebelum teks.
-
Untuk mengajukan pertanyaan yang sama tentang gambar atau video berbeda, tempatkan teks sebelum gambar atau video.
-
Penagihan
Tidak ada biaya tambahan untuk mengaktifkan mode cache implisit.
Saat permintaan mengenai cache, token input dari hit cache ditagih sebagai cached_token. Tingkat diskon untuk token ini bervariasi berdasarkan model. Token input yang tidak mengenai cache ditagih sebagai input_token standar. Token output ditagih dengan harga aslinya.
-
Untuk model selain deepseek-v4-pro: Harga satuan
cached_tokenadalah 20% dari harga satuaninput_token. -
deepseek-v4-pro: Harga satuan
cached_tokenbukan 20% dari harga satuaninput_token. Untuk harga spesifik, lihat konsol Model Studio.
Contoh: Permintaan berisi 10.000 token input, dan 5.000 di antaranya menghasilkan hit cache. Biaya dihitung sebagai berikut:
-
Token tanpa hit cache (5.000): Ditagih 100% dari harga satuan.
-
Token hit cache (5.000): Ditagih 20% dari harga satuan.
Total biaya input adalah 60% dari biaya dalam mode tanpa cache: (50% × 100%) + (50% × 20%) = 60%.

Anda dapat memperoleh jumlah token hit cache dari atribut cached_tokens dalam respons.
Panggilan yang dilakukan menggunakan metode Kompatibel OpenAI - Batch (input file) tidak memenuhi syarat untuk diskon cache.
Contoh hit cache
Model generasi teks
Kompatibel OpenAI
Saat Anda memanggil model menggunakan metode kompatibel OpenAI dan memicu implicit cache, respons menunjukkan jumlah token yang mengenai cache dalam bidang usage.prompt_tokens_details.cached_tokens. Nilai ini merupakan bagian dari usage.prompt_tokens.
{
"choices": [
{
"message": {
"role": "assistant",
"content": "Saya adalah model bahasa skala besar yang dikembangkan oleh Alibaba Cloud. Nama saya Qwen."
},
"finish_reason": "stop",
"index": 0,
"logprobs": null
}
],
"object": "chat.completion",
"usage": {
"prompt_tokens": 3019,
"completion_tokens": 104,
"total_tokens": 3123,
"prompt_tokens_details": {
"cached_tokens": 2048
}
},
"created": 1735120033,
"system_fingerprint": null,
"model": "qwen-plus",
"id": "chatcmpl-6ada9ed2-7f33-9de2-8bb0-78bd4035025a"
}
DashScope
Saat Anda menggunakan SDK Python DashScope atau permintaan HTTP untuk memanggil model dan memicu implicit cache, respons berisi jumlah token yang mengenai cache dalam bidang usage.prompt_tokens_details.cached_tokens. Nilai ini merupakan bagian dari usage.input_tokens.
{
"status_code": 200,
"request_id": "f3acaa33-e248-97bb-96d5-cbeed34699e1",
"code": "",
"message": "",
"output": {
"text": null,
"finish_reason": null,
"choices": [
{
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": "Saya adalah model bahasa besar dari Alibaba Cloud. Nama saya Qwen. Saya dapat menghasilkan berbagai jenis teks, seperti artikel, cerita, dan puisi, serta dapat menyesuaikannya berdasarkan skenario dan kebutuhan yang berbeda. Selain itu, saya dapat menjawab berbagai pertanyaan dan memberikan bantuan serta solusi. Jika Anda memiliki pertanyaan atau membutuhkan bantuan, jangan ragu untuk bertanya, dan saya akan melakukan yang terbaik untuk memberikan dukungan. Harap dicatat bahwa mengulangi konten yang sama mungkin tidak menghasilkan respons yang lebih detail. Kami menyarankan untuk memberikan informasi yang lebih spesifik atau mengubah pertanyaan Anda agar saya dapat lebih memahami kebutuhan Anda."
}
}
]
},
"usage": {
"input_tokens": 3019,
"output_tokens": 101,
"prompt_tokens_details": {
"cached_tokens": 2048
},
"total_tokens": 3120
}
}
Kompatibel Anthropic
Saat Anda memanggil model dengan cara kompatibel Anthropic dan implicit cache dipicu, Anda dapat menemukan jumlah token yang mengenai cache dalam usage.cache_read_input_tokens (nilai ini tidak termasuk dalam usage.input_tokens tetapi dilaporkan secara terpisah).
{
"id": "msg_01XFDUDYJgAACzvnptvVoYEL",
"type": "message",
"role": "assistant",
"content": [
{
"type": "text",
"text": "Konten ini adalah teks placeholder berulang."
}
],
"model": "qwen3.7-max",
"stop_reason": "end_turn",
"usage": {
"input_tokens": 82,
"cache_creation_input_tokens": 0,
"cache_read_input_tokens": 1536,
"output_tokens": 14
}
}
Model pemahaman visual
Kompatibel OpenAI
Saat Anda memanggil model dengan cara kompatibel OpenAI dan implicit cache dipicu, respons menunjukkan jumlah token yang mengenai cache dalam bidang usage.prompt_tokens_details.cached_tokens. Jumlah token ini merupakan bagian dari usage.prompt_tokens.
{
"id": "chatcmpl-3f3bf7d0-b168-9637-a245-dd0f946c700f",
"choices": [
{
"finish_reason": "stop",
"index": 0,
"logprobs": null,
"message": {
"content": "Gambar ini menunjukkan adegan mengharukan seorang wanita dan seekor anjing berinteraksi di pantai. Wanita tersebut, mengenakan kemeja kotak-kotak, duduk di pasir dan tersenyum saat berinteraksi dengan anjing tersebut. Anjing tersebut adalah jenis besar berwarna terang yang mengenakan kalung berwarna-warni, dengan kaki depannya terangkat seolah ingin berjabat tangan atau memberi high-five kepada wanita tersebut. Latar belakangnya adalah lautan dan langit yang luas, dengan sinar matahari bersinar dari sisi kanan bingkai, menambah suasana hangat dan tenang pada seluruh adegan.",
"refusal": null,
"role": "assistant",
"audio": null,
"function_call": null,
"tool_calls": null
}
}
],
"created": 1744956927,
"model": "qwen-vl-max",
"object": "chat.completion",
"service_tier": null,
"system_fingerprint": null,
"usage": {
"completion_tokens": 93,
"prompt_tokens": 1316,
"total_tokens": 1409,
"completion_tokens_details": null,
"prompt_tokens_details": {
"audio_tokens": null,
"cached_tokens": 1152
}
}
}
DashScope
Saat Anda memanggil model menggunakan SDK Python DashScope atau permintaan HTTP dan terjadi hit implicit cache, jumlah token yang di-cache dilaporkan terpisah dari total token input (usage.input_tokens). Bidang spesifik tempat Anda dapat menemukan angka ini bervariasi berdasarkan wilayah dan model:
-
China (Beijing):
-
qwen-vl-maxdanqwen-vl-plus: Periksa diusage.prompt_tokens_details.cached_tokens -
qwen3-vl-plus,qwen3-vl-flash: Lihat diusage.prompt_tokens_details.cached_tokens
-
-
Wilayah Singapura: Untuk semua model, lihat di
usage.cached_tokens
Model saat ini menggunakanusage.cached_tokensdan akan ditingkatkan keusage.prompt_tokens_details.cached_tokens.
{
"status_code": 200,
"request_id": "06a8f3bb-d871-9db4-857d-2c6eeac819bc",
"code": "",
"message": "",
"output": {
"text": null,
"finish_reason": null,
"choices": [
{
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": [
{
"text": "Gambar ini menunjukkan adegan mengharukan seorang wanita dan seekor anjing berinteraksi di pantai. Wanita tersebut, mengenakan kemeja kotak-kotak, duduk di pasir dan tersenyum saat berinteraksi dengan anjing tersebut. Anjing tersebut adalah jenis besar yang mengenakan kalung berwarna-warni, dengan kaki depannya terangkat seolah ingin berjabat tangan atau memberi high-five kepada wanita tersebut. Latar belakangnya adalah lautan dan langit yang luas, dengan sinar matahari bersinar dari sisi kanan bingkai, menambah suasana hangat dan tenang pada seluruh adegan."
}
]
}
}
]
},
"usage": {
"input_tokens": 1292,
"output_tokens": 87,
"input_tokens_details": {
"text_tokens": 43,
"image_tokens": 1249
},
"total_tokens": 1379,
"output_tokens_details": {
"text_tokens": 87
},
"image_tokens": 1249,
"cached_tokens": 1152
}
}
Kompatibel Anthropic
Saat Anda memanggil model pemahaman visual dengan cara kompatibel Anthropic dan implicit cache dipicu, jumlah token dari hit cache tercermin dalam bidang usage.cache_read_input_tokens (sama seperti untuk model generasi teks).
{
"id": "msg_01XFDUDYJgAACzvnptvVoYEL",
"type": "message",
"role": "assistant",
"content": [
{
"type": "text",
"text": "Gambar ini menunjukkan adegan mengharukan seorang wanita dan seekor anjing berinteraksi di pantai."
}
],
"model": "qwen-vl-max",
"stop_reason": "end_turn",
"usage": {
"input_tokens": 369,
"cache_creation_input_tokens": 0,
"cache_read_input_tokens": 896,
"output_tokens": 28
}
}
Kasus penggunaan
Jika permintaan Anda memiliki awalan umum, Context Cache dapat secara signifikan meningkatkan kecepatan inferensi, menurunkan biaya inferensi, dan mengurangi latensi paket pertama. Fitur ini sangat berguna dalam kasus penggunaan berikut:
-
Menjawab pertanyaan teks panjang
Gunakan pola ini saat Anda mengirim beberapa permintaan tentang teks panjang yang sama, seperti novel, buku teks, atau dokumen hukum.
Pesan permintaan pertama
messages = [{"role": "system","content": "Anda adalah guru bahasa yang dapat membantu siswa dengan pemahaman membaca."}, {"role": "user","content": "Array pesan permintaan berikutnya
messages = [{"role": "system","content": "Anda adalah guru seni bahasa. Anda dapat membantu siswa dengan pemahaman membaca."}, {"role": "user","content": "<Konten artikel> Tolong analisis paragraf ketiga dari teks ini."}]Meskipun pertanyaannya berbeda, semuanya didasarkan pada artikel yang sama. Prompt sistem dan konten artikel yang sama membentuk banyak informasi awalan berulang, yang memiliki probabilitas tinggi untuk hit cache.
-
Penyelesaian kode otomatis
Dalam skenario penyelesaian kode otomatis, model menggunakan kode di sekitarnya sebagai konteks untuk menghasilkan kode berikutnya. Saat Anda menulis, bagian awal file kode tetap sama. Context Cache dapat menyimpan awalan ini untuk mempercepat penyelesaian kode.
-
Percakapan multi-putaran
Untuk percakapan multi-putaran, Anda menambahkan setiap putaran ke array messages. Hal ini memastikan bahwa setiap permintaan baru memiliki awalan umum dengan putaran sebelumnya, meningkatkan kemungkinan hit cache.
Pesan putaran pertama
messages=[{"role": "system","content": "Anda adalah asisten yang membantu."}, {"role": "user","content": "Siapa kamu?"}]Pesan putaran kedua
messages=[{"role": "system","content": "Anda adalah asisten yang membantu."}, {"role": "user","content": "Siapa kamu?"}, {"role": "assistant","content": "Saya Qwen, dikembangkan oleh Alibaba Cloud."}, {"role": "user","content": "Apa yang bisa kamu lakukan?"}]Saat percakapan berlangsung, manfaat caching untuk kecepatan inferensi dan biaya menjadi semakin signifikan.
-
Bermain peran atau pembelajaran few-shot
Dalam skenario peran bermain atau pembelajaran few-shot, Anda sering menyertakan instruksi panjang dalam prompt untuk memandu format output model. Hal ini menciptakan awalan besar yang dibagikan di beberapa permintaan.
Misalnya, saat menginstruksikan model untuk bertindak sebagai ahli pemasaran, prompt sistem berisi teks panjang. Berikut dua contoh permintaan:
system_prompt = """Anda adalah ahli pemasaran berpengalaman. Berikan saran pemasaran terperinci untuk produk berbeda dalam format berikut: 1. Target audiens: xxx 2. Poin penjualan utama: xxx 3. Saluran pemasaran: xxx ... 12. Strategi pengembangan jangka panjang: xxx Pastikan saran Anda spesifik, dapat ditindaklanjuti, dan sangat relevan dengan fitur produk.""" # Pesan pengguna untuk permintaan pertama menanyakan tentang jam tangan pintar. messages_1=[ {"role": "system", "content": system_prompt}, {"role": "user", "content": "Berikan saran pemasaran untuk jam tangan pintar yang baru diluncurkan."} ] # Pesan pengguna untuk permintaan kedua menanyakan tentang laptop. Karena system_prompt sama, kemungkinan besar terjadi hit cache. messages_2=[ {"role": "system", "content": system_prompt}, {"role": "user", "content": "Berikan saran pemasaran untuk laptop yang baru diluncurkan."} ]Dengan Context Cache, sistem dapat merespons lebih cepat karena prompt sistem yang panjang di-cache, bahkan saat Anda sering mengubah produk dalam permintaan (misalnya, dari jam tangan pintar ke laptop).
-
Pemahaman video
Dalam skenario pemahaman video, jika Anda mengajukan beberapa pertanyaan tentang video yang sama, menempatkan
videosebelumteksmeningkatkan probabilitas hit cache. Jika Anda mengajukan pertanyaan yang sama tentang video berbeda, menempatkantekssebelumvideomeningkatkan probabilitas hit cache. Contoh berikut menunjukkan dua permintaan untuk video yang sama:# Pesan pengguna untuk permintaan pertama menanyakan tentang konten video ini. messages1 = [ {"role":"system","content":[{"text": "Anda adalah asisten yang membantu."}]}, {"role": "user", "content": [ {"video": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250328/eepdcq/phase_change_480p.mov"}, {"text": "Apa isi video ini?"} ] } ] # Untuk permintaan kedua tentang video yang sama, menempatkan video sebelum teks meningkatkan kemungkinan hit cache. messages2 = [ {"role":"system","content":[{"text": "Anda adalah asisten yang membantu."}]}, {"role": "user", "content": [ {"video": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250328/eepdcq/phase_change_480p.mov"}, {"text": "Jelaskan rangkaian peristiwa dalam video. Keluarkan waktu mulai (start_time), waktu akhir (end_time), dan event (event) dalam format JSON. Jangan sertakan blok kode ```json```."} ] } ]
FAQ
T: Berapa lama context cache disimpan (periode validitas)?
J: Periode validitas context cache tergantung pada jenis cache:
-
Explicit cache: Periode validitas adalah 5 menit, dan setiap hit cache meresetnya menjadi 5 menit lagi. Jika blok cache tidak terkena dalam 5 menit, sistem secara otomatis membersihkannya.
-
Implicit cache: Dikelola secara otomatis oleh sistem tanpa periode validitas tetap. Sistem secara berkala membersihkan data cache yang telah lama tidak digunakan.
Periode validitas ini mengacu pada siklus hidup context cache selama panggilan API. Ini bukan fitur yang sama dengan riwayat percakapan yang ditampilkan di halaman Pengalaman Model atau Debugging Model di konsol.
T: Bagaimana cara menonaktifkan cache implisit?
J: Anda tidak dapat menonaktifkannya. Implicit cache diaktifkan untuk semua permintaan model yang berlaku karena tidak memengaruhi kualitas respons. Saat terjadi hit cache, biaya berkurang dan kecepatan respons meningkat.
T: Mengapa terjadi cache miss pada cache eksplisit saya?
J: Cache miss dapat terjadi karena alasan berikut:
-
Sistem membersihkan blok cache jika tidak terkena dalam periode validitas 5 menitnya.
-
Jika interval antara
contentterakhir dan blok cache yang sudah ada lebih dari 20 blokcontent, hit cache tidak akan terjadi. Kami menyarankan Anda membuat blok cache baru.
T: Apakah hit cache mereset validitasnya?
J: Ya. Setiap hit mereset periode validitas blok cache menjadi 5 menit.
T: Apakah cache eksplisit dibagikan antar akun?
J: Tidak. Data implicit cache dan explicit cache diisolasi pada tingkat akun.
T: Apakah explicit cache dibagikan antar model?
J: Tidak. Data cache diisolasi antar model.
T: Mengapa input_tokens dalam usage tidak sama dengan jumlah cache_creation_input_tokens dan cached_tokens?
J: Untuk memastikan kualitas output model, layanan backend menambahkan sejumlah kecil token (biasanya 10 atau kurang) ke prompt Anda. Token ini ditempatkan setelah penanda cache_control, sehingga tidak dihitung untuk pembuatan atau pembacaan cache, tetapi termasuk dalam total input_tokens.