fable-5
7/6/2026, 9:58:05 PM · 15 tests · run b1a6b6e0-f6e7-48e7-a3c2-1e6abe6873e0
basic-generation
okPlain streaming generation with a soft length constraint (~100 words).
- Produced 100 words (243 output tokens).
Result
{
"wordCount": 100,
"outputTokens": 243
}anthropic:claude-fable-5
usage-cost
okAsserts usage tokens populate and cost computes from the ChatReq contract.
- in=20 out=11 rt=0 cost=$0.000750 (paid).
Result
{
"inputTokens": 20,
"outputTokens": 11,
"reasoningTokens": 0,
"costUsd": 0.00075,
"paid": true
}anthropic:claude-fable-5
streaming-structure
okAsserts a streaming call captures events that reconstruct into the final text.
- mode=streaming, 10 stream events, 1 text block(s), 35 chars.
Result
{
"mode": "streaming",
"streamEventCount": 10,
"textBlocks": 1,
"textLen": 35
}anthropic:claude-fable-5
complete-stream-parity
okSame prompt via stream() and complete() both return valid, matching results.
- stream="Paris" · complete="Paris"
Result
{
"streamText": "Paris",
"completeText": "Paris"
}anthropic:claude-fable-5
anthropic:claude-fable-5
reasoning-conformance
okAsserts the model's reasoning knob behaves as its reasoning-config declares.
- Class (from reasoning-config): always-on.
- reasoningTokens=122, outputTokens=621.
Result
{
"class": "always-on",
"reasoningTokens": 122,
"outputTokens": 621
}anthropic:claude-fable-5
single-tool-call
okOffers a calculator tool and checks the model calls it for an arithmetic question.
- Called "multiply" with args {"a":23,"b":17}.
Result
{
"toolCalled": true,
"toolName": "multiply",
"args": {
"a": 23,
"b": 17
},
"correct": true
}anthropic:claude-fable-5
tool-loop
okForces a tool call, feeds the result back, and checks the continuation uses it.
- step1 (required): multiply({"a":23,"b":17}) → step2: "The product of 23 multiplied by 17 is **391**."
Result
{
"toolName": "multiply",
"args": {
"a": 23,
"b": 17
},
"product": 391,
"continuation": "The product of 23 multiplied by 17 is **391**.",
"usesResult": true,
"forced": true
}anthropic:claude-fable-5
anthropic:claude-fable-5
web-search
okEnables server-side web search and checks invocation counts, the per-request cost surcharge, and provider-executed output blocks.
- Ran 1 web search(es); surcharge 0.0100 USD on top of token cost.
Result
{
"searches": 1,
"surchargeUsd": 0.01
}anthropic:claude-fable-5
reasoning-tool-continuity
okReasoning model: continuity token captured on a tool call and replayed so the follow-up succeeds.
- Step 1 didn't engage reasoning (adaptive discretion) — signature not exercised this run.
- reasoned=false, anthropic token —; follow-up → "The current balance for account **acme-42** is **$1,234.00**. ## Calc"
Result
{
"signatureType": "anthropic",
"tokenCaptured": false,
"reasoned": false,
"answered": true,
"continuation": "The current balance for account **acme-42** is **$1,234.00**.\n\n## Calculation\n\nUsing compound interest: **FV = P × (1 + r)ⁿ**\n\n- P = $1,234\n"
}anthropic:claude-fable-5
anthropic:claude-fable-5
prompt-cache
okRepeat a large prefix; assert cache-read tokens are reported and cost drops.
- anthropic cache; cacheRead per attempt [14458]; hit=yes.
Result
{
"cacheStyle": "anthropic",
"cacheReadPerAttempt": [
14458
],
"cacheReadTokens": 14458,
"cacheHitCost": 0.018668
}anthropic:claude-fable-5
anthropic:claude-fable-5
json-output
okRequests a strict JSON object and checks it parses with the required keys.
- Output parsed as JSON.
- All required keys present.
- Output is bare JSON (no leading prose/fence).
Result
{
"parsed": {
"name": "Anthropic",
"founded": 2021,
"headquarters": "San Francisco, California, United States"
},
"validJson": true,
"missingKeys": [],
"bareJson": true
}anthropic:claude-fable-5
summarize-memex
okSummarizes an ~11k-token essay to ~500 words (long input, reasoning minimized).
- Read ~14533 input tokens, wrote 512 words (1167 output tokens) in 19914ms.
Result
{
"wordCount": 512,
"inputTokens": 14533,
"outputTokens": 1167,
"latencyMs": 19914
}anthropic:claude-fable-5
truncation
okTiny maxTokens on a long prompt yields finishReason:"length".
- finishReason=length, out=100 tokens.
Result
{
"finishReason": "length",
"outputTokens": 100
}anthropic:claude-fable-5
streaming-only-rejection
okStreaming-only models reject complete(); all others accept it.
- streamingOnly=false; complete() succeeded.
Result
{
"streamingOnly": false,
"completeThrew": false
}abort
okA pre-aborted signal rejects the call (abort is threaded + honored).
- pre-aborted signal → rejected (AbortError).
Result
{
"rejected": true,
"errorName": "AbortError"
}