Lewati ke konten utama

Tutorial Claude Fable 5 API: Bangun Developer Task Assistant di Python

Hubungkan Claude Fable 5 API ke proyek Python dan bangun asisten tugas pengembang dengan keluaran JSON terstruktur, streaming, penggunaan tool, penanganan penolakan, dan endpoint FastAPI.
Diperbarui 28 Sep 2026  · 13 mnt Baca

Jelajahi bersama AI

ChatGPTClaudePerplexity

Pembaruan (1 Juli 2026): Akses ke Claude Fable 5 telah dipulihkan, kini tersedia secara global di Claude Platform, Claude.ai, Claude Code, dan Claude Cowork setelah perintah pengendalian ekspor dicabut. Mythos 5 tetap terbatas untuk mitra Project Glasswing yang telah diverifikasi.

Pembaruan (2 September 2026): Anthropic telah merilis model penerus Fable 5. Saya sarankan membaca panduan Claude Fable 5.1 kami untuk semua detailnya.

Saat saya menguji model baru melalui API, saya kurang memedulikan catatan peluncuran dan lebih fokus pada bagian yang harus saya sambungkan ke kode: seperti apa panggilan API itu, apa yang berubah dari model sebelumnya, berapa biayanya, dan apa yang terjadi saat lapisan keamanan menolak?

Artikel ikhtisar tentang Claude Fable 5 membahas peluncuran, hasil benchmark, dan pengaturan keamanan yang membuat Fable 5 unik. Kode di bawah melanjutkan dari sana. Secara khusus, kita akan menggunakan Developer Task Assistant yang menerima permintaan fitur perangkat lunak dan mengembalikan rencana implementasi terstruktur, lalu menambahkan streaming, penggunaan tool, pelacakan biaya, dan endpoint FastAPI.

Kita akan melalui:

  • Membuat panggilan API Fable 5 dan membaca respons
  • Mengarahkan model dengan system prompt
  • Mengembalikan JSON menggunakan keluaran terstruktur
  • Melakukan streaming respons panjang ke terminal atau klien web
  • Menghubungkan tool sederhana dan menjalankan tool loop
  • Memperkirakan dan melacak biaya token sebelum dan sesudah setiap permintaan
  • Menangani penolakan tanpa membuat aplikasi Anda crash
  • Memproses input gambar untuk ulasan UI atau analisis visual
  • Menyajikan seluruh alur kerja melalui endpoint FastAPI

Apa Itu Claude Fable 5?

Claude Fable 5 adalah model Anthropic yang dirilis pada 9 Juni 2026 dengan string model API claude-fable-5. Anthropic menjelaskannya sebagai model dasar yang sama dengan Claude Mythos 5, tetapi dengan classifier keamanan yang diterapkan untuk ketersediaan umum. Mythos 5 tetap terbatas untuk Project Glasswing, program terbatas bagi organisasi keamanan tepercaya.

Bagi pengembang, detail API yang relevan adalah:

  • Konteks 1 juta token dan hingga 128k token keluaran per permintaan

  • Harga $10 per sejuta token input dan $50 per sejuta token output, dua kali lipat Opus 4.8

  • Adaptive thinking selalu aktif. Anda tidak dapat menonaktifkannya. Parameter effort mengatur kedalaman; penalaran internal model dihasilkan dan ditagihkan terlepas dari apakah Anda menampilkannya atau tidak

  • Ini adalah "Covered Model," artinya retensi data 30 hari bersifat wajib. Zero Data Retention tidak tersedia untuk model ini.

Saya tidak akan menggunakannya untuk setiap panggilan API. Lebih masuk akal untuk tugas yang memerlukan penalaran lintas arsitektur, edge case, dan detail implementasi. Untuk pekerjaan yang lebih sederhana, Sonnet 4.6 atau Haiku 4.5 kemungkinan sudah cukup.

Apa yang Akan Kita Bangun dengan Fable 5: Developer Task Assistant

Asisten yang akan kita bangun menerima permintaan fitur perangkat lunak dan mengembalikan rencana terstruktur: ringkasan teknis, langkah implementasi berurutan, kemungkinan perubahan file, risiko, dan pengujian. 

Saya menggunakan contoh ini karena memaksa detail API yang biasanya penting dalam integrasi nyata: keluaran terstruktur, streaming, panggilan tool, biaya, dan penanganan penolakan. Ini kecil, tetapi bukan sekadar Hello World.

Bagian-bagian di bawah ini membangun komponen tersebut satu per satu.

Diagram yang menunjukkan permintaan fitur mengalir ke Claude Fable 5 dan mengembalikan rencana terstruktur dengan penggunaan tool opsional

Permintaan fitur mengalir ke rencana terstruktur. Gambar oleh Penulis.

Kode utama berada di task_assistant.py untuk skrip lokal dan app.py untuk endpoint FastAPI.

Prasyarat

Untuk mengikutinya, Anda memerlukan:

  • Python 3.9 atau lebih baru (tutorial menggunakan fitur 3.10+ seperti type hints bawaan di model Pydantic, tetapi SDK sendiri mendukung 3.9+)

  • Kunci API Anthropic dengan akses ke claude-fable-5

  • Pemahaman dasar tentang variabel lingkungan, JSON, dan HTTP API

  • Terminal dan editor kode

Menyiapkan Proyek

Mulailah dengan membuat folder proyek dan virtual environment.

mkdir task-assistant
cd task-assistant
python -m venv .venv
source .venv/bin/activate   # Windows: .venv\Scripts\activate

Instal Anthropic SDK, FastAPI, dan beberapa helper.

pip install anthropic fastapi uvicorn python-dotenv pydantic

Buat file .env di root proyek dengan kunci API Anda. Jangan pernah commit file ini ke version control.

ANTHROPIC_API_KEY=sk-ant-...

Muat di bagian atas skrip Anda. Anthropic() membaca ANTHROPIC_API_KEY dari lingkungan secara otomatis.

from dotenv import load_dotenv
from anthropic import Anthropic

load_dotenv()
client = Anthropic()

Inisialisasi klien sekali di level modul dan gunakan kembali di seluruh tutorial.

Membuat Panggilan API Pertama Claude Fable 5 di Python

Sebelum menambahkan logika proyek, saya suka mengirim permintaan minimal untuk memastikan penyiapan berfungsi. Messages API menerima string model, batas max_tokens, dan array messages. max_tokens wajib; SDK akan melempar TypeError jika Anda mengabaikannya.

MODEL = "claude-fable-5"

def get_text(response):
    """Return the first text block, skipping thinking or tool blocks."""
    return next((b.text for b in response.content if b.type == "text"), "")

response = client.messages.create(
    model=MODEL,
    max_tokens=512,
    messages=[{"role": "user", "content": "Reply in one sentence to confirm the API connection is working."}]
)

print(get_text(response))
print(f"Model: {response.model}")
print(f"Input tokens: {response.usage.input_tokens}")
print(f"Output tokens: {response.usage.output_tokens}")

Terminal menampilkan respons API Claude Fable 5 dan jumlah penggunaan token

Respons API Fable 5 dan token. Gambar oleh Penulis.

response.content adalah daftar content block, bukan string biasa. Karena perilaku adaptive thinking yang disebutkan di atas, block pertama sering kali adalah thinking block, dan content[0].text dapat memicu AttributeError. Helper get_text memfilter berdasarkan block.type == "text" sebagai gantinya.

Objek usage memberi Anda jumlah token input dan output setelah setiap permintaan. response.model melaporkan model mana yang menjawab, yang penting saat fallback dikonfigurasi.

Mengendalikan kedalaman penalaran dengan effort

Parameter effort yang dilewatkan di dalam output_config adalah kendali untuk kedalaman penalaran tersebut.

response = client.messages.create(
    model=MODEL,
    max_tokens=2048,
    output_config={"effort": "high"},  # low | medium | high | xhigh | max
    messages=[{"role": "user", "content": feature_request}]
)

Default-nya adalah "high". Saya akan mulai dari sana, lalu gunakan "low" atau "medium" saat latensi lebih penting dan "xhigh" atau "max" untuk masalah yang lebih panjang. Effort mengubah berapa banyak thinking token yang dihasilkan model, bukan apakah ia menghasilkannya.

Menambahkan System Prompt untuk Peran Asisten

Parameter system adalah field tingkat atas dalam permintaan, terpisah dari array messages . Apa pun yang Anda letakkan di sana berlaku untuk setiap giliran, yang berarti ia bekerja lebih banyak per kata daripada instruksi satu giliran.

Untuk Developer Task Assistant, saya menjaga system prompt tetap sempit: kembalikan rencana rekayasa yang ringkas alih-alih analisis luas.

SYSTEM_PROMPT = """You are a senior software engineer who reviews feature requests and returns
implementation plans. For every request:
- Write a one sentence technical summary
- List the implementation steps in order
- Name the files or components most likely to change
- Call out at most three risks or edge cases
- Suggest concrete tests
Do not narrate options you won't pursue. Act on what you know; ask only when key details are missing."""

Instruksi terakhir itu penting. Fable 5 bisa menambahkan terlalu banyak perencanaan untuk permintaan sederhana, jadi prompt membatasi keluaran sebelum respons melenceng.

Lewatkan system prompt bersama setiap panggilan.

response = client.messages.create(
    model=MODEL,
    max_tokens=2048,
    system=SYSTEM_PROMPT,
    messages=[{"role": "user", "content": feature_request}]
)

Prefilling giliran asisten tidak didukung di Fable 5. Jika Anda memiliki kode Claude lama yang memulai giliran asisten dengan {"role": "assistant", "content": "{"} untuk memaksa keluaran JSON, hapus itu. Pola tersebut mengembalikan 400 di Fable 5, yang mudah menjebak saat mem-porting kode lama.

Membangun Alur Kerja Perencanaan Fitur

Merencanakan fitur berarti melacak arsitektur, mode kegagalan, dan strategi pengujian dalam satu respons. Ini adalah alur kerja pertama yang baik karena cukup kecil untuk diperiksa, tetapi bukan sekadar prompt mainan.

feature = (
    "Add password reset to our Django app. "
    "Users should receive a token via email and land on a form to set a new password."
)

response = client.messages.create(
    model=MODEL,
    max_tokens=2048,
    output_config={"effort": "high"},
    system=SYSTEM_PROMPT,
    messages=[{"role": "user", "content": feature}]
)

print(get_text(response))

Respons khas mencakup pembuatan token, pengiriman email, penanganan formulir, dan pembersihan kedaluwarsa dalam satu kali proses.

Mengembalikan Keluaran JSON Terstruktur dengan Claude Fable 5

Teks biasa memadai di terminal. Setelah rencana perlu menjadi data aplikasi, keluaran terstruktur lebih mudah digunakan. Claude API mendukung keluaran terstruktur melalui client.messages.parse() dan model Pydantic, dan ini berfungsi dengan claude-fable-5.

Definisikan bentuk keluaran yang diharapkan sebagai model Pydantic.

from pydantic import BaseModel

class FeaturePlan(BaseModel):
    summary: str
    steps: list[str]
    files: list[str]
    risks: list[str]
    tests: list[str]

Lewatkan kelas sebagai output_format. SDK mengubahnya menjadi skema JSON, menjalankan constrained decoding di server Anthropic, dan mengembalikan objek bertipe di response.parsed_output.

response = client.messages.parse(
    model=MODEL,
    max_tokens=2048,
    system=SYSTEM_PROMPT,
    messages=[{"role": "user", "content": feature}],
    output_format=FeaturePlan
)

plan = response.parsed_output
if plan is not None:
    print(f"Summary: {plan.summary}")
    print(f"Steps: {plan.steps}")

Periksa parsed_output apakah None sebelum menggunakannya. Penolakan saat streaming atau pemotongan awal max_tokens dapat membuatnya kosong. Jalur ini juga menghindari masalah thinking block karena Anda membaca parsed_output alih-alih masuk ke content.

Jika Anda membutuhkan keluaran terstruktur pada model yang tidak mendukungnya di API, mintalah JSON di prompt dan validasi dengan FeaturePlan.model_validate_json(text), coba ulang sekali jika gagal. Jangan memasangkan keluaran terstruktur dengan prefilling giliran asisten; Fable 5 mengembalikan 400 untuk pola itu.

Melakukan Streaming Respons dari Claude Fable 5

Perilaku adaptive thinking yang sama dapat meningkatkan waktu tunggu sebelum token pertama pada prompt yang kompleks. Streaming mencetak potongan teks saat tiba.

Gunakan context manager client.messages.stream() . stream.text_stream menghasilkan potongan teks dan otomatis melewati thinking block.

with client.messages.stream(
    model=MODEL,
    max_tokens=2048,
    system=SYSTEM_PROMPT,
    messages=[{"role": "user", "content": feature}]
) as stream:
    for chunk in stream.text_stream:
        print(chunk, end="", flush=True)

final = stream.get_final_message()
print(f"\nInput tokens: {final.usage.input_tokens}")
print(f"Output tokens: {final.usage.output_tokens}")

Panggil get_final_message() setelah blok with ditutup, bukan di dalamnya. Di situlah alasan berhenti dan hitungan penggunaan berada.

Streaming dan keluaran terstruktur bisa berdampingan, tetapi kumpulkan respons penuh sebelum Anda mem-parsenya. JSON parsial bukan JSON yang valid.

Menambahkan Penggunaan Tool (Function Calling)

Penggunaan tool memungkinkan model meminta informasi alih-alih hanya mengandalkan prompt. Saya menjaga tool pertama tetap kecil: read_project_file. Model meminta membaca file, kode Anda membacanya, dan model menggunakan temuan tersebut.

Tool loop memiliki bentuk tetap. Claude mengembalikan stop_reason: "tool_use" saat ingin memanggil tool, Anda mengeksekusi tool dan mengirim kembali block tool_result, dan loop berlanjut hingga stop_reason adalah "end_turn" atau "refusal".

Diagram alur loop penggunaan tool Claude dari permintaan tool hingga jawaban akhir

Loop tool dari permintaan hingga jawaban. Gambar oleh Penulis.

READ_FILE_TOOL = {
    "name": "read_project_file",
    "description": "Read the contents of a file in the project.",
    "input_schema": {
        "type": "object",
        "properties": {
            "path": {"type": "string", "description": "Relative path to the file"}
        },
        "required": ["path"]
    }
}

messages = [{"role": "user", "content": feature}]

while True:
    response = client.messages.create(
        model=MODEL,
        max_tokens=2048,
        system=SYSTEM_PROMPT,
        tools=[READ_FILE_TOOL],
        messages=messages
    )

    if response.stop_reason in ("end_turn", "refusal"):
        break

    if response.stop_reason == "tool_use":
        tool_block = next(b for b in response.content if b.type == "tool_use")

        # Execute the tool locally
        try:
            with open(tool_block.input["path"]) as f:
                result = f.read()[:2000]
        except FileNotFoundError:
            result = f"File not found: {tool_block.input['path']}"

        messages.append({"role": "assistant", "content": response.content})
        messages.append({
            "role": "user",
            "content": [{
                "type": "tool_result",
                "tool_use_id": tool_block.id,
                "content": result
            }]
        })

# Read the final answer
text_block = next((b for b in response.content if b.type == "text"), None)
print(text_block.text if text_block else "No text in final response")

Model tidak pernah mengeksekusi kode ini. Model mengeluarkan permintaan terstruktur dengan nama tool dan input JSON; aplikasi Anda yang menjalankan pembacaan file. Jangan menambahkan teks percakapan dalam giliran pengguna yang sama dengan block tool_result , atau model mungkin berhenti alih-alih melanjutkan rencana.

Memperkirakan Penggunaan Token dan Biaya API Claude Fable 5

Sebelum mengubah ini menjadi aplikasi, periksa bentuk biayanya. Fable 5 berbiaya $10 per sejuta token input dan $50 per sejuta token output. Output biasanya menjadi pos terbesar: rencana 2.000 token berharga $0,10 untuk output saja.

Berikut tabel harga di seluruh keluarga Anthropic.

Model

Input (per MTok)

Output (per MTok)

Catatan

Haiku 4.5

$1

$5

Tercepat, kualitas mendekati frontier

Sonnet 4.6

$3

$15

Keseimbangan kuat antara kecepatan dan kedalaman

Opus 4.8

$5

$25

Tingkat Opus teratas

Fable 5

$10

$50

Model paling andal yang dirilis luas

Caching prompt dapat mengurangi biaya pembacaan system prompt yang berulang. Setelah block system prompt dicache, pembacaan berulang berbiaya $1 per sejuta token, bukan $10. Block minimum yang dapat dicache adalah 512 token di Claude API.

# Count tokens before sending an expensive request
count = client.messages.count_tokens(
    model=MODEL,
    system=SYSTEM_PROMPT,
    messages=[{"role": "user", "content": feature}]
)
print(f"Estimated input tokens: {count.input_tokens}")

# Calculate actual cost after each request
INPUT_PRICE = 10.0 / 1_000_000
OUTPUT_PRICE = 50.0 / 1_000_000

response = client.messages.create(...)
cost = (
    response.usage.input_tokens * INPUT_PRICE +
    response.usage.output_tokens * OUTPUT_PRICE
)
print(f"Total cost: ${cost:.6f}")

count_tokens tidak berbiaya uang dan tidak dihitung terhadap batas laju output Anda. Gunakan untuk menyaring permintaan mahal. Untuk pekerjaan yang tidak memerlukan interaksi, Batch API memangkas harga input dan output menjadi setengahnya.

Fable 5 menggunakan tokenizer yang diperkenalkan dengan Opus 4.7, yang dapat menghasilkan kira-kira 30% lebih banyak token pada teks yang sama dibanding model Claude yang lebih lama. Perhitungkan ini saat migrasi dari Claude 4.6.

Menangani Penolakan dan Fallback Model

Fable 5 menjalankan classifier keamanan bersamaan dengan generasi. Saat salah satunya terpicu, API mengembalikan HTTP 200 yang berhasil, bukan error, dan satu-satunya sinyal adalah stop_reason: "refusal". Penanganan error yang hanya menangkap exception akan melewatkan penolakan seluruhnya, dan aplikasi Anda akan diam-diam tidak mengembalikan apa pun.

Selalu periksa alasan berhenti.

response = client.messages.create(
    model=MODEL,
    max_tokens=2048,
    system=SYSTEM_PROMPT,
    messages=[{"role": "user", "content": user_input}]
)

if response.stop_reason == "refusal":
    category = (
        response.stop_details.category
        if response.stop_details else "policy"
    )
    print(f"Request declined ({category}). Please rephrase and try again.")
else:
    print(get_text(response))

Dalam pengujian saya, Fable 5 sering menolak permintaan batas abu-abu dalam teks biasa, mengembalikan end_turn normal. Penolakan classifier keras, dengan stop_reason: "refusal" dan content kosong, lebih jarang. Pemeriksaan di atas menangani jalur itu agar aplikasi Anda tidak diam-diam tidak mengembalikan apa pun.

stop_details.category dapat berupa "cyber", "bio", atau "reasoning_extraction". Yang terakhir menyala ketika prompt mencoba mengekstrak chain-of-thought internal model. Untuk tool pengembang yang memeriksa pemindai keamanan jaringan atau pipeline data biologis, Anda mungkin terkena false positive classifier. Mengubah redaksi agar tugas jelas bersifat defensif sering kali menyelesaikannya.

Untuk sistem terpasang, Anda dapat mengonfigurasi fallback otomatis ke Opus 4.8 dengan fallbacks beta yang berjalan di server dalam Claude API dan Claude Platform di AWS. Itu tidak sama dengan Amazon Bedrock: Bedrock, Vertex AI, dan Foundry memerlukan logika fallback di aplikasi Anda.

response = client.beta.messages.create(
    model=MODEL,
    max_tokens=2048,
    system=SYSTEM_PROMPT,
    messages=[{"role": "user", "content": user_input}],
    fallbacks=[{"model": "claude-opus-4-8"}],
    betas=["server-side-fallback-2026-06-01"]
)

Permintaan yang ditolak yang tidak menghasilkan output tidak ditagihkan. Penolakan di tengah streaming ditagihkan untuk apa pun yang dihasilkan sebelum classifier aktif.

Menggunakan Claude Fable 5 dengan Input Gambar (Vision)

Jika aplikasi Anda hanya menangani teks, Anda bisa melewati bagian ini. Bagian ini terpisah dari alur perencanaan, tetapi menggunakan bentuk Messages API yang sama. Fable 5 menerima input gambar sebagai block yang dikodekan base64 atau URL. Salah satu kasus penggunaan adalah ulasan tangkapan layar UI terhadap kebutuhan fitur.

import base64

with open("login_form.png", "rb") as f:
    img_data = base64.standard_b64encode(f.read()).decode("utf-8")

response = client.messages.create(
    model=MODEL,
    max_tokens=1024,
    messages=[{
        "role": "user",
        "content": [
            {
                "type": "image",
                "source": {
                    "type": "base64",
                    "media_type": "image/png",
                    "data": img_data
                }
            },
            {
                "type": "text",
                "text": "Review this UI against the requirement: add a 'Forgot password' link below the login button. Is it present? If not, describe what needs to change."
            }
        ]
    }]
)
print(get_text(response))

Gambar ukuran penuh berbiaya sekitar 4.784 token input terlepas dari apa yang ditampilkan, jadi ubah ukuran atau kompres sebelum mengirim jika Anda tidak membutuhkan resolusi penuh. Fable 5 memproses gambar hingga lebar 2.576 px dan menskalakan turun apa pun yang lebih besar. Format yang didukung adalah JPEG, PNG, GIF, dan WebP.

Mengubah Alur Kerja Menjadi Endpoint FastAPI

Pada titik ini, skrip lokal telah memiliki alur kerja lengkap. Bungkus asisten dalam route FastAPI agar frontend atau layanan dapat memanggilnya. Gunakan AsyncAnthropic di dalam route async, karena klien sinkron memblokir event loop. Inisialisasi sekali saat startup, bukan per permintaan.

from contextlib import asynccontextmanager
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
from anthropic import AsyncAnthropic

client_instance: AsyncAnthropic | None = None

@asynccontextmanager
async def lifespan(app: FastAPI):
    global client_instance
    client_instance = AsyncAnthropic()
    yield
    await client_instance.close()

app = FastAPI(lifespan=lifespan)

class PlanRequest(BaseModel):
    feature_request: str

@app.post("/plan")
async def create_plan(body: PlanRequest):
    response = await client_instance.messages.create(
        model="claude-fable-5",
        max_tokens=2048,
        system=SYSTEM_PROMPT,
        messages=[{"role": "user", "content": body.feature_request}]
    )

    if response.stop_reason == "refusal":
        raise HTTPException(status_code=400, detail="Request declined by safety classifier.")

    return {
        "plan": get_text(response),
        "input_tokens": response.usage.input_tokens,
        "output_tokens": response.usage.output_tokens
    }

Jalankan dengan uvicorn app:app --reload dan uji endpoint /plan melalui dokumentasi FastAPI di http://localhost:8000/docs.

FastAPI docs mengonfirmasi endpoint berfungsi. Video oleh Penulis.

Jangan pernah menerima kunci API dari body permintaan frontend. Kunci berada di server, dibaca dari lingkungan, dan tidak pernah menyentuh kode klien.

Pertimbangan Deployment untuk Claude API

Endpoint di atas berfungsi secara lokal. Periksa ini sebelum Anda menerapkan pola yang sama.

  • Kunci dan rahasia. Kunci API berada di server sebagai variabel lingkungan, bukan di repositori Anda atau file konfigurasi yang di-commit.

  • Batas laju dan retry. HTTP 429 berarti Anda mencapai batas laju. HTTP 529 berarti infrastruktur Anthropic kelebihan beban. SDK melakukan retry dua kali secara default; tambahkan jitter dan batas empat hingga lima percobaan untuk sistem terpasang.

  • Kontrol biaya. Catat jumlah token input dan output pada setiap permintaan.

  • Penanganan penolakan. Perlakukan stop_reason: "refusal" sebagai status aplikasi, bukan error. Lacak pola prompt yang memicu false positive.

  • Manajemen konteks. Jendela konteks besar, tetapi sesi tool yang panjang cepat menumpuk riwayat. Pantau input_tokens per permintaan dan pertimbangkan memangkas hasil tool lama setelah tidak lagi dibutuhkan.

  • Retensi data. Bagian detail model mencatat bahwa Fable 5 adalah Covered Model dengan retensi wajib 30 hari. Jika itu masalah kepatuhan, gunakan model lain.

  • Validasi keluaran terstruktur. Periksa bahwa response.parsed_output bukan None sebelum mengindeks. Jika Anda memvalidasi JSON sendiri, bungkus model_validate_json dalam try/except dan coba ulang sekali pada ValidationError.

  • ID permintaan. Catat response._request_id untuk setiap panggilan Fable 5. Tim support membutuhkannya untuk melacak permintaan tertentu.

Kapan Sebaiknya Anda Menggunakan Claude Fable 5?

Setelah membangun alur kerja, pilihan model tetap merupakan keputusan terpisah. Aturan saya: Gunakan Fable 5 hanya ketika jawaban yang salah atau dangkal akan lebih mahal daripada permintaannya.

Fable 5 cocok untuk tugas dengan banyak bagian yang saling terhubung. Anthropic melaporkan deployment awal yang menyelesaikan migrasi di seluruh codebase 50 juta baris dalam satu hari. Klaim semacam itu tidak berarti setiap aplikasi harus diarahkan ke Fable 5. Itu berarti model ini ditujukan untuk pekerjaan di mana konteks panjang dan perencanaan sama-sama penting. Use case lainnya:

  • Perencanaan perangkat lunak dengan beberapa langkah, di mana kesalahan arsitektur berbiaya mahal
  • Tinjauan dokumen berkonteks panjang dengan ketergantungan antarbagian
  • Tugas pengodean agentic yang menjalankan banyak panggilan tool
  • Debugging di mana akar masalah memerlukan pelacakan efek tidak langsung
  • Tugas di mana jawaban yang salah akan lebih mahal daripada biaya permintaan

Saya akan menghindarinya untuk:

  • Ringkasan dasar atau klasifikasi
  • Jawaban FAQ singkat
  • Pipeline di mana biaya bertambah di ribuan permintaan per hari

Evaluasi kode Cognition.ai menemukan Fable 5 pada effort xhigh mencetak 29,3% pada set evaluasi mereka, dibandingkan 13,4% untuk Opus 4.8. Itu satu benchmark. Uji yang berguna adalah apakah tugas Anda membaik saat Anda menukar model; perbandingan Claude Fable 5 vs GPT-5.5 kami membahas trade-off tersebut secara terpisah.

Aplikasi Streamlit dalam repo ini memberi Anda cara untuk membandingkannya pada prompt Anda sendiri: tempelkan permintaan fitur, saksikan rencana mengalir kembali, dan periksa biaya token. Sumbernya ada di GitHub. Rekaman layar di bawah menunjukkan alur kerjanya.

Aplikasi Streamlit melakukan streaming rencana. Video oleh Penulis.

Kesimpulan

Pada titik ini, Developer Task Assistant dari awal telah terhubung ke Claude API baik dalam skrip lokal maupun route FastAPI.

Pola permintaan yang sama berlaku untuk desain asisten lainnya. Untuk asisten code review, tukar system prompt dan arahkan tool file ke diff. Untuk agen refactoring, bangun riwayat percakapan ke dalam tool loop.

Untuk sesi yang diperpanjang, cache system prompt dan definisi tool bersama-sama untuk mengurangi biaya input berulang.

Untuk latar belakang lebih lanjut tentang Claude dan Anthropic API, kursus Introduction to Claude Models kami membahas keluarga model dan alur kerja API. Jika Anda ingin berlatih sisi pengodean, kursus Software Development with Cursor kami membahas prompting, refactoring, pengujian, dan alur kerja agen.


Khalid Abdelaty's photo
Author
Khalid Abdelaty
LinkedIn

Saya seorang data engineer dan pembangun komunitas yang bekerja lintas pipeline data, cloud, dan perkakas AI sambil menulis tutorial praktis dan berdampak tinggi untuk DataCamp dan pengembang yang sedang berkembang.

FAQ

Bagaimana jika panggilan tool terputus?

Jika stop_reason adalah "max_tokens" saat model sedang membangun block tool_use , jangan jalankan input tool parsial. Coba ulang dengan nilai max_tokens yang lebih tinggi atau prompt yang lebih sempit. Saya memeriksa ini sebelum mengeksekusi tool lokal karena JSON setengah jadi lebih buruk dibanding tanpa panggilan tool.

Apakah caching prompt membantu dengan batas laju?

Ya, tetapi hanya untuk sebagian gambaran limit. Pembacaan yang dicache ditagihkan 10% dari harga input normal dan, untuk model Claude saat ini, tidak dihitung terhadap input tokens per minute. Anda tetap perlu memperhatikan requests per minute dan output tokens per minute. Catat cache_creation_input_tokens dan cache_read_input_tokens agar ini muncul di angka Anda sendiri.

Bisakah saya menggunakan fallback di dalam Batch API?

Tidak. Fable 5 berfungsi dengan Message Batches, dan permintaan batch memangkas harga input dan output menjadi setengahnya, tetapi parameter fallbacks tidak didukung di sana. Untuk pekerjaan batch, perlakukan setiap hasil sebagai rekornya sendiri dan periksa stop_reason: "refusal" dalam output.

Apa yang harus saya catat saat debugging panggilan API?

Catat ID permintaan, nama model, alasan berhenti, token input, token output, dan field token cache. Untuk batas laju, simpan juga nilai retry-after pada respons 429 dan header anthropic-ratelimit-* apa pun yang diekspos klien Anda. Ini terdengar membosankan sampai Anda perlu menjelaskan satu permintaan yang mahal atau gagal nanti.

Berapa banyak gambar yang bisa saya kirim?

Dokumentasi vision mendukung beberapa sumber gambar, termasuk block base64, URL, dan Files API. Mereka juga mencantumkan hingga 600 gambar per permintaan, tetapi saya tetap akan menjaga versi pertama tetap kecil. Token gambar cepat bertambah, dan sebagian besar tugas ulasan UI tidak membutuhkan ratusan tangkapan layar.

Topik
Kecerdasan Buatan

Belajar bersama DataCamp

Kursus

Claude Code 101

3 jam
27.9K
Learn how to use Claude Code effectively in your daily development workflows.
Lihat DetailRight Arrow
Mulai Kursus
Lihat SelengkapnyaRight Arrow
Terkait

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

blogs

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

blogs

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

blogs

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

Lihat SelengkapnyaLihat Selengkapnya