← 全部文章
Guide

如何依任務與預算路由 Claude Fable 5、Opus 4.8 與 Sonnet 4.6

A cream-background editorial illustration of three Claude model lanes labeled by abstract icons: a small fast lane, a ba

Anthropic 給前沿自主能力貼上了很硬的價格標籤:Claude Fable 5 在 Claude API 上標價為 每百萬輸入 token 10 美元、每百萬輸出 token 50 美元,而 Sonnet 4.6 是 3/15 美元,Opus 4.8 是 5/25 美元FableSonnetOpus)。這個價差,就是整個產品決策的核心。

如果你把每個寫程式的提示都送去 Fable,那不叫「前沿」。那叫跳過架構設計。

截至 2026 年 6 月 16 日,還有一個可用性上的麻煩:Anthropic 的 Fable 頁面表示 Fable 5 目前不可用,而 Anthropic 表示,在一項涵蓋 Fable 5 與 Mythos 5 的美國政府指令後,已於 6 月 12 日暫停存取(Anthropic statement)。這不會讓路由層變得比較沒用。它只會讓路由層更急迫。你的 app 本來就應該知道,如何在不叫醒工程師的情況下,從 Fable 降級到 Opus 或 Sonnet。

這篇指南會建出那一層:預設用 Sonnet,高風險 production 工作用 Opus,只有在長時間執行的 agent 工作、且正確結果的價值高過 token 帳單時,才用 Fable。

封面風格的價格與能力比較圖表,三個垂直長條分別代表 Sonnet 4.6、Opus 4.8 與 Fable 5;y 軸

路由規則:Fable 是專家,不是預設值

先看一張直白的表。

ModelAPI model IDInput / output priceUse it for
Claude Sonnet 4.6claude-sonnet-4-6每 1M token $3 / $15例行寫程式、review、支援、擷取、多數 agents
Claude Opus 4.8claude-opus-4-8每 1M token $5 / $25production 等級程式碼、複雜 reviews、需要判斷力的 agent 步驟
Claude Fable 5claude-fable-5每 1M token $10 / $50長時間、高價值、且有實際上行空間的 agent 工作

Anthropic 自己的定位也符合這個切分。Sonnet 4.6 被包裝成適合寫程式、agents 與專業工作流程的日常多用途模型,目前在 API beta 中提供 1M-token context window(Anthropic Sonnet)。Opus 4.8 的定位則是嚴肅寫程式、agentic workflows,以及高風險企業任務(Anthropic Opus)。Fable 5 被描述為 Mythos 等級的模型,適合有野心、長時間執行的專案與 agents,能跨階段規劃、委派,並檢查自己的工作(Anthropic Fable)。

這給你一條乾淨的 policy:

  1. 預設用 Sonnet。 多數 prompts 不值得動用每百萬輸出 50 美元的模型。
  2. 失敗代價高時升級到 Opus。 想想 schema migrations、security-sensitive PR review、財務分析、多檔案 refactors。
  3. 只有任務夠大、夠模糊、而且值得更高帳單時才用 Fable。 多天 agent runs、codebase modernization、深度研究包,以及「把這個專案做到完成」這類 workflows。

社群爭論大多集中在第三個桶子。根據被索引的 HN recap,Anthropic 6 月 12 日暫停存取的 HN thread 吸引了超過一千則留言,討論很快分裂成安全、地緣政治,以及到底有沒有人付得起這種價格下的 agentic usage(HN threadrecap reference)。Reddit threads 更直接:開發者抱怨 Claude Code sessions 吃 token、訂閱額度,以及每百萬輸出 50 美元是否把 Fable 推成只有企業才用得起的東西(ClaudeCode discussionChatGPT subreddit discussion)。

多數討論少掉的實際答案是:不要爭論一個全域的「最佳模型」。請依預期價值路由。

Step 1: 用 OneHop 當 Drop-In 存取層

如果你想走最短路徑,就用 OneHop 當 provider layer,並讓你的 app code 保持 provider-neutral。OneHop 的 Fable 頁面列出 anthropic/claude-fable-5,把官方定價與 OneHop 定價並排顯示,並表示新帳號免刷卡可拿 10 美元免費額度(OneHop Fable 5)。目前頁面列出的 Anthropic Messages 支援位置是 https://api.onehop.ai/anthropic;搭配 Anthropic SDK 時就用它。

安裝 SDK:

pip install anthropic
export ONEHOP_API_KEY="your_key_here"

最小呼叫:

from anthropic import Anthropic

client = Anthropic(
    api_key=os.environ["ONEHOP_API_KEY"],
    base_url="https://api.onehop.ai/anthropic",
)

message = client.messages.create(
    model="anthropic/claude-fable-5",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Plan a safe Rails 6 to Rails 8 migration."}],
)

print(message.content[0].text)

這就是整合點。你的路由層應該放在它上面,決定要送出哪個 model string。

OneHop 在這裡的價值,是那種最好的無聊:一個帳號、一個清楚的模型頁面,以及改 base URL 就好,不必重寫你的應用程式。如果 Fable 暫停或不可用,同一個 router 可以把高階任務指向 Opus,讓產品繼續活著。

如果你只是想取得存取與 credits,從這裡開始:Claude Fable 5 on OneHop,然後從免費 10 美元開始

Step 2: 建一個懂預算的 Router

下面是一個可以直接跑的精簡 Python router。它會估算 request 成本、套用 per-call cap、在 Fable 不可用時 fallback,並讓 Sonnet 維持預設。

import os
from dataclasses import dataclass
from anthropic import Anthropic, APIError, RateLimitError

PRICES = {
    "sonnet": {"model": "claude-sonnet-4-6", "in": 3.00, "out": 15.00},
    "opus": {"model": "claude-opus-4-8", "in": 5.00, "out": 25.00},
    "fable": {"model": "anthropic/claude-fable-5", "in": 10.00, "out": 50.00},
}

@dataclass
class Task:
    kind: str
    prompt: str
    max_output_tokens: int = 2000
    budget_usd: float = 0.25
    high_value: bool = False
    long_running: bool = False
    production_risk: bool = False

def rough_tokens(text: str) -> int:
    return max(1, len(text) // 4)

def estimate_cost_usd(model_key: str, input_tokens: int, output_tokens: int) -> float:
    price = PRICES[model_key]
    return (input_tokens / 1_000_000 * price["in"]) + (output_tokens / 1_000_000 * price["out"])

def choose_model(task: Task) -> str:
    if task.high_value and task.long_running:
        return "fable"
    if task.production_risk or task.kind in {"migration", "security_review", "architecture"}:
        return "opus"
    return "sonnet"

def route_with_budget(task: Task) -> list[str]:
    first = choose_model(task)
    fallbacks = {
        "fable": ["fable", "opus", "sonnet"],
        "opus": ["opus", "sonnet"],
        "sonnet": ["sonnet"],
    }[first]

    input_tokens = rough_tokens(task.prompt)
    return [
        key for key in fallbacks
        if estimate_cost_usd(key, input_tokens, task.max_output_tokens) <= task.budget_usd
    ] or ["sonnet"]

def run(task: Task) -> str:
    client = Anthropic(
        api_key=os.environ["ONEHOP_API_KEY"],
        base_url="https://api.onehop.ai/anthropic",
    )

    last_error = None
    for key in route_with_budget(task):
        try:
            response = client.messages.create(
                model=PRICES[key]["model"],
                max_tokens=task.max_output_tokens,
                messages=[{"role": "user", "content": task.prompt}],
            )
            return response.content[0].text
        except (APIError, RateLimitError) as exc:
            last_error = exc
            continue

    raise RuntimeError(f"All model routes failed: {last_error}")

if __name__ == "__main__":
    task = Task(
        kind="migration",
        prompt="Create a step-by-step plan to migrate a 200k-line Django app from 3.2 to 5.x.",
        max_output_tokens=3000,
        budget_usd=0.20,
        production_risk=True,
    )
    print(run(task))

重點不是 token estimator。重點是 policy boundary。你的 codebase 需要有一個地方,讓產品明確說出:「這個任務可以花更多錢,因為結果很重要。」

架構流程草圖,顯示 app request 進入 router,接著通過標示為 task type、es 的 policy checks

Step 3: 加上符合真實 Agent 行為的 Caps

Agent 成本很尖。一次 chat completion 很容易估價。一個 coding agent 可能會檢查檔案、呼叫工具、重寫、測試、重試、摘要。有個 Reddit thread 聲稱一次 Fable run 在一小時內燒掉數百萬 tokens;把它當軼事就好,但模式本身夠真實:長視野 agents 會透過迴圈放大 token 用量(Reddit)。

加上三種 caps:

  • Per-call cap: 如果估算成本超過 request budget,就拒絕或降級。
  • Per-task cap: 即使個別 calls 都合法,也要在達到 dollar limit 後停止 agent。
  • Per-user 或 per-workspace cap: 防止某個團隊燒掉共用帳號。

在 production 中,把 spend 存在資料庫表格裡,key 用 workspace_idtask_idmodel。不要只依賴 vendor dashboards。它們是拿來做帳務對帳的,不是即時產品控制。

也要積極使用 prompt caching。Anthropic 表示 Fable 保留既有 prompt caching 的 90% input-token discount,而 Sonnet 與 Opus 頁面也列出 prompt caching 最多可省 90%(FableSonnetOpus)。快取那些穩定的部分:repo map、coding standards、API docs、schema summaries,以及長篇 product specs。不要快取易變的使用者指令。

一個好的路由層,應該為每次呼叫記錄這些欄位:

{
  "task_kind": "migration",
  "chosen_model": "opus",
  "fallback_from": "fable",
  "estimated_cost_usd": 0.18,
  "budget_usd": 0.20,
  "input_tokens": 12000,
  "max_output_tokens": 3000
}

這份 log,就是你回答 CFO、staff engineer,以及那個問 agent 為什麼停下來的使用者時的依據。

Step 4: 把 Fallback 當成產品行為

Fable 有兩種 fallback 需要規劃。

第一種是一般基礎設施 fallback:模型不可用、rate limit、timeout、provider issue。今天的 Fable 狀態證明這件事很重要。Anthropic 表示,其他模型的存取沒有受到 6 月 12 日指令影響(Anthropic),所以一個好的 app 應該能透過 Opus 或 Sonnet 繼續工作。

第二種是 safety fallback。Anthropic 表示,Fable 會把部分被標記的 cybersecurity 與 biology requests 路由到 Opus 4.8,而且使用者不會為被重新路由的 requests 支付 Fable 價格(Anthropic Fable)。Launch post 表示,這些 safeguards 平均在不到 5% 的 sessions 中觸發,並預期會有一些 false positives(Anthropic launch)。

不要對使用者隱藏這件事。如果你的 security-review product 要求 Fable,卻得到 Opus 行為,UI 應該說類似這樣的話:

「這個 request 的被標記部分使用了較安全的 fallback route。結果可能較不完整。預算影響已調整。」

這比假裝每個答案都來自同一個模型好。它也能保護你的 evals。如果你 benchmark Fable,但一半的 test set 觸發 fallback,那你量到的不只是模型,也同時是在量你的 classifier path。

前後對照 UI mockup,比較不透明的模型選擇器與透明的 routing status panel,後者顯示 chosen mod

本週該 Ship 什麼

先 ship router,再 ship Fable feature flag。

對大多數開發者產品來說,我建議的預設值很簡單:

  • 程式碼解釋、小修、測試、文件: Sonnet 4.6。
  • PR review、production bugs、架構選擇: Opus 4.8。
  • 有清楚商業回報的多小時或多天 agent 工作: Fable 5 可用時使用,並搭配 Opus fallback。
  • 任何無邊界的東西: 使用者設定預算前,不用 Fable。
  • 任何會在大量使用者間重複的東西: 快取長 context 或批次處理。

重點不是崇拜頂級模型。重點是把 frontier tokens 花在真的會改變結果的地方。

Fable 5 可能是本週 HN 上大家爭論的模型。Sonnet 仍然是多數 production traffic 應該開始的地方。Opus 是可靠的中間選項。勝出的實作會是一個無聊的 router:有硬上限、誠實 fallback,還有足以同時 debug 品質與成本的 logs。

如果你想用最快路徑測試這套設定,打開 Claude Fable 5 on OneHop、建立帳號,然後從免費 10 美元開始。接著把上面的 router 接進一個 workflow,而不是整個產品。衡量每個被接受結果的成本。那個數字比任何 launch-week benchmark 都重要。