This guide shows how to layer the prompt in code so you can reuse it in email tools, support macros, or app assistants. No separate Fable model plan. Just Opus with a different first instruction. I tested this on a MacBook and the shift felt about 90 percent there side by side.
You want Claude’s calm Fable voice without switching models. The trick is simple. Paste the leaked Fable 5 system prompt into a Claude Opus chat, then run the same task again. Opus starts using sectioned replies, short examples, and that steady cadence.
This guide shows how to layer the prompt in code so you can reuse it in email tools, support macros, or app assistants. No separate Fable model plan. Just Opus with a different first instruction. I tested this on a MacBook and the shift felt about 90 percent there side by side.
First, install the Anthropics SDK and set your key. On macOS or Linux, use pip. On Windows, use PowerShell with setx. Replace the key below with your own.
bash
pip install anthropic
export ANTHROPIC_API_KEY="sk-ant-abc1234567890deadbeef"
# Windows PowerShell
setx ANTHROPIC_API_KEY "sk-ant-abc1234567890deadbeef"
Create a short script that runs the same task with and without the system prompt. Use the Opus model id claude-3-opus-20240229. For the system, paste the Fable 5 prompt you have. If you do not have it, use the safe template here as a stand-in that drives sections and examples.
Verification: run once with no system, then again with the Fable system. You should see the second answer split into titled sections like Overview, Steps, and Example. Stop here if you only need the quick test. The full guide below covers multi-shot anchors, stop sequences, and production settings.
You want Claude’s calm Fable voice without switching models. The trick is simple. Paste the leaked Fable 5 system prompt into a Claude Opus chat, then run the same task again. Opus starts using sectioned replies, short examples, and that steady cadence.
This guide shows how to layer the prompt in code so you can reuse it in email tools, support macros, or app assistants. No separate Fable model plan. Just Opus with a different first instruction. I tested this on a MacBook and the shift felt about 90 percent there side by side.
Setup
macOS
- Ensure Python 3.11+
- Install SDK and set your key
bash
python3 --version
pip3 install anthropic
export ANTHROPIC_API_KEY="sk-ant-abc1234567890deadbeef"
Linux (Ubuntu/Debian)
bash
sudo apt-get update
sudo apt-get install -y python3 python3-pip
pip3 install --user anthropic
export ANTHROPIC_API_KEY="sk-ant-abc1234567890deadbeef"
Windows 11 (PowerShell)
bash
py --version
py -m pip install anthropic
setx ANTHROPIC_API_KEY "sk-ant-abc1234567890deadbeef"
# restart the terminal to load the env var
Minimal Python script
Create opus_fable.py with two calls: baseline and Fable-styled.
py
import os
from anthropic import Anthropic
client = Anthropic(api_key=os.environ.get("ANTHROPIC_API_KEY"))
TASK = "Draft a 4-paragraph product update email about a new dark mode setting."
# If you have the leaked Fable 5 system prompt, paste it here.
# Safe template that drives the same cadence:
FABLE_SYSTEM = (
"Write in a calm, teaching tone. Use short titled sections.\n"
"Structure: Overview, Steps, Example, Notes, Takeaway.\n"
"Prefer clear sentences over flourish. Show a tiny illustrative story in Example.\n"
"State assumptions. End with a one-line takeaway. No emojis."
)
print("== Plain Opus ==")
plain = client.messages.create(
model="claude-3-opus-20240229",
max_tokens=450,
temperature=0.4,
messages=[{"role": "user", "content": TASK}],
)
print(plain.content[0].text)
print("\n== Opus with Fable system ==")
fable = client.messages.create(
model="claude-3-opus-20240229",
max_tokens=450,
temperature=0.3,
system=FABLE_SYSTEM,
messages=[{"role": "user", "content": TASK}],
)
print(fable.content[0].text)
Node.js alternative
If you prefer JavaScript, install the SDK and run a small script.
bash
npm init -y
npm install anthropic
ts
// save as opus_fable.ts or opus_fable.js
import Anthropic from "anthropic";
const client = new Anthropic({ apiKey: process.env.ANTHROPIC_API_KEY });
const TASK = "Draft a 4-paragraph product update email about a new dark mode setting.";
const FABLE_SYSTEM = [
"Write in a calm, teaching tone.",
"Use short titled sections: Overview, Steps, Example, Notes, Takeaway.",
"Include one tiny story in Example. End with a one-line takeaway.",
].join(" ");
async function run() {
console.log("== Plain Opus ==");
let r1 = await client.messages.create({
model: "claude-3-opus-20240229",
max_tokens: 450,
temperature: 0.4,
messages: [{ role: "user", content: TASK }],
});
console.log(r1.content[0].text);
console.log("\n== Opus with Fable system ==");
let r2 = await client.messages.create({
model: "claude-3-opus-20240229",
max_tokens: 450,
temperature: 0.3,
system: FABLE_SYSTEM,
messages: [{ role: "user", content: TASK }],
});
console.log(r2.content[0].text);
}
run();
Verify
Run the Python script.
bash
python3 opus_fable.py
Expected shape of outputs:
- Plain Opus: a solid email in one or two blocks of prose.
- Opus with Fable system: titled sections like
Overview
...
Steps
1. ...
Example
A customer...
Notes
...
Takeaway
...
If you see those section headers and a small story in Example, the voice shift is in place.
Configuration tips
- Pin the model id. Use claude-3-opus-20240229 to avoid unplanned drift.
- Keep temperature low. 0.2 to 0.4 keeps the cadence tight.
- Add stop sequences to trim trailing chatter. Example:
py
client.messages.create(
model="claude-3-opus-20240229",
max_tokens=800,
temperature=0.3,
stop_sequences=["Takeaway:"],
system=FABLE_SYSTEM,
messages=[{"role":"user","content": TASK}]
)
- Anchor with a micro example. Put a 2 to 3 sentence demo under Example inside the system prompt so the model mirrors the size and tone.
- Separate voice rules from task rules. Keep FABLE_SYSTEM for voice, then pass task-specific constraints in the user message. This keeps reuse clean.
- Watch context size. Very long system prompts reduce room for answers. Trim to the headers that matter and one tiny example.
Troubleshooting
- 401 Unauthorized or invalid key
- Symptom: error: unauthorized or invalid API key - Fix: check the env var and prefix. It should look like sk-ant-... and be exported in the same shell. On Windows, reopen the terminal after setx.
- 400 Invalid request. Unknown model
- Symptom: Model not found - Fix: spell the id exactly claude-3-opus-20240229. Do not use marketing names.
- 429 Rate limit or over capacity
- Symptom: rate_limit_error or over capacity - Fix: back off with sleep and retry, or batch jobs. Lower max_tokens so each call is cheaper and faster.
When it beats default Opus
- Customer emails and changelogs. The sectioned voice lands updates with Overview and Steps that non-technical readers scan fast.
- Internal docs. Planning notes, design briefs, and postmortems stay structured without extra prompting.
- Support macros. The Example slot holds a tiny scenario that agents can edit, which reduces back and forth.
- Onboarding flows. The cadence keeps instructions readable without heavy formatting.
Sources
Want a hand?
Book a 30-min call.
Walk through your stack with us. We'll find the bottleneck and map out the exact wiring you need — free.