Cara Menggunakan API Claude Fable 5.1 Langkah demi Langkah dengan Apidog

Panduan API Claude Fable 5.1 langkah demi langkah: permintaan pertama, upaya, streaming, alat ketat alih-alih pilihan alat paksa, fallback, pembaruan kemajuan, pemeriksaan cache.

Ashley Innocent

Ashley Innocent

2 September 2026

Cara Menggunakan API Claude Fable 5.1 Langkah demi Langkah dengan Apidog

Apidog untuk Perusahaan

Penerapan On-Premises

SSO & RBAC

Sesuai SOC 2

Jelajahi Apidog Enterprise

Claude Fable 5.1 dirilis pada 1 September 2026, dan ID model API adalah string persis claude-fable-5-1, tanpa sufiks tanggal. Biayanya sama yaitu $10 per juta token input dan $50 per juta token output seperti Fable 5, dengan pembacaan cache dipotong menjadi $0,25 per juta, dan membawa tiga perubahan besar yang tidak dimiliki Fable 5.

Panduan ini membahas seluruh proses: mendapatkan kunci, mengirim permintaan pertama, mengontrol upaya, streaming, penggunaan alat tanpa pemaksaan tool_choice, fallback penolakan, pembaruan kemajuan, dan membaca objek usage untuk memastikan cache Anda berfungsi dengan tarif baru. Setiap permintaan adalah HTTP biasa dengan JSON, sehingga Anda dapat membangun dan men-debugnya di Apidog sebelum masuk ke kode aplikasi.

Jika Anda memigrasikan layanan Fable 5 atau Opus 5 yang sudah ada daripada memulai dari awal, baca panduan migrasi lengkap bersamaan dengan ini. Untuk ikhtisar model, mulailah dengan apa itu Claude Fable 5.1.

Sebelum panggilan pertama Anda: tiga hal yang mengembalikan 400

1. Pemikiran tidak dapat dikonfigurasi, hanya diarahkan. Fable 5.1 menjalankan pemikiran adaptif pada setiap permintaan. Hilangkan bidang thinking, atau kirim {"type": "adaptive"}. Baik {"type": "disabled"} maupun {"type": "enabled", "budget_tokens": N} mengembalikan 400. Jika Anda berasal dari Opus 5, di mana disabled diterima pada upaya high atau di bawahnya, hapus dan kontrol pengeluaran dengan output_config.effort sebagai gantinya.

2. Penggunaan alat paksa sudah tidak ada. tool_choice: {"type": "any"} dan {"type": "tool", "name": "..."} mengembalikan tool_choice: type "tool" and "any" are not supported for this model. Perbaikan ada di langkah penggunaan alat di bawah.

3. Organisasi Anda memerlukan penyimpanan data 30 hari. Fable 5.1 adalah Model yang Dicakup. Permintaan dari organisasi atau ruang kerja dengan penyimpanan data nol mengembalikan 400 invalid_request_error tanpa petunjuk lain. Jika panggilan pertama Anda gagal dan isi permintaan terlihat benar, periksa retensi sebelum hal lain.

Ketiga hal ini didokumentasikan dalam Yang Baru di Claude Fable 5.1 milik Anthropic.

Langkah 1: Dapatkan kunci API

Masuk ke Claude Console, buka bagian kunci API di pengaturan organisasi Anda, dan buat kunci. Salin sekali; Anda tidak dapat membacanya kembali nanti. Ekspor daripada menempelkannya ke kode:

export ANTHROPIC_API_KEY="sk-ant-..."

Di Apidog, simpan sebagai variabel lingkungan bernama ANTHROPIC_API_KEY dan rujuk sebagai {{ANTHROPIC_API_KEY}} di header, sehingga kunci tidak pernah masuk ke isi permintaan yang tersimpan.

Langkah 2: Kirim permintaan pertama Anda

Buat permintaan POST ke https://api.anthropic.com/v1/messages dengan tiga header: x-api-key, anthropic-version: 2023-06-01, dan content-type: application/json.

curl https://api.anthropic.com/v1/messages \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -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."}
    ]
  }'

Panggilan yang sama di Python dengan SDK 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)

Dua kebiasaan yang perlu dibangun dari panggilan pertama. Periksa stop_reason sebelum membaca content, karena penolakan pengklasifikasi adalah HTTP 200 dengan array konten kosong. Dan berikan max_tokens ruang yang cukup. Ini membatasi token pemikiran ditambah token respons secara bersamaan, dan pemikiran selalu aktif, jadi nilai ketat yang disesuaikan untuk model tanpa berpikir akan terpotong di sini.

Respons berisi blok thinking yang teksnya kosong di bawah display default "omitted". Itu normal. Berikan kembali tanpa perubahan pada giliran berikutnya.

Langkah 3: Kontrol biaya dan kedalaman dengan upaya

Parameter upaya adalah pengungkit utama pada Fable 5.1. Ini masuk ke dalam output_config, bukan pada tingkat atas, dan menerima low, medium, high, xhigh, dan max. Defaultnya adalah high.

{
  "model": "claude-fable-5-1",
  "max_tokens": 16000,
  "output_config": {"effort": "medium"},
  "messages": [{"role": "user", "content": "Summarize this changelog in five bullets."}]
}

Panduan Anthropic: mulailah dengan high, lalu uji yang lain terhadap evaluasi Anda sendiri, dan jalankan kembali pengujian meskipun Anda pernah melakukannya pada Fable 5, karena nama level tidak sesuai dengan jumlah pemikiran yang sama di seluruh model. Klaim mereka adalah bahwa medium secara kasar cocok dengan Fable 5 dengan biaya lebih rendah dan low seringkali kompetitif dengan Opus dan Sonnet dalam biaya per tugas. Dua perilaku spesifik upaya yang perlu diketahui: pada low, Fable 5.1 memanggil alat pencarian dan pengambilan lebih jarang dan lebih banyak menjawab dari memori, dan pada xhigh dan max ia dapat menyusun hasil yang panjang dalam pemikirannya dan kemudian menuliskannya lagi, jadi atur max_tokens untuk keduanya.

Mengubah upaya di tengah percakapan (beta). Pada Fable 5, mengubah upaya level atas antara permintaan akan menghilangkan prefix yang di-cache. Pada Fable 5.1, pesan role: "system" dengan konten kosong dan output_config mengubah upaya dari giliran pengguna berikutnya tanpa membatalkan cache. Ini memerlukan header beta mid-conversation-output-config-2026-07-01 dan 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 upaya dengan cara ini dapat diandalkan. Menaikkannya bekerja paling baik untuk lompatan besar, seperti dari low ke xhigh. Panduan parameter upaya untuk Opus 5 mencakup lima level secara mendalam, dan semantik yang sama berlaku di sini.

Langkah 4: Streaming respons

Fable 5.1 untuk tugas-tugas sulit dapat berjalan selama beberapa menit pada upaya yang lebih tinggi, jadi streaming apa pun yang mungkin panjang. SDK memerlukan streaming untuk nilai max_tokens yang mendekati batas 128.000 untuk menghindari batas waktu HTTP.

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)

Di Apidog, respons streaming dirender saat tiba, yang merupakan cara tercepat untuk melihat berapa lama giliran dengan upaya high menghabiskan waktu berpikir sebelum token teks pertama.

Langkah 5: Tambahkan penggunaan alat tanpa memaksa

Definisikan alat dengan cara yang sama seperti pada Fable 5. Yang berubah adalah cara Anda menjamin panggilan. Pada Fable 5 Anda bisa memaksanya dengan tool_choice: {"type": "tool", ...}. Pada Fable 5.1 itu mengembalikan 400, karena panggilan paksa akan melewati pemikiran dan model akan menulis alur kerjanya ke dalam argumen.

Penggantiannya memiliki tiga bagian: pertahankan tool_choice pada auto, sebutkan nama alat dalam instruksi, dan atur strict: true (penggunaan alat yang ketat) pada alat dengan additionalProperties: false dalam skema sehingga 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 panggilan paksa hanya ada untuk mendapatkan JSON kembali, gunakan output terstruktur (`output_config.format`) alih-alih alat sama sekali. Jika aplikasi Anda, bukan pengguna, memerlukan panggilan spesifik pada giliran percakapan multi-giliran saat ini, tambahkan pesan `role: "system"` setelah giliran pengguna terbaru yang menyebutkan nama alat dan menyatakan bahwa panggilan diperlukan, dan simpan pesan tersebut dalam riwayat setelahnya. `tool_choice: {"type": "none"}` masih berfungsi untuk giliran yang tidak boleh memanggil alat.

Loop agentik itu sendiri tidak berubah: ketika stop_reason adalah tool_use, jalankan setiap blok tool_use, kembalikan semua blok tool_result dalam satu pesan pengguna, dan tambahkan giliran asisten kembali persis seperti yang dikembalikan, termasuk blok pemikiran. Klausul terakhir itu lebih penting pada Fable 5.1 daripada model sebelumnya, untuk alasan yang dijelaskan oleh panduan pemikiran yang terpelihara.

Satu perilaku yang perlu diperhatikan: dalam loop panjang di mana pembacaan independen berikutnya hanya tersirat oleh tugas, Fable 5.1 mungkin mengeluarkan satu panggilan alat per giliran di mana Fable 5 mem-batch beberapa. Perbaikan Anthropic adalah dorongan satu kalimat yang ditambahkan 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.” Kirimkan sebagai pesan sistem yang cakupannya per giliran (`clear_at: "next_user_message"`, header beta `mid-conversation-system-clear-at-2026-08-21`) dan biarkan setiap salinan sebelumnya tetap di tempatnya.

Langkah 6: Tangani penolakan dengan fallback

Fable 5.1 menjalankan pengklasifikasi keamanan. Permintaan yang ditolak kembali sebagai HTTP 200 dengan stop_reason: "refusal" dan objek stop_details yang menyebutkan kategori: cyber, bio, frontier_llm, reasoning_extraction, atau general_harms. Penolakan sebelum output apa pun tidak ditagih.

Pilih fallback secara default. Bentuk paling sederhana adalah fallbacks: "default" dengan header beta server-side-fallback-2026-07-01, yang mencoba kembali permintaan yang ditolak 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 menamai model penyedia layanan di bidang model tingkat atasnya, dan blok konten fallback menandai serah terima. Pertahankan blok tersebut di tempat munculnya ketika Anda mengembalikan giliran. Dua batasan: fallbacks ditolak pada API Batches, dan tidak tersedia di Bedrock, Google Cloud, atau Foundry, di mana Anda mendaftarkan BetaRefusalFallbackMiddleware SDK pada klien sebagai gantinya. Panduan penanganan penolakan mencakup penagihan, routing lengket, dan percobaan ulang manual dengan kredit fallback.

Langkah 7: Dapatkan pembaruan kemajuan selama giliran panjang

Di antara panggilan alat, Fable 5.1 menulis catatan singkat tentang apa yang ditemukan dan apa yang akan dilakukan selanjutnya. Masing-masing tiba sebagai blok thinking sendiri tepat sebelum panggilan alat, dan di bawah display default blok-blok tersebut kosong. Atur display: "updates" dengan header beta thinking-display-updates-2026-08-18 untuk menerimanya sebagai teks sementara alasan itu sendiri tetap tersembunyi.

{
  "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."}]
}

Setiap blok thinking dengan teks tidak kosong kemudian menjadi baris status yang dapat Anda tampilkan. Fable 5.1 menulis lebih sedikit blok tersebut daripada Fable 5, jadi jika UI Anda bergantung pada narasi, hapus juga baris prompt apa pun yang memberi tahu model untuk menahan temuan untuk respons akhir.

Langkah 8: Baca objek usage untuk tarif cache $0,25

Caching prompt adalah tempat perubahan harga Fable 5.1 terjadi. Tempatkan cache_control pada prefiks stabil dan konfirmasi hit di 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 tidak nol (ditagih $12,50 per juta untuk TTL 5 menit). Pada pengiriman kedua dalam lima menit, cache_read_input_tokens harus tidak nol, ditagih $0,25 per juta. Jika tetap nol di seluruh permintaan identik, sesuatu dalam prefiks berubah setiap saat: stempel waktu dalam prompt sistem, JSON yang tidak diurutkan, array alat yang bervariasi. Prompt minimum yang dapat di-cache adalah 512 token.

Dua fakta cache khusus untuk model ini. Karena miss biayanya 40x dari hit, menjaga cache tetap 'hangat' lebih penting daripada pada Fable 5, dan upaya per pesan serta pesan sistem yang cakupannya per giliran ada sebagian agar Anda dapat mengubah hal-hal di tengah sesi tanpa reset. Dan pengeditan yang sama yang mereset cache (membangun kembali system, mengedit giliran sebelumnya) sekarang juga membatalkan blok pemikiran, jadi disiplin hanya menambahkan membayar dua kali lipat.

Uji dan debug seluruh alur di Apidog

Simpan setiap langkah di atas sebagai permintaan dalam satu koleksi Apidog: panggilan pertama, varian upaya, streaming, loop alat, fallback, pemeriksaan cache. Gunakan variabel lingkungan untuk kunci dan untuk model, sehingga beralih seluruh koleksi antara claude-fable-5 dan claude-fable-5-1 hanya satu pengeditan. Kemudian tambahkan pernyataan: stop_reason bukan refusal pada prompt uji Anda yang tidak berbahaya, usage.cache_read_input_tokens lebih besar dari nol pada permintaan cache kedua, dan tidak ada entri input_transformations yang memiliki reason: "prefix_binding_mismatch" saat Anda menjalankannya dengan header pengikatan-pemikiran. Jalankan koleksi sebelum dan sesudah perubahan harness apa pun. Unduh Apidog untuk mengaturnya; koleksi yang sama berfungsi sebagai pemeriksaan CI melalui Apidog CLI.

Kesalahan dan jebakan yang akan Anda temui

FAQ

Apa ID model untuk API Claude Fable 5.1? claude-fable-5-1. Di Amazon Bedrock adalah anthropic.claude-fable-5-1; Google Cloud, Microsoft Foundry, dan Claude Platform di AWS menggunakan claude-fable-5-1.

Apakah saya memerlukan header beta untuk menggunakan Claude Fable 5.1? Tidak. Model dasar, pemikiran adaptif, upaya, alat, dan caching semuanya berfungsi pada header standar anthropic-version: 2023-06-01. Header beta hanya diperlukan untuk upaya per pesan, pesan sistem yang cakupannya per giliran, pembaruan kemajuan, fallback sisi server, dan kontrol pengikatan-pemikiran.

Bisakah saya memaksa panggilan alat pada Claude Fable 5.1? Tidak. tool_choice any dan tool mengembalikan 400. Gunakan auto, sebutkan nama alat dalam prompt, dan atur strict: true untuk argumen yang valid skema, atau gunakan output terstruktur untuk ekstraksi JSON.

Berapa output maksimum pada API Claude Fable 5.1? 128.000 token pada API Pesan. Streaming untuk apa pun yang besar. Beta API Batch 300.000 token tidak terdaftar untuk Fable 5.1.

Bagaimana cara melihat pembacaan cache yang lebih murah? Lihat usage.cache_read_input_tokens pada permintaan berulang. Token tersebut ditagih $0,25 per juta pada Fable 5.1, dibandingkan dengan $1 pada Fable 5 dan $0,50 pada Opus 5. Penjelasan harga menunjukkan angkanya.

Apakah panduan API Fable 5 masih berlaku? Sebagian besar. Panduan API Fable 5 mencakup endpoint yang sama, tetapi contoh penggunaan alat paksa sekarang mengembalikan 400 dan itu mendahului upaya per pesan dan pembaruan kemajuan.

tombol

Mengembangkan API dengan Apidog

Apidog adalah alat pengembangan API yang membantu Anda mengembangkan API dengan lebih mudah dan efisien.