Cache prompt bersifat per-model. Ketika Claude Fable 5 menolak sebuah permintaan dan Anda mencoba ulang pada model lain, prefiks percakapan yang sudah di-cache untuk Claude Fable 5 harus ditulis ke dalam cache model baru dari awal, dan penulisan cache lebih mahal daripada pembacaan cache. Kredit fallback menghilangkan biaya tambahan tersebut: penolakan membawa token kredit, Anda menyertakan kembali token tersebut pada percobaan ulang, dan percobaan ulang ditagih seolah-olah percakapan telah berada di model baru sejak awal.
Anda memerlukan halaman ini hanya ketika Anda membangun percobaan ulang sendiri: pada SDK Ruby atau PHP, melalui HTTP mentah, atau dengan logika percobaan ulang kustom. Fallback sisi server dan middleware SDK menerapkan kredit fallback secara otomatis. Jika Anda menggunakan salah satunya, lewati halaman ini.
Penolakan dan fallback membahas cara mendeteksi penolakan dan memilih pendekatan fallback. Caching prompt menjelaskan pembacaan cache dan penulisan cache jika istilah tersebut masih baru bagi Anda.
Aktifkan dengan header beta
Kirim permintaan yang mungkin ditolak dengan header anthropic-beta: fallback-credit-2026-06-01. Header server-side-fallback-2026-06-01 juga memberikan field yang sama.
Baca dua field dari penolakan
Pada penolakan, stop_details menyertakan fallback_credit_token, sebuah string opaque yang merepresentasikan kredit, dan fallback_has_prefill_claim, sebuah Boolean yang memberi tahu Anda bentuk body percobaan ulang mana yang harus digunakan. Keduanya bernilai null ketika tidak ada kredit yang tersedia untuk penolakan tersebut.
Bangun percobaan ulang
Mulai dari body permintaan yang ditolak. Atur model ke model fallback dan tambahkan token sebagai parameter fallback_credit_token tingkat atas. Pilih bentuk body dari tabel di bawah.
Kirim percobaan ulang dengan header yang sama
Kirim percobaan ulang dengan header beta fallback-credit-2026-06-01 yang sama. Percobaan ulang memerlukan header tersebut untuk menukarkan token.
Field fallback_has_prefill_claim memberi tahu Anda apakah percobaan ulang dapat melanjutkan output parsial dari model yang ditolak alih-alih memulai dari awal:
fallback_has_prefill_claim | Body percobaan ulang |
|---|---|
true | Body permintaan yang ditolak, tanpa perubahan, ditambah satu pesan assistant yang ditambahkan di akhir yang content-nya menyalin content dari respons yang ditolak. Model percobaan ulang melanjutkan respons dari titik di mana model yang ditolak berhenti, dan panggilan alat server yang sudah selesai tidak dieksekusi ulang. |
false | Body permintaan yang ditolak, tanpa perubahan. |
Contoh di bawah ini membuat permintaan yang mungkin ditolak, menukarkan token kredit pada percobaan ulang terhadap Claude Opus 4.8, dan menurunkan tingkatannya melalui tangga penolakan yang dibahas dalam Ketika percobaan ulang ditolak.
client = Anthropic()
request = {
"max_tokens": 1024,
"messages": [{"role": "user", "content": "Hello, Claude"}],
}
def send(model, body):
return client.beta.messages.create(
model=model, betas=["fallback-credit-2026-06-01"], **body
)
response = send("claude-fable-5", request)
if (
response.stop_reason == "refusal"
and (details := response.stop_details)
and (token := details.fallback_credit_token)
):
exact_body = request | {"fallback_credit_token": token}
# Utamakan bentuk kelanjutan kecuali klaimnya False
if details.fallback_has_prefill_claim is not False:
# Gemakan konten penolakan, hapus spasi kosong di akhir dari
# blok teks terakhir (validator prefill menolaknya; pencocokan sisi server
# menoleransi editan ini). Permintaan yang memakai alat juga menghilangkan
# blok tool_use tak berpasangan, lalu hapus lagi spasi kosong setelah penghilangan.
echoed = [block.model_dump() for block in response.content]
match echoed:
case [*_, {"type": "text"} as final_block]:
final_block["text"] = final_block["text"].rstrip()
attempt = exact_body | {
"messages": [
*request["messages"],
{"role": "assistant", "content": echoed},
]
}
else:
attempt = exact_body
try:
response = send("claude-opus-4-8", attempt)
except BadRequestError as error:
if "redemption temporarily unavailable" in str(error):
raise # Transient: retry with the token within its five-minute window
try:
# Kembali ke isi yang tidak diubah, tetap dengan token tersebut
response = send("claude-opus-4-8", exact_body)
except BadRequestError as error:
if "redemption temporarily unavailable" in str(error):
raise # Transient: retry with the token within its five-minute window
# Token itu sendiri ditolak: lepaskan dan coba lagi tanpanya.
response = send("claude-opus-4-8", request)
print(json.dumps({"stop_reason": response.stop_reason, "model": response.model}))Kredit fallback tersedia dalam versi beta pada Claude API, Claude Platform di AWS, Amazon Bedrock, Vertex AI, dan Microsoft Foundry. Token kredit yang dikembalikan dalam hasil Message Batches tidak dapat ditukarkan; penukaran hanya berlaku untuk permintaan Messages API langsung.
Model percobaan ulang harus merupakan salah satu target fallback yang diizinkan dari model yang ditolak. Pada saat peluncuran, target yang diizinkan untuk Claude Fable 5 adalah Claude Opus 4.8 (claude-opus-4-8).
Pengembalian dana terlihat dalam usage percobaan ulang: cache_creation_input_tokens lebih rendah, dan cache_read_input_tokens lebih tinggi dengan jumlah yang sama, dibandingkan dengan yang akan dilaporkan oleh permintaan yang sama tanpa token. Pergeseran sebesar nol berarti token dihormati tetapi tidak ada yang perlu dihargai ulang, misalnya karena cache model percobaan ulang sudah hangat.
Sebagian besar percobaan ulang berhasil ditukarkan pada upaya pertama. Ketika tidak berhasil, API mengembalikan error 400 yang memberi tahu Anda apa yang harus dicoba selanjutnya.
Kelanjutan ditolak: kirim ulang body tanpa perubahan
Jika percobaan ulang yang menambahkan pesan assistant ditolak dengan error 400, kirim ulang body permintaan yang ditolak tanpa perubahan, tetap dengan token.
Token ditolak: hapus token
Jika body tanpa perubahan juga ditolak dengan error 400 yang pesannya menyebutkan fallback_credit_token, coba ulang tanpa token. Kredit hangus, tetapi percobaan ulang itu sendiri tetap berjalan.
Jika permintaan yang ditolak mengeksekusi alat server, percobaan ulang tanpa token akan menjalankan ulang dan menagih ulang alat-alat tersebut. Dalam kasus tersebut, tampilkan error 400 kepada pemanggil Anda alih-alih melanjutkan ke percobaan ulang tanpa token.
Bagian-bagian di bawah ini membahas kasus-kasus khusus dan aturan penukaran lengkap. Sebagian besar integrasi tidak memerlukannya.
Deteksi penolakan dan pilih antara fallback sisi server, middleware SDK, dan percobaan ulang manual.
Bagaimana pembacaan cache dan penulisan cache ditagih.
Setiap nilai stop_reason dan cara menanganinya.
Helper SDK yang menerapkan kredit fallback secara otomatis.
Was this page helpful?