Claude Fable 5.1 API: Panduan Praktis dari Permintaan Pertama hingga Prompt Caching
Claude Fable 5.1 dirilis pada 1 September 2026. ID model API-nya adalah claude-fable-5-1, tanpa sufiks tanggal. Harganya sama seperti Fable 5—$10 per juta token input dan $50 per juta token output—tetapi pembacaan cache turun menjadi $0,25 per juta token. Model ini juga membawa tiga perubahan besar yang tidak ada di Fable 5.
Panduan ini mencakup:
- mendapatkan kunci API;
- mengirim permintaan pertama;
- mengontrol kedalaman dan biaya dengan
effort; - streaming;
- penggunaan alat tanpa memaksa
tool_choice; - fallback saat penolakan;
- pembaruan kemajuan;
- memeriksa objek
usageuntuk memastikan prompt caching berjalan.
Semua permintaan menggunakan HTTP dan JSON biasa, sehingga Anda dapat membangun serta men-debug-nya di Apidog sebelum memasukkannya ke kode aplikasi.
Jika Anda memigrasikan layanan Fable 5 atau Opus 5 yang sudah ada, baca juga panduan migrasi lengkap. Untuk gambaran umum, mulai dengan artikel apa itu Claude Fable 5.1.
Sebelum panggilan pertama: tiga penyebab 400
1. Thinking tidak dapat dinonaktifkan
Fable 5.1 menjalankan adaptive thinking pada setiap permintaan. Hapus bidang thinking, atau gunakan:
{"type": "adaptive"}
Konfigurasi berikut menghasilkan 400:
{"type": "disabled"}
{"type": "enabled", "budget_tokens": N}
Jika Anda berasal dari Opus 5, disabled mungkin diterima pada effort high atau lebih rendah. Pada Fable 5.1, kontrol pengeluaran dilakukan melalui output_config.effort.
2. Forced tool use sudah tidak didukung
Konfigurasi berikut menghasilkan error:
{"type": "any"}
{"type": "tool", "name": "..."}
Pesan error-nya:
tool_choice: type "tool" and "any" are not supported for this model
Gunakan tool_choice: {"type": "auto"}, instruksi eksplisit, dan strict: true. Contohnya tersedia pada bagian penggunaan alat.
3. Retensi data organisasi harus 30 hari
Fable 5.1 adalah Covered Model. Permintaan dari organisasi atau workspace dengan retensi data nol akan menghasilkan 400 invalid_request_error, meskipun isi permintaan valid.
Jika panggilan pertama gagal tanpa alasan yang jelas, periksa konfigurasi retensi data terlebih dahulu. Detailnya tersedia pada dokumentasi Yang Baru di Claude Fable 5.1.
Langkah 1: Dapatkan kunci API
Masuk ke Claude Console, buka pengaturan organisasi, lalu buat kunci API. Salin kunci tersebut segera karena tidak dapat dibaca kembali.
Simpan sebagai environment variable:
export ANTHROPIC_API_KEY="sk-ant-..."
Di Apidog, simpan kunci dengan nama ANTHROPIC_API_KEY, lalu gunakan {{ANTHROPIC_API_KEY}} pada header. Dengan begitu, kunci tidak masuk ke body permintaan yang tersimpan.
Langkah 2: Kirim permintaan pertama
Buat permintaan POST ke:
https://api.anthropic.com/v1/messages
Header yang diperlukan:
x-api-keyanthropic-version: 2023-06-01content-type: application/json
Contoh dengan curl:
curl https://api.anthropic.com/v1/messages \
-H "x-[REDACTED CREDENTIAL] \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"model": "claude-fable-5-1",
"max_tokens": 16000,
"messages": [
{"role": "user", "content": "Explain the difference between idempotent and safe HTTP methods, with one example each."}
]
}'
Permintaan yang sama dengan SDK Python resmi:
import anthropic
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-fable-5-1",
max_tokens=16000,
messages=[{"role": "user", "content": "Explain the difference between idempotent and safe HTTP methods, with one example each."}],
)
if response.stop_reason == "refusal":
print("declined:", response.stop_details.category if response.stop_details else None)
else:
for block in response.content:
if block.type == "text":
print(block.text)
Bangun dua kebiasaan sejak awal:
- Periksa
stop_reasonsebelum membacacontent. Penolakan classifier dikembalikan sebagai HTTP200dengan array konten kosong. - Berikan ruang yang cukup pada
max_tokens. Nilai ini membatasi token thinking dan token respons secara bersamaan. Karena thinking selalu aktif, nilai yang terlalu kecil dapat memotong respons.
Pada konfigurasi display default omitted, respons dapat berisi blok thinking dengan teks kosong. Itu normal. Kembalikan blok tersebut tanpa perubahan pada giliran berikutnya.
Langkah 3: Kontrol biaya dan kedalaman dengan effort
Parameter effort berada di dalam output_config, bukan di tingkat teratas. Nilai yang tersedia:
lowmediumhighxhighmax
Default-nya adalah high.
{
"model": "claude-fable-5-1",
"max_tokens": 16000,
"output_config": {"effort": "medium"},
"messages": [
{
"role": "user",
"content": "Summarize this changelog in five bullets."
}
]
}
Menurut panduan parameter effort, mulai dengan high, lalu uji level lain menggunakan evaluasi Anda sendiri. Jalankan kembali evaluasi meskipun sebelumnya sudah dilakukan pada Fable 5, karena nama level tidak berarti jumlah thinking yang sama di semua model.
Klaim Anthropic:
-
mediumkira-kira menyamai Fable 5 dengan biaya lebih rendah; -
lowsering kompetitif dengan Opus dan Sonnet berdasarkan biaya per tugas.
Perhatikan juga dua perilaku berikut:
- Pada
low, Fable 5.1 lebih jarang memanggil alat pencarian atau retrieval dan lebih banyak menjawab dari memori. - Pada
xhighdanmax, model dapat menyusun hasil panjang di dalam thinking lalu menuliskannya kembali. Sediakanmax_tokensyang lebih besar untuk kedua level tersebut.
Mengubah effort di tengah percakapan
Pada Fable 5, perubahan effort tingkat atas antarpermintaan dapat menghapus cached prefix. Pada Fable 5.1, Anda dapat menyisipkan pesan system kosong dengan output_config baru untuk mengubah effort mulai dari giliran pengguna berikutnya tanpa membatalkan cache.
Fitur beta ini memerlukan header:
mid-conversation-output-config-2026-07-01
Gunakan namespace client.beta.messages:
response = client.beta.messages.create(
model="claude-fable-5-1",
max_tokens=16000,
output_config={"effort": "high"},
betas=["mid-conversation-output-config-2026-07-01"],
messages=[
{"role": "user", "content": "Plan a migration from SQLite to PostgreSQL in three short steps."},
{"role": "assistant", "content": "1. Export the SQLite data. 2. Create the PostgreSQL schema. 3. Import the data and verify row counts."},
{"role": "system", "content": [], "output_config": {"effort": "low"}},
{"role": "user", "content": "Summarize the plan in one sentence."},
],
)
Menurunkan effort dengan cara ini dapat diandalkan. Untuk menaikkannya, hasil terbaik biasanya diperoleh dari lompatan besar, misalnya low langsung ke xhigh.
Langkah 4: Streaming respons
Tugas sulit pada effort tinggi dapat berjalan selama beberapa menit. Gunakan streaming untuk respons yang mungkin panjang. SDK juga memerlukannya saat max_tokens mendekati batas 128.000 agar terhindar dari HTTP timeout.
with client.messages.stream(
model="claude-fable-5-1",
max_tokens=64000,
messages=[{"role": "user", "content": "Write a test plan for a rate-limited public API."}],
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)
final = stream.get_final_message()
print(final.stop_reason, final.usage.output_tokens)
Apidog merender respons streaming saat data tiba. Ini membantu Anda mengukur waktu yang dibutuhkan effort: high sebelum token teks pertama muncul.
Langkah 5: Gunakan alat tanpa forced tool choice
Definisi alat tetap sama seperti pada Fable 5. Perbedaannya adalah cara memastikan alat dipanggil.
Pada Fable 5, Anda dapat memaksa alat dengan:
{"type": "tool", "..."}
Pada Fable 5.1, forced tool use menghasilkan 400 karena dapat melewati proses thinking dan membuat model menulis alur kerjanya langsung ke argumen.
Gunakan tiga bagian berikut:
- Pertahankan
tool_choicepadaauto. - Sebutkan nama alat secara eksplisit dalam instruksi.
- Gunakan
strict: truedanadditionalProperties: falseagar argumen selalu tervalidasi.
record_summary_tool = {
"name": "record_summary",
"description": "Record the structured summary of the document.",
"strict": True,
"input_schema": {
"type": "object",
"properties": {"summary": {"type": "string"}},
"required": ["summary"],
"additionalProperties": False,
},
}
response = client.messages.create(
model="claude-fable-5-1",
max_tokens=16000,
tools=[record_summary_tool],
tool_choice={"type": "auto"},
messages=[{"role": "user", "content": "Summarize: The meeting moved to Thursday. Call the record_summary tool with your result."}],
)
Jika forced tool use hanya dipakai untuk mendapatkan JSON, gunakan structured output melalui output_config.format sebagai gantinya.
Jika aplikasi memerlukan alat tertentu pada giliran tertentu dalam percakapan multi-giliran, tambahkan pesan system setelah giliran pengguna terbaru. Sebutkan nama alat dan nyatakan bahwa pemanggilan alat diperlukan. Simpan pesan tersebut dalam riwayat percakapan.
tool_choice: {"type": "none"} tetap berfungsi untuk giliran yang tidak boleh memanggil alat.
Loop agentik
Loop-nya tetap sama:
- Saat
stop_reasonadalahtool_use, jalankan setiap bloktool_use. - Kembalikan semua blok
tool_resultdalam satu pesan pengguna. - Tambahkan kembali giliran asisten persis seperti yang dikembalikan, termasuk blok thinking.
Langkah terakhir semakin penting pada Fable 5.1 karena preserved thinking terikat pada percakapan. Lihat panduan preserved thinking.
Dalam loop panjang, Fable 5.1 mungkin menghasilkan satu panggilan alat per giliran, sedangkan Fable 5 dapat melakukan batch beberapa panggilan. Untuk mendorong batching, tambahkan pesan sistem berikut setelah setiap pesan hasil alat:
Pertama, daftar secara pribadi apa yang Anda butuhkan selanjutnya; lalu minta setiap item yang tidak bergantung pada hasil item lain dalam satu respons ini.
Gunakan pesan dengan cakupan per giliran:
{"clear_at": "next_user_message"}
Fitur ini memerlukan header beta:
mid-conversation-system-clear-at-2026-08-21
Simpan setiap salinan pesan sebelumnya di tempatnya.
Langkah 6: Tangani penolakan dengan fallback
Fable 5.1 menjalankan security classifier. Permintaan yang ditolak dikembalikan sebagai HTTP 200 dengan:
stop_reason: "refusal"
Objek stop_details dapat berisi kategori:
cyberbiofrontier_llmreasoning_extractiongeneral_harms
Penolakan sebelum output tidak ditagih.
Fallback default
Cara paling sederhana adalah menggunakan:
fallbacks: "default"
dengan header beta:
server-side-fallback-2026-07-01
Sistem akan mencoba ulang pada model yang direkomendasikan Anthropic untuk kategori tersebut. Untuk Fable 5.1, target yang diizinkan adalah claude-opus-4-8 dan claude-opus-5.
response = client.beta.messages.create(
model="claude-fable-5-1",
max_tokens=16000,
fallbacks="default",
betas=["server-side-fallback-2026-07-01"],
messages=[{"role": "user", "content": "Audit this authentication middleware for logic bugs."}],
)
fallback_ran = any(
entry.type == "fallback_message" for entry in (response.usage.iterations or [])
)
if fallback_ran and response.stop_reason != "refusal":
print("served by", response.model)
Respons menampilkan model penyedia layanan pada field model tingkat atas. Blok konten fallback menandai serah terima; pertahankan blok tersebut pada posisi aslinya saat mengembalikan giliran.
Batasan fallback:
- tidak didukung pada API Batches;
- tidak tersedia di Bedrock, Google Cloud, atau Foundry.
Pada platform tersebut, daftarkan BetaRefusalFallbackMiddleware SDK pada client. Detail tentang penagihan, sticky routing, dan retry manual tersedia di panduan penanganan penolakan.
Langkah 7: Dapatkan pembaruan kemajuan
Di antara pemanggilan alat, Fable 5.1 dapat menulis catatan singkat tentang temuan dan langkah berikutnya. Catatan ini hadir sebagai blok thinking terpisah tepat sebelum pemanggilan alat.
Secara default, blok tersebut kosong. Untuk menerimanya sebagai teks sementara, gunakan:
{
"model": "claude-fable-5-1",
"max_tokens": 16000,
"thinking": {"type": "adaptive", "display": "updates"},
"tools": [],
"messages": [
{
"role": "user",
"content": "Review the PRs open against our billing service."
}
]
}
Fitur ini memerlukan header beta:
thinking-display-updates-2026-08-18
Setiap blok thinking dengan teks tidak kosong dapat ditampilkan sebagai baris status. Fable 5.1 menghasilkan lebih sedikit pembaruan dibandingkan Fable 5. Jika UI Anda bergantung pada narasi kemajuan, hapus prompt yang meminta model menahan temuan hingga respons akhir.
Langkah 8: Verifikasi tarif cache $0,25
Perubahan harga utama Fable 5.1 ada pada prompt caching. Tandai prefiks stabil dengan cache_control, lalu periksa field usage:
response = client.messages.create(
model="claude-fable-5-1",
max_tokens=16000,
system=[
{
"type": "text",
"text": LONG_STABLE_SYSTEM_PROMPT,
"cache_control": {"type": "ephemeral"},
}
],
messages=[{"role": "user", "content": "Which endpoints in the spec lack an error schema?"}],
)
u = response.usage
print(u.input_tokens, u.cache_creation_input_tokens, u.cache_read_input_tokens)
Pada pengiriman pertama:
cache_creation_input_tokens != 0
Token tersebut ditagih $12,50 per juta untuk TTL lima menit.
Pada pengiriman identik berikutnya dalam lima menit:
cache_read_input_tokens > 0
Token cache read ditagih $0,25 per juta. Informasi tambahan tersedia di dokumentasi Prompt Caching dan penjelasan harga Fable 5.1.
Jika cache_read_input_tokens selalu nol, berarti ada bagian prefiks yang berubah. Periksa:
- timestamp dalam system prompt;
- JSON yang tidak diurutkan;
- array alat yang berubah-ubah;
- panjang prefiks di bawah 512 token.
Karena cache miss 40 kali lebih mahal daripada cache hit, menjaga cache tetap hangat lebih penting pada Fable 5.1. effort per pesan dan pesan sistem per giliran memungkinkan perubahan konfigurasi di tengah sesi tanpa mereset cache.
Namun, perubahan yang mereset cache—misalnya membangun ulang system prompt atau mengedit giliran sebelumnya—juga membatalkan blok thinking. Menjaga riwayat percakapan tetap immutable dapat menghindari biaya ganda.
Uji seluruh alur di Apidog
Simpan setiap skenario dalam satu koleksi Apidog:
- panggilan pertama;
- variasi
effort; - streaming;
- loop alat;
- fallback;
- pemeriksaan cache.
Gunakan environment variable untuk API key dan model. Dengan begitu, Anda dapat mengganti seluruh koleksi antara claude-fable-5 dan claude-fable-5-1 melalui satu pengeditan.
Tambahkan assertion berikut:
stop_reason != "refusal"
untuk prompt pengujian yang tidak berbahaya,
usage.cache_read_input_tokens > 0
pada permintaan cache kedua, serta pemeriksaan bahwa tidak ada entri input_transformations dengan:
reason: "prefix_binding_mismatch"
Jalankan koleksi sebelum dan sesudah mengubah harness. Unduh Apidog untuk mengaturnya. Koleksi yang sama dapat digunakan sebagai pemeriksaan CI melalui Apidog CLI.
Kesalahan dan jebakan umum
400 tool_choice: type "tool" and "any" are not supported for this model
Gunakanauto, instruksi eksplisit, danstrict: true.400padathinking: {"type": "disabled"}
Hapus konfigurasi tersebut dan turunkaneffort.400 invalid_request_errormeskipun body valid
Periksa apakah organisasi atau workspace memiliki retensi data 30 hari.400 Invalid signature in thinking block. The block is bound to a different conversation.
Kode mungkin mengedit giliran sebelumnya, system prompt, atau array alat. Ikuti aturan pada panduan preserved thinking.Blok thinking kosong
Ini normal padadisplay: "omitted". Gunakansummarizedatauupdatesjika ingin menampilkannya.Pembacaan cache selalu nol
Prefiks tidak stabil. Audit timestamp, urutan JSON, dan variasi array alat.Permintaan Priority Tier gagal validasi
Fable 5.1 tidak mendukung Priority Tier, meskipun Fable 5 mendukungnya.
FAQ
Apa ID model API Claude Fable 5.1?
Gunakan:
claude-fable-5-1
Di Amazon Bedrock:
anthropic.claude-fable-5-1
Google Cloud, Microsoft Foundry, dan Claude Platform di AWS menggunakan:
claude-fable-5-1
Apakah saya memerlukan header beta?
Tidak untuk model dasar, adaptive thinking, effort, tools, dan caching. Semuanya berfungsi dengan header standar:
anthropic-version: 2023-06-01
Header beta hanya diperlukan untuk:
- effort per pesan;
- pesan sistem dengan cakupan per giliran;
- pembaruan kemajuan;
- server-side fallback;
- kontrol thinking binding.
Bisakah saya memaksa pemanggilan alat?
Tidak. tool_choice: any dan tool_choice: tool menghasilkan 400.
Gunakan auto, sebutkan nama alat dalam prompt, dan gunakan strict: true. Jika tujuan Anda hanya mengekstrak JSON, gunakan structured output.
Berapa output maksimum API Claude Fable 5.1?
API Messages mendukung hingga 128.000 token output. Gunakan streaming untuk respons besar.
Beta API Batch yang mendukung 300.000 token belum terdaftar untuk Fable 5.1.
Bagaimana cara melihat cache read yang lebih murah?
Periksa:
usage.cache_read_input_tokens
Pada Fable 5.1, token tersebut ditagih $0,25 per juta, dibandingkan dengan $1 pada Fable 5 dan $0,50 pada Opus 5.
Apakah panduan API Fable 5 masih berlaku?
Sebagian besar masih berlaku karena endpoint-nya sama. Namun, contoh forced tool use pada panduan API Fable 5 akan menghasilkan 400 pada Fable 5.1. Panduan tersebut juga belum mencakup effort per pesan dan progress updates.

Top comments (0)