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. 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 sudah berada di model baru sejak awal.
Anda hanya memerlukan halaman ini ketika Anda membangun percobaan ulang sendiri: 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-istilah tersebut masih baru bagi Anda.
Ikut serta dengan header beta
Kirim permintaan yang mungkin ditolak dengan header anthropic-beta: fallback-credit-2026-07-01. Header server-side-fallback-2026-07-01 juga memberikan field yang sama, dan header sebelumnya fallback-credit-2026-06-01 tetap diterima dan memberikan field yang sama.
Baca dua field dari penolakan
Pada sebuah penolakan, stop_details menyertakan dua field:
fallback_credit_token: string opak yang merepresentasikan kredit.fallback_has_prefill_claim: 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 tingkat atas fallback_credit_token. Pilih bentuk body dari tabel di bawah.
Kirim percobaan ulang dengan header yang sama
Kirim percobaan ulang dengan header beta fallback-credit-2026-07-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 menolak 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 menyertakan kembali content dari respons yang ditolak. Model percobaan ulang melanjutkan respons dari titik di mana model yang menolak berhenti, dan panggilan alat server yang sudah selesai tidak dieksekusi ulang. |
false | Body permintaan yang ditolak, tanpa perubahan. |
Contoh berikut membuat permintaan yang mungkin ditolak dan menukarkan token kredit pada percobaan ulang terhadap Claude Opus 4.8. Ketika sebuah percobaan ulang ditolak, contoh ini menurun melalui tangga penolakan: urutan bentuk percobaan ulang yang semakin sederhana yang dibahas di Ketika percobaan ulang ditolak.
client = Anthropic()
request = {
"max_tokens": 1024,
"messages": [{"role": "user", "content": "Hello, Claude"}],
}
def send(model: str, body: dict[str, object]) -> BetaMessage:
return client.beta.messages.create(
model=model, betas=["fallback-credit-2026-07-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 continuation kecuali klaimnya False
if details.fallback_has_prefill_claim is not False:
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 error.message:
raise # Transient: retry with the token within its five-minute window
try:
# Kembali ke body yang tidak diubah, tetap dengan token tersebut
response = send("claude-opus-4-8", exact_body)
except BadRequestError as retry_error:
if "redemption temporarily unavailable" in retry_error.message:
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 berada dalam tahap beta di Claude API, Amazon Bedrock, Claude Platform di AWS, Google Cloud, dan Microsoft Foundry. Penolakan di Message Batches tidak menerbitkan token kredit, dan penukaran hanya berlaku untuk permintaan Messages API langsung: token yang dikirimkan pada permintaan batch diterima tetapi diabaikan.
Model percobaan ulang harus merupakan salah satu target fallback yang diizinkan dari model yang menolak. Target yang diizinkan untuk Claude Fable 5 adalah Claude Opus 4.8 (claude-opus-4-8) dan Claude Opus 5 (claude-opus-5).
Pengembalian dana terlihat di usage pada percobaan ulang. Dibandingkan dengan apa yang akan dilaporkan oleh permintaan yang sama tanpa token, cache_creation_input_tokens lebih rendah, dan cache_read_input_tokens lebih tinggi dengan jumlah yang sama. Pergeseran sebesar nol berarti token dihormati tetapi tidak ada yang perlu dihitung ulang harganya, misalnya karena cache model percobaan ulang sudah hangat.
Sebagian besar percobaan ulang berhasil ditukarkan pada upaya pertama. Ketika salah satunya 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 berhasil.
Jika permintaan yang ditolak mengeksekusi alat server, percobaan ulang tanpa token akan menjalankan ulang dan menagih ulang alat-alat tersebut. Dalam kasus itu, tampilkan error 400 ke pemanggil Anda alih-alih beralih ke percobaan ulang tanpa token.
Bagian-bagian di bawah ini membahas kasus tepi 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?