muapi Logomuapi Logo
Claude Fable 5 API:定价、拒答与设置

Claude Fable 5 API:定价、拒答与设置

M
Muapi 团队
2026-06-18约 6 分钟阅读

官方快速入门通常只是展示 claude-opus-4-8 的样板代码,然后就结束了。但要把 Fable 5 真正部署到生产环境,这些信息远远不够。这个模型有自己的行为:始终开启的思考界面、会返回空数组的 refusal 停止原因、对过去常用的思考预算直接返回 400,以及对零数据保留组织的明确拒绝。本指南专门讲解 Fable 5 在 Muapi 低价端点上的集成方式,代码可以直接复制运行。

Claude Fable 5 是什么?为什么通过 Muapi 调用?

Claude Fable 5 是 Anthropic 目前广泛发布的能力最强模型:适合复杂推理、长篇与创意写作、专家级编程和调试,以及图像加文本的多模态分析。它默认提供 100 万 token 上下文窗口,最多可输出 128K token。Muapi 将它作为 **Text-to-Text 端点(claude-fable-5,provider anthropic)**提供,输入价格为每百万 token $8.00,输出价格为每百万 token $40.00,低于直接调用 api.anthropic.com。这篇指南面向需要稳定集成的开发者,也专门解释那些会让旧版 Opus 代码失效的 Fable 5 行为。你可以在 claude-fable-5 的 Muapi Playground 获取密钥并查看实时端点。

定价:Muapi 与直接调用 Anthropic 的比较

Muapi 按模型返回的 token 数量计费,每次调用结束后扣除费用:

输入输出说明
Muapi(claude-fable-5$8.00 / M$40.00 / M每次调用最低 $0.001
Anthropic(官方,按 Muapi 对比数据)~$15.00 / M~$75.00 / M通过 api.anthropic.com 直接调用
Fal.ai不提供

举个例子:一次请求包含 2,000 个输入 token 和 1,000 个输出 token,费用为 (2,000 / 1,000,000 × $8.00) + (1,000 / 1,000,000 × $40.00) = $0.016 + $0.040 = $0.056。按 Muapi 对比表中的 Anthropic 价格计算,同一请求约为 $0.030 + $0.075 = $0.105,接近两倍。

需要如实说明的是:Anthropic 公布的 Fable 5 目录价通常被引用为输入约 $10/M、输出约 $50/M,而不是 Muapi 表中的 $15/$75。因此,较高的数字应理解为 Muapi 的对比数据,而不是适用于所有场景的报价。无论采用哪组数字,Muapi 的 $8/$40 都更低。Fable 5 不在 Fal.ai 提供,所以 Muapi 是更经济的托管方式。

快速开始:第一次在 Muapi 上调用 Fable 5

请求正文接受 prompt(字符串)、可选的 system_prompt(字符串),以及用于多模态请求的可选 image_url(字符串)。有两个端点:

  • /claude-fable-5 —— 异步端点。返回 request_id,再轮询结果。适合工作流和自动化。
  • /claude-fable-5/stream —— 实时 SSE。适合聊天界面和进度反馈。

高难度任务在较高 effort 下可能运行数分钟,因此要设置充足的超时时间,并优先考虑流式调用。安全的标准模式是先读取 stop_reason,再访问 content[0]——拒答时数组会是空的。

# cURL — async endpoint, then poll for the result
RID=$(curl -s https://muapi.ai/api/claude-fable-5 \
  -H "Authorization: Bearer $MUAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "Summarize the architectural tradeoffs in this diagram.",
    "system_prompt": "You are a precise senior staff engineer.",
    "image_url": "https://example.com/architecture.png"
  }' | jq -r '.request_id')

curl -s "https://muapi.ai/api/claude-fable-5/result/$RID" \
  -H "Authorization: Bearer $MUAPI_KEY"

# cURL — live streaming variant (Server-Sent Events)
curl -N https://muapi.ai/api/claude-fable-5/stream \
  -H "Authorization: Bearer $MUAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{"prompt": "Write a 600-word noir opening set in a server room."}'
import time, requests

BASE = "https://muapi.ai/api"
HEADERS = {"Authorization": f"Bearer {MUAPI_KEY}", "Content-Type": "application/json"}

def call_fable5(prompt, system_prompt=None, image_url=None, timeout=900):
    body = {"prompt": prompt}
    if system_prompt:
        body["system_prompt"] = system_prompt
    if image_url:
        body["image_url"] = image_url

    # Three Fable-5 gotchas, in one payload:
    body["model"] = "claude-fable-5"                  # 1. exact ID, NO date suffix
    body["thinking"] = {"type": "adaptive"}           # 2. omit, or adaptive — never budget_tokens
    body["betas"] = ["server-side-fallback-2026-06-01"]  # 3. opt into fallbacks by default
    body["fallbacks"] = [{"model": "claude-opus-4-8"}]

    rid = requests.post(f"{BASE}/claude-fable-5", json=body, headers=HEADERS).json()["request_id"]

    deadline = time.time() + timeout
    while time.time() < deadline:
        r = requests.get(f"{BASE}/claude-fable-5/result/{rid}", headers=HEADERS).json()
        if r.get("status") == "completed":
            # CHECK stop_reason BEFORE indexing content — a refusal has an empty array
            if r.get("stop_reason") == "refusal":
                return handle_refusal(r)
            return r["content"][0]["text"]
        time.sleep(2)
    raise TimeoutError("Fable 5 task exceeded timeout — prefer the /stream endpoint")

def handle_refusal(resp):
    # Pre-output refusal: empty content, not billed. Mid-stream: partial output, billed (discard it).
    return None

四个会让旧模型代码失效的 Fable 5 注意事项

1. 模型 ID 必须正好是 claude-fable-5,不能带日期后缀。 旧版 Anthropic 使用习惯可能会让你写成 claude-fable-5-20260101。这个 ID 不存在,会直接失败。claude-fable-5 已经是完整写法。

2. 思考始终开启。 Fable 5 会处理每个请求的思考。可以完全省略 thinking 参数,也可以传入 {"type": "adaptive"}{"type": "enabled", "budget_tokens": N}{"type": "disabled"} 都会返回 400budget_tokens 曾经适用于 Opus 4.7,但在这里已经完全移除。请用 effort 控制深度,不要再用 token 预算。

3. stop_reason: "refusal" 会以 HTTP 200 返回空数组或部分内容。 安全分类器可能拒绝请求。输出前拒答会返回空的 content 数组,完全不计费;流式过程中的拒答会留下已计费的部分输出,应将其丢弃。无论哪种情况,都要先判断 stop_reason——在被拒请求上直接访问 content[0] 会抛错。

4. 不支持零数据保留。 Fable 5 要求保留 30 天数据,不能在 ZDR 模式下使用。如果组织设置为零数据保留(或低于 30 天),无论请求正文是否正确,每次请求都会返回 400 invalid_request_error。如果原本正常的集成突然开始返回 400,请先检查组织的保留设置,再排查请求。

使用服务器端 fallback 优雅处理拒答

Fable 5 的分类器会重点拦截研究生物学和大多数网络安全内容,但安全工具、生命科学任务等相邻的良性内容也可能触发误判。为了避免请求直接失败,可以默认启用服务器端 fallback:

body["betas"] = ["server-side-fallback-2026-06-01"]
body["fallbacks"] = [{"model": "claude-opus-4-8"}]

如果政策拒答,API 会在同一次调用中透明地使用 Claude Opus 4.8 重新服务同一请求。计费会自动处理:在任何输出之前发生的拒答不计费,救援请求则按 fallback 模型自己的费率计费;流式过程中的拒答会对已经发送的部分计费。请求头必须精确使用 server-side-fallback-2026-06-01。如果整个链路结束后最终 stop_reason 仍然是 "refusal",说明所有模型都拒绝了请求,应将结果展示给用户,而不是重复提交相同提示词。从第一天开始就在新的 Fable 5 集成中启用这项能力:正常请求不会增加成本,却能挽救误判。

可以用它构建什么:推理、写作、代码与视觉理解

  • 复杂推理 —— 多步骤逻辑、深入分析和研究整合。使用异步 /claude-fable-5 端点,配合明确的 system_prompt 和充足的超时时间。
  • 创意写作 —— 长篇故事、剧本和文章,并进行细致的风格控制。通过 /claude-fable-5/stream 流式输出,让用户实时看到文本。
  • 编程与工程 —— 使用任意语言编写、审查、调试和重构代码。将规范放在 prompt 中,将工程约定放在 system_prompt 中。
  • 多模态分析 —— 在文本 prompt 之外,通过 image_url 传入图表、截图或文档,从图像中提取结构化信息。

总结与下一步

这次集成有三个关键点:Muapi 更低的价格(每百万 token $8/$40,相比官方对比数据更低)、以 stop_reason 为先的安全调用模式(永远不会盲目访问 content[0]),以及始终开启的自适应思考界面(省略参数或传入 {"type": "adaptive"},不要使用 budget_tokens)。默认加入服务器端 fallback,确认组织符合 30 天保留要求,并对可能运行较久的任务优先使用流式端点。然后获取密钥,在 claude-fable-5 的 Muapi Playground 运行快速入门。

FAQ

为什么我的 claude-fable-5 请求传入 thinkingbudget_tokens 后返回 400,而 Opus 4.7 可以正常工作?

Fable 5 已完全移除 budget_tokens。思考始终开启,唯一接受的配置是 adaptive:要么完全省略 thinking 参数,要么传入 {"type": "adaptive"}{"type": "enabled", "budget_tokens": N}{"type": "disabled"} 都会返回 400。这里没有 token 预算开关,请改用 effort 控制推理深度。删除 budget_tokens 相关代码后,请求即可成功。

content 数组为空时,如何处理 stop_reason 为 "refusal" 的结果?这次请求收费了吗?应该重试吗?

拒答会以成功的 HTTP 200 返回,并带有 stop_reason: "refusal"。如果分类器在任何输出之前触发,content 数组为空,且不会计费(输入和输出 token 都不收费);如果在流式过程中触发,则已有部分输出并且已经计费,应丢弃它,不要当作完整结果。读取 content[0] 之前一定要先检查 stop_reason。不要重复发送完全相同的提示词,而应启用服务器端 fallback(betas: ["server-side-fallback-2026-06-01"] + fallbacks: [{"model": "claude-opus-4-8"}]),让误判请求在同一次调用中交由 Opus 4.8 重新服务。如果 fallback 链结束后最终 stop_reason: "refusal",说明整条链都拒绝了请求。

为什么组织配置了零数据保留后,我的所有 Fable 5 请求都会因 invalid_request_error 返回 400?

Fable 5 要求保留数据 30 天,不支持零数据保留。如果组织的保留设置是 ZDR,或者低于 30 天,那么无论请求正文多么正确,每个请求都会返回 400 invalid_request_error。问题出在组织设置,不在请求正文。将组织设置改为满足 30 天要求后,同样的请求就可以正常执行。

M

Muapi AI 洞察

用智能代理能力赋能创作者。

关注

更多 Muapi Muapi

查看全部 →