Hướng dẫn sử dụng Claude Fable 5 API

Gọi API Claude Fable 5 bằng mã Python, TypeScript và curl hoạt động được: truyền phát, sử dụng công cụ, xử lý lỗi, tính toán chi phí, cộng với cách kiểm thử nó trong Apidog.

INEZA Felin-Michel

INEZA Felin-Michel

10 tháng 6 2026

Hướng dẫn sử dụng Claude Fable 5 API

Apidog cho doanh nghiệp

Triển khai tại chỗ

SSO & RBAC

Tuân thủ SOC 2

Khám phá Apidog Enterprise

Anthropic đã phát hành Claude Fable 5 vào ngày 9 tháng 6 năm 2026, và nếu bạn làm nghề lập trình, API của Claude Fable 5 là phần bạn quan tâm. Nó chạy trên cùng một Messages API mà bạn đã quen thuộc, vì vậy chuỗi tên mô hình là điều duy nhất thực sự thay đổi: claude-fable-5. Hướng dẫn này sẽ trình bày mọi lệnh gọi bạn cần để có được mã hoạt động và nhận phản hồi thực tế, từ một yêu cầu curl một dòng cho đến truyền trực tuyến, sử dụng công cụ, xử lý lỗi và tính toán chi phí. Nếu bạn đã từng triển khai với Claude trước đây, cấu trúc này sẽ quen thuộc. Nếu bạn di chuyển từ một mô hình cũ hơn, việc chuyển đổi chủ yếu là thay đổi chuỗi tên, giống như đối với Claude Opus 4.8 API.

TÓM TẮT

Lấy khóa API từ Anthropic Console, đặt nó làm ANTHROPIC_API_KEY, sau đó gửi yêu cầu POST tới Messages API với model: "claude-fable-5", một giá trị max_tokens và một mảng messages. Sử dụng SDK chính thức của Anthropic cho Python hoặc TypeScript, hoặc HTTP thô. Truyền trực tuyến các đầu ra dài để bạn không gặp phải lỗi hết thời gian chờ yêu cầu. Giá là 10 USD cho mỗi triệu token đầu vào và 50 USD cho mỗi triệu token đầu ra.

Trước khi bạn bắt đầu

Bạn cần chuẩn bị bốn điều sau trước khi thực hiện yêu cầu đầu tiên:

  1. Tài khoản Anthropic. Đăng ký tại console.anthropic.com. Console là nơi bạn quản lý khóa, mức sử dụng và thanh toán.
  2. Khóa API. Tạo khóa trong Console dưới mục API Keys. Sao chép khóa này một lần; bạn sẽ không thấy nó nữa. Hãy coi nó như một mật khẩu.
  3. Thanh toán hoặc gói Doanh nghiệp. Fable 5 khả dụng trên API Claude tiêu chuẩn và hoàn toàn khả dụng trên các gói Doanh nghiệp dựa trên mức tiêu thụ. Thêm phương thức thanh toán hoặc xác nhận gói của bạn bao gồm nó trước khi bạn gửi lưu lượng truy cập. Nếu bạn vẫn đang quyết định xem Fable 5 có phù hợp với trường hợp sử dụng của mình hay không, tổng quan về Claude Fable 5 là gì sẽ trình bày rõ ràng về những điểm mạnh của mô hình.
  4. Một SDK (tùy chọn nhưng được khuyến nghị). Cài đặt SDK chính thức của Anthropic cho ngôn ngữ của bạn. Bạn cũng có thể gọi điểm cuối HTTP thô bằng curl hoặc bất kỳ ứng dụng khách HTTP nào nếu bạn muốn.

Đặt khóa làm biến môi trường để nó không bao giờ xuất hiện trong mã nguồn của bạn:

export ANTHROPIC_API_KEY="sk-ant-..."

Cả hai SDK đều tự động đọc ANTHROPIC_API_KEY từ môi trường, vì vậy bạn hiếm khi phải truyền nó trong mã. Giữ khóa API tránh xa git. Nếu khóa bị lộ, hãy xoay vòng nó trong Console ngay lập tức.

Một hành vi cần biết trước: Fable 5 đi kèm với các cơ chế bảo vệ chuyển một phần nhỏ các truy vấn nhạy cảm (an ninh mạng, sinh học và hóa học, và các nỗ lực chắt lọc mô hình) sang Claude Opus 4.8 thay vì trả lời trực tiếp. Điều này xảy ra dưới 5% số phiên. Bạn không cần cấu hình gì cho nó, nhưng nó giải thích cho những phản hồi đôi khi được gắn nhãn là một mô hình khác. Chi tiết hơn về điều này trong phần xử lý lỗi.

Lệnh gọi API Claude Fable 5 đầu tiên của bạn

Bắt đầu với curl để bạn có thể xem yêu cầu và phản hồi thô mà không có bất kỳ cản trở nào. Điểm cuối là POST https://api.anthropic.com/v1/messages, được tài liệu hóa trong tài liệu tham khảo Anthropic Messages API, và nó cần ba tiêu đề cùng với một thân JSON.

curl https://api.anthropic.com/v1/messages \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{"model":"claude-fable-5","max_tokens":1024,"messages":[{"role":"user","content":"Summarize what makes a good REST API in 3 bullet points."}]}'

Ba tiêu đề quan trọng ở đây. x-api-key chứa khóa của bạn. anthropic-version cố định phiên bản API (2023-06-01 là giá trị ổn định hiện tại). content-type cho máy chủ biết bạn đang gửi JSON. Phần thân có ba trường bắt buộc: model, max_tokensmessages. Đó là toàn bộ giao ước.

Phản hồi trả về dưới dạng một đối tượng JSON. Phần bạn quan tâm là content, một danh sách các khối:

{
  "id": "msg_01ABC...",
  "type": "message",
  "role": "assistant",
  "model": "claude-fable-5",
  "content": [
    { "type": "text", "text": "- Predictable, resource-oriented URLs..." }
  ],
  "stop_reason": "end_turn",
  "usage": { "input_tokens": 18, "output_tokens": 96 }
}

content là một danh sách, không phải một chuỗi, vì một phản hồi duy nhất có thể chứa lẫn lộn văn bản, các khối sử dụng công cụ và các khối tư duy. Luôn lặp qua danh sách và kiểm tra type của từng khối trước khi bạn đọc text. stop_reason cho bạn biết tại sao mô hình dừng (end_turn là một kết thúc sạch), và usage cung cấp cho bạn số lượng token bạn sẽ sử dụng để tính toán chi phí sau này.

Gọi Fable 5 từ Python

SDK Python chính thức của Anthropic loại bỏ phần mã lặp lại của tiêu đề và JSON. Cài đặt nó trước:

pip install anthropic

Đây là lệnh gọi cơ bản. Client đọc khóa API của bạn từ môi trường, vì vậy bạn không cần truyền nó vào:

import anthropic

client = anthropic.Anthropic()  # reads ANTHROPIC_API_KEY from env

response = client.messages.create(
    model="claude-fable-5",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Summarize what makes a good REST API."}],
)

for block in response.content:
    if block.type == "text":
        print(block.text)

Mẫu này tương tự như lệnh gọi curl. Bạn truyền model, max_tokensmessages, và bạn nhận được phản hồi mà content của nó là một danh sách các khối. Vòng lặp kiểm tra block.type == "text" để bạn không bao giờ gặp phải khối không phải văn bản.

Thêm lời nhắc hệ thống

Lời nhắc hệ thống thiết lập vai trò và các quy tắc cơ bản của mô hình cho toàn bộ cuộc trò chuyện. Truyền nó vào trường system, tách biệt khỏi messages:

response = client.messages.create(
    model="claude-fable-5",
    max_tokens=2048,
    system="You are a senior backend engineer. Be concise and use code examples.",
    messages=[{"role": "user", "content": "Write a Flask route that validates a JSON body."}],
)

for block in response.content:
    if block.type == "text":
        print(block.text)

Lời nhắc hệ thống là nơi thích hợp để đặt persona, các quy tắc định dạng đầu ra và các ràng buộc bạn muốn duy trì trong suốt mỗi lượt. Giữ cho nó ổn định, vì việc thay đổi nó trong mỗi yêu cầu sẽ làm mất hiệu quả bộ nhớ đệm lời nhắc nếu bạn thêm nó sau này.

Truyền trực tuyến đầu ra dài

Đối với bất kỳ thứ gì tạo ra câu trả lời dài, hãy truyền trực tuyến. Truyền trực tuyến gửi các token khi chúng được tạo ra, vì vậy bạn hiển thị tiến độ ngay lập tức và tránh các lỗi hết thời gian chờ yêu cầu xảy ra với các phản hồi lớn không truyền trực tuyến. Khả năng làm việc với tầm nhìn dài của Fable 5 khiến đây trở thành lựa chọn mặc định cho các khối lượng công việc thực tế:

with client.messages.stream(
    model="claude-fable-5",
    max_tokens=4096,
    messages=[{"role": "user", "content": "Explain idempotency keys for payment APIs."}],
) as stream:
    for text in stream.text_stream:
        print(text, end="", flush=True)
    final = stream.get_final_message()

print(f"\n\nTokens: {final.usage.output_tokens}")

stream.text_stream tạo ra các đoạn văn bản khi chúng đến. flush=True rất quan trọng để mỗi đoạn in ra ngay lập tức thay vì bị đệm. Khi luồng kết thúc, stream.get_final_message() sẽ trả về cho bạn thông báo hoàn chỉnh đã được tập hợp, bao gồm cả các số usage cuối cùng, nhờ đó bạn có được trải nghiệm người dùng truyền trực tuyến và đối tượng đầy đủ mà không cần yêu cầu thứ hai.

Gọi Fable 5 từ TypeScript / Node

SDK Node tuân theo cấu trúc tương tự. Cài đặt nó:

npm install @anthropic-ai/sdk

Sau đó thực hiện lệnh gọi. Client đọc ANTHROPIC_API_KEY từ môi trường, giống như Python:

import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic(); // reads ANTHROPIC_API_KEY

const msg = await client.messages.create({
  model: "claude-fable-5",
  max_tokens: 1024,
  messages: [{ role: "user", content: "List 3 common API security mistakes." }],
});

console.log(msg.content);

msg.content là cùng một danh sách các khối bạn đã thấy trong Python và curl. Để chỉ lấy văn bản, hãy lọc theo loại khối:

const text = msg.content
  .filter((block) => block.type === "text")
  .map((block) => block.text)
  .join("");

console.log(text);

Truyền trực tuyến hoạt động tương tự như Python. Sử dụng client.messages.stream({...}) và lặp qua các sự kiện, hoặc đợi finalMessage() để có kết quả đã được tập hợp. Nếu bạn tích hợp điều này vào một cuộc trò chuyện giao diện người dùng, hãy truyền trực tuyến từ một route máy chủ và chuyển tiếp các đoạn dữ liệu đến trình duyệt. Các thói quen kiểm thử tương tự được áp dụng dù bạn xây dựng bằng Node hay Python, và một công cụ như Apidog giúp dễ dàng xác minh hợp đồng trước khi bạn viết bất kỳ mã ứng dụng khách nào, đây cũng là quy trình làm việc được đề cập trong bài viết kiểm thử ChatGPT API bằng Apidog.

Sử dụng công cụ (gọi hàm) với Fable 5

Sử dụng công cụ cho phép Fable 5 gọi các hàm mà bạn định nghĩa. Bạn mô tả một công cụ bằng một JSON schema, mô hình quyết định khi nào gọi nó, và bạn chạy hàm thực tế rồi đưa kết quả trở lại. Fable 5 rất mạnh trong việc sử dụng công cụ, đó là lý do tại sao nó phù hợp tốt với các vòng lặp tác nhân.

Định nghĩa một công cụ với tên, mô tả và một input_schema:

tools = [
    {
        "name": "get_order_status",
        "description": "Look up the status of a customer order by ID.",
        "input_schema": {
            "type": "object",
            "properties": {"order_id": {"type": "string"}},
            "required": ["order_id"],
        },
    }
]

Truyền tools vào yêu cầu tương tự như cách bạn truyền messages:

messages = [{"role": "user", "content": "What's the status of order A1855?"}]

response = client.messages.create(
    model="claude-fable-5",
    max_tokens=1024,
    tools=tools,
    messages=messages,
)

Khi mô hình muốn sử dụng một công cụ, phản hồi trả về với stop_reason == "tool_use" và một khối tool_use chứa tên công cụ và đầu vào mà nó đã chọn. Vòng lặp rất đơn giản: thêm phản hồi của trợ lý, chạy công cụ, sau đó gửi kết quả trở lại dưới dạng khối tool_result trong một lượt người dùng mới:

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

    # Run your real function with the model's chosen input
    result = lookup_order(tool_use.input["order_id"])  # your code

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

    # Send the result back; the model now answers using it
    followup = client.messages.create(
        model="claude-fable-5",
        max_tokens=1024,
        tools=tools,
        messages=messages,
    )

Chi tiết quan trọng là tool_use_id: khối tool_result phải tham chiếu đến id chính xác từ khối tool_use để mô hình biết kết quả của bạn trả lời cho lệnh gọi nào. Đối với các tác nhân đa bước, bạn gói điều này trong một vòng lặp tiếp tục cho đến khi stop_reasonend_turn. SDK Python cũng cung cấp một bộ chạy công cụ xử lý vòng lặp cho bạn, nhưng phiên bản thủ công ở trên cho thấy những gì đang diễn ra bên dưới và cung cấp cho bạn nơi để thêm các cổng phê duyệt hoặc ghi nhật ký.

Tư duy thích ứng và nỗ lực

Fable 5 hỗ trợ tư duy thích ứng, nơi mô hình tự quyết định khi nào và sâu sắc đến mức nào để suy luận trước khi trả lời. Điều này là tùy chọn. Bật nó bằng cách truyền thinking, và điều chỉnh độ sâu tổng thể và chi phí token bằng output_config:

response = client.messages.create(
    model="claude-fable-5",
    max_tokens=4096,
    thinking={"type": "adaptive"},
    output_config={"effort": "high"},  # low | medium | high
    messages=[{"role": "user", "content": "Design a retry strategy for a flaky webhook receiver."}],
)

effort kiểm soát mức độ mô hình suy nghĩ và hoạt động: nỗ lực thấp hơn có nghĩa là phản hồi ngắn gọn hơn, nhanh hơn; nỗ lực cao hơn có nghĩa là suy luận kỹ lưỡng hơn với chi phí token cao hơn. Hãy bỏ qua cả hai cho các tra cứu đơn giản và câu trả lời ngắn, nơi việc suy luận thêm không đáng với số token. Sử dụng chúng cho các vấn đề khó, nhiều bước, loại lập kế hoạch tầm nhìn dài mà Fable 5 được xây dựng để giải quyết. Hãy bắt đầu một cách đơn giản; bạn có thể thêm thinking sau này khi bạn biết một tuyến đường cần nó.

Xử lý lỗi và cơ chế dự phòng an toàn

Các tích hợp thực tế phải xử lý lỗi một cách gọn gàng. SDK đưa ra các ngoại lệ có kiểu, vì vậy hãy bắt lớp cụ thể thay vì so khớp chuỗi lỗi. Ba lỗi bạn sẽ thường thấy nhất tương ứng với HTTP 401, 429 và 400:

import anthropic

client = anthropic.Anthropic()

try:
    response = client.messages.create(
        model="claude-fable-5",
        max_tokens=1024,
        messages=[{"role": "user", "content": "Explain CORS preflight requests."}],
    )
except anthropic.AuthenticationError:
    # 401: bad or missing API key. Check ANTHROPIC_API_KEY.
    print("Invalid API key. Rotate it in the Console and re-export.")
except anthropic.RateLimitError as e:
    # 429: too many requests. Back off and retry.
    retry_after = e.response.headers.get("retry-after", "60")
    print(f"Rate limited. Retry after {retry_after}s.")
except anthropic.BadRequestError as e:
    # 400: malformed request (bad params, empty messages, wrong shape).
    print(f"Bad request: {e.message}")

Dưới đây là ý nghĩa và cách khắc phục từng lỗi:

Giờ đến cơ chế dự phòng an toàn. Fable 5 chuyển một tập hợp nhỏ các truy vấn nhạy cảm (an ninh mạng, sinh học và hóa học, và các nỗ lực chắt lọc mô hình) sang Claude Opus 4.8 thay vì trả lời trực tiếp. Điều này xảy ra trong dưới 5% số phiên. Đây không phải là lỗi, và yêu cầu của bạn vẫn thành công, nhưng phản hồi có thể trả về được gắn thẻ với một mô hình khác. Nếu bạn ghi nhật ký hoặc xác nhận trên response.model, đừng thất bại hoàn toàn khi nó không phải là claude-fable-5; yêu cầu vẫn được xử lý, chỉ là bởi một mô hình khác bên dưới. Nếu ứng dụng của bạn thực sự cần biết mô hình nào đã trả lời, hãy đọc response.model từ đối tượng trả về thay vì giả định nó khớp với những gì bạn đã gửi.

Ước tính chi phí cho mỗi yêu cầu

Giá là 10 USD cho mỗi triệu token đầu vào và 50 USD cho mỗi triệu token đầu ra. Mỗi phản hồi đều mang theo số lượng chính xác trong usage, vì vậy bạn có thể tính toán chi phí cho mỗi yêu cầu một cách chính xác thay vì đoán mò:

response = client.messages.create(
    model="claude-fable-5",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Write a SQL query to find duplicate emails."}],
)

input_tokens = response.usage.input_tokens
output_tokens = response.usage.output_tokens

input_cost = input_tokens / 1_000_000 * 10
output_cost = output_tokens / 1_000_000 * 50
total = input_cost + output_cost

print(f"Input:  {input_tokens} tokens  = ${input_cost:.6f}")
print(f"Output: {output_tokens} tokens = ${output_cost:.6f}")
print(f"Total:  ${total:.6f}")

Token đầu ra có giá gấp năm lần token đầu vào, vì vậy đòn bẩy rẻ nhất bạn có là giữ cho phản hồi ngắn gọn. Một yêu cầu với 2.000 token đầu vào và 500 token đầu ra có giá 2000 / 1M * $10 + 500 / 1M * $50, tức là $0.02 + $0.025 = $0.045. Nhân với số lượng yêu cầu của bạn để xác định ngân sách. Nếu chi phí đầu ra chiếm ưu thế trong hóa đơn của bạn, hãy giới hạn max_tokens và yêu cầu các câu trả lời ngắn gọn trong lời nhắc hệ thống. Định giá đầu ra là phép tính tương tự bạn sẽ thực hiện cho mô hình giá của Claude Opus 4.8, chỉ với các con số của Fable 5.

Kiểm thử và gỡ lỗi Claude Fable 5 API bằng Apidog

Trước khi viết mã ứng dụng khách, việc tự gửi một vài yêu cầu và xem chính xác những gì trả về là rất hữu ích. Apidog là một ứng dụng khách API được xây dựng cho mục đích này: bạn gửi các yêu cầu thực tế đến https://api.anthropic.com/v1/messages, kiểm tra phản hồi được truyền trực tuyến và lưu yêu cầu để toàn bộ nhóm của bạn làm việc dựa trên cùng một định nghĩa. Dưới đây là một lộ trình rõ ràng từ khởi đầu đến một yêu cầu hoạt động và được lưu.

  1. Tạo yêu cầu. Trong Apidog, tạo một yêu cầu HTTP mới, đặt phương thức là POST và dán URL https://api.anthropic.com/v1/messages. Đây là cùng một điểm cuối mà mọi ví dụ trong hướng dẫn này đều sử dụng.
  2. Lưu khóa của bạn dưới dạng biến môi trường. Tạo một biến môi trường Apidog, đặt tên nó là anthropic_api_key và dán khóa của bạn dưới dạng giá trị bí mật. Giữ khóa trong môi trường có nghĩa là nó sẽ không xuất hiện trong yêu cầu đã lưu và không có trong bất kỳ bản xuất nào bạn chia sẻ.
  3. Đặt các tiêu đề. Thêm x-api-key với giá trị {{anthropic_api_key}}, sau đó là anthropic-version: 2023-06-01content-type: application/json. Nếu bạn thích một biến bí mật kiểu Bearer, hãy lưu token theo cách tương tự và tham chiếu nó bằng cú pháp {{...}} để giá trị thô không bao giờ xuất hiện trong yêu cầu.
  4. Thêm phần thân JSON. Đặt tải trọng tối thiểu vào: {"model": "claude-fable-5", "max_tokens": 1024, "messages": [{"role": "user", "content": "Explain idempotency keys for payment APIs."}]}. Gửi nó và đọc phản hồi. Bạn sẽ thấy các khối content, stop_reasonusage ngay trong bảng phản hồi.
  5. Xem phản hồi được truyền trực tuyến. Đặt "stream": true trong phần thân và gửi lại. Apidog hiển thị các sự kiện do máy chủ gửi khi chúng đến, vì vậy bạn có thể xem các token được truyền trực tuyến và xác nhận logic truyền trực tuyến của bạn khớp với những gì API thực sự gửi trước khi bạn xây dựng nó vào một ứng dụng.
  6. Lưu và tạo mã. Lưu yêu cầu vào một bộ sưu tập để đồng đội có thể sử dụng lại, sau đó sử dụng tính năng tạo mã của Apidog để xuất một đoạn mã hoạt động bằng Python, JavaScript, curl hoặc một ngôn ngữ khác. Điều đó cung cấp cho bạn một điểm khởi đầu đã được kiểm thử thay vì một tệp trống.

Quy trình này là cách nhanh nhất để tìm hiểu hình dạng phản hồi chính xác của API và để gỡ lỗi một yêu cầu hoạt động sai trong ứng dụng của bạn, vì bạn có thể so sánh yêu cầu của mã của mình với một yêu cầu tốt đã biết một cách song song. Khi bạn sẵn sàng thiết lập nó, Tải xuống Apidog và bắt đầu với phần thân tối thiểu ở trên.

Tải ứng dụng

Thực hành thiết kế API trong Apidog

Khám phá cách dễ dàng hơn để xây dựng và sử dụng API