Cách xử lý các lỗi từ chối Fable 5 trong API

Các yêu cầu từ Fable 5 có thể được trả lời bởi Opus 4.8. Tìm hiểu cách phát hiện việc định tuyến lại thông qua response.model, sử dụng tham số dự phòng beta và kiểm tra các đường dẫn từ chối.

Ashley Innocent

Ashley Innocent

2 tháng 7 2026

Cách xử lý các lỗi từ chối Fable 5 trong API

Apidog cho doanh nghiệp

Triển khai tại chỗ

SSO & RBAC

Tuân thủ SOC 2

Khám phá Apidog Enterprise

Bạn gọi claude-fable-5, phản hồi trông bình thường, sau đó bạn kiểm tra trường model: claude-opus-4-8. Yêu cầu của bạn đã kích hoạt bộ phân loại an toàn, Fable 5 từ chối trả lời, và một mô hình khác đã thay thế. Đây không phải là lỗi. Đây là cách Fable 5 được thiết kế để hoạt động, và việc tích hợp của bạn nên xử lý điều này một cách có chủ ý chứ không phải ngẫu nhiên.

Chúng tôi đã trình bày lý do đằng sau kiến trúc này trong bài giải thích về các biện pháp bảo vệ an toàn của Fable 5. Bài viết này là hướng dẫn thực hành. Bạn sẽ tìm hiểu điều gì kích hoạt chuyển hướng, cách phát hiện điều đó trong mã, cách tham số fallbacks beta tự động hóa việc thử lại, và cách kiểm tra việc xử lý từ chối của bạn trước khi người dùng thực gặp phải.

Tại sao Fable 5 chuyển hướng một số yêu cầu

Claude Fable 5 đi kèm với các bộ phân loại an toàn để sàng lọc các yêu cầu đến. Chúng giám sát ba lĩnh vực: an ninh mạng, sinh học và hóa học, và chưng cất mô hình. Khi một bộ phân loại bị kích hoạt, Fable 5 từ chối yêu cầu. Trên các giao diện người dùng của Claude, yêu cầu sau đó được Claude Opus 4.8 xử lý và người dùng được thông báo về việc này. Trên API, việc khôi phục là tùy thuộc vào bạn, và đó là lúc tham số fallbacks phát huy tác dụng.

Các bộ phân loại không cố định. Sau đợt tạm ngừng vào tháng 6, Anthropic đã huấn luyện lại bộ phân loại chống lại một kỹ thuật vượt rào (jailbreak) được báo cáo; phiên bản cập nhật chặn hơn 99% các nỗ lực. Fable 5 đã được triển khai lại vào ngày 1 tháng 7 năm 2026 với bộ phân loại mới. Nếu bạn đã tạm dừng việc tích hợp của mình trong thời gian ngừng hoạt động, trung tâm Fable 5 đã trở lại của chúng tôi có đầy đủ lịch trình và những thay đổi đã diễn ra.

Một thông tin bổ sung có ích ở đây. Các bộ phân loại nằm phía trước mô hình, chứ không phải bên trong nó. Claude Mythos 5 là cùng một mô hình nhưng không có bộ phân loại, và quyền truy cập bị hạn chế đối với những người tham gia Project Glasswing. Hơn 95% các phiên Fable không liên quan đến bất kỳ sự chuyển hướng nào, và đối với những phiên đó, hiệu suất của Fable 5 thực sự giống hệt với Mythos 5. Chúng tôi phân tích sự khác biệt trong Fable 5 so với Mythos 5.

Chuyển hướng có ý nghĩa gì đối với ứng dụng của bạn

Fable 5 và Opus 4.8 đều là những mô hình mạnh mẽ, nhưng chúng không thể hoán đổi cho nhau từ góc độ kỹ thuật. Fable 5 chạy với cửa sổ ngữ cảnh 1M token với đầu ra tối đa 128K với giá 10 đô la cho mỗi triệu token đầu vào và 50 đô la cho mỗi triệu token đầu ra; Opus 4.8 có giá riêng và hồ sơ hành vi riêng. Tổng quan về mô hình liệt kê các thông số kỹ thuật hiện tại cho cả hai. Một lời nhắc mà bạn đã điều chỉnh cho Fable 5 có thể tạo ra độ dài, định dạng hoặc mẫu gọi công cụ khác nhau trên Opus 4.8.

Điều đó có quan trọng hay không tùy thuộc vào trường hợp sử dụng của bạn:

Phát hiện chuyển hướng bằng lập trình

Tín hiệu đáng tin cậy là trường model của phản hồi. Mọi phản hồi của API Messages đều đặt tên mô hình đã tạo ra nó, vì vậy một yêu cầu gửi đến claude-fable-5 mà trả về claude-opus-4-8 đã bị chuyển hướng. Đó là hành vi tiêu chuẩn của API Messages; bạn không cần bất kỳ tính năng beta nào để đọc nó.

Hai trường khác thuộc cùng một dòng nhật ký. stop_reason cho bạn biết liệu yêu cầu có bị từ chối thẳng thừng hay không: một yêu cầu bị từ chối mà không có xử lý chuyển hướng sẽ trả về HTTP 200 với stop_reason được đặt thành `"refusal"` và không có nội dung hữu ích nào, vì vậy hãy kiểm tra nó trước khi đọc response.content. Và usage cung cấp cho bạn số lượng token bạn cần để phân bổ chi phí cho mô hình đã tính phí chúng.

response = client.messages.create(
    model="claude-fable-5",
    max_tokens=16000,
    messages=[{"role": "user", "content": prompt}],
)

if response.stop_reason == "refusal":
    # Bị từ chối mà không có cấu hình chuyển hướng: không có nội dung hữu ích nào được trả về
    handle_refusal(response)
elif not response.model.startswith("claude-fable-5"):
    logger.info(
        "fallback served_by=%s in=%d out=%d",
        response.model,
        response.usage.input_tokens,
        response.usage.output_tokens,
    )

Nếu bạn đang xây dựng API từ đầu, hãy bắt đầu với hướng dẫn của chúng tôi về cách sử dụng API Claude Fable 5 và thêm kiểm tra này sau khi các cuộc gọi đầu tiên của bạn hoạt động.

Tham số fallbacks

Nếu không có bất kỳ cấu hình chuyển hướng nào, một yêu cầu API bị từ chối sẽ dừng lại. Bạn nhận được thông báo từ chối, người dùng của bạn không nhận được gì, và logic thử lại là do bạn tự viết. Tham số fallbacks chuyển việc thử lại đó sang máy chủ: khi Fable 5 từ chối, API sẽ chạy lại cùng một yêu cầu trên một mô hình mà bạn chỉ định, trong cùng một cuộc gọi, và trả về câu trả lời của mô hình đó.

Tham số này đang ở dạng beta trên API Claude và Nền tảng Claude trên AWS, được ghi lại trên trang từ chối và chuyển hướng của Anthropic. Bạn chọn tham gia bằng một tiêu đề beta, và tại thời điểm ra mắt, mục tiêu chuyển hướng duy nhất được hỗ trợ là claude-opus-4-8:

response = client.beta.messages.create(
    model="claude-fable-5",
    max_tokens=16000,
    betas=["server-side-fallback-2026-06-01"],
    fallbacks=[{"model": "claude-opus-4-8"}],
    messages=[{"role": "user", "content": prompt}],
)

print(response.model)  # claude-opus-4-8 nếu yêu cầu đã được chuyển hướng

Việc tính phí có lợi cho bạn. Một yêu cầu bị từ chối trước khi bất kỳ đầu ra nào được tạo sẽ không bị tính phí; nỗ lực khôi phục sẽ được tính phí theo mức giá riêng của mô hình chuyển hướng. Việc phát hiện vẫn giữ nguyên như trước: response.model đặt tên cho mô hình đã trả lời.

Một vài giới hạn cần biết. Tham số này bị từ chối trên API Batches và không khả dụng trên Amazon Bedrock, Google Vertex AI, hoặc Microsoft Foundry; trên các nền tảng đó, bạn xử lý việc thử lại ở phía client. Và nếu mô hình chuyển hướng cũng từ chối, phản hồi cuối cùng sẽ chứa stop_reason: "refusal", vì vậy hãy giữ lại nhánh từ chối từ phần trước ngay cả khi đã bật các chuyển hướng.

Thiết kế chính sách xử lý của bạn

Phát hiện và thử lại là cơ chế. Quyết định thực sự là sản phẩm của bạn sẽ làm gì khi một sự chuyển hướng xảy ra, và có ba chính sách hợp lý:

Dù bạn chọn chính sách nào, hãy theo dõi tỷ lệ chuyển hướng của bạn. Tỷ lệ gần bằng không khớp với mức cơ bản toàn nền tảng. Tỷ lệ tăng lên quá vài phần trăm có nghĩa là các lời nhắc của bạn đang chạm đến một lĩnh vực kích hoạt, và đáng để xem xét chúng trước khi khối lượng tăng lên.

Kiểm tra các đường dẫn từ chối trước khi sản xuất

Việc xử lý chuyển hướng là loại mã hoạt động tốt trong bản demo và thất bại sau sáu tuần, bởi vì việc từ chối hiếm khi xảy ra theo thiết kế. Bạn không thể chờ đợi một người dùng thực kích hoạt bộ phân loại để tìm hiểu xem việc ghi nhật ký, thử lại và giao diện người dùng của bạn có hoạt động đúng không. Bạn phải tự mình kích hoạt đường dẫn đó.

Apidog biến điều này thành thực tế. Định nghĩa điểm cuối Claude Messages một lần, giữ khóa API của bạn trong một biến môi trường, và xây dựng một kịch bản kiểm tra từ một bộ nhỏ các lời nhắc trường hợp biên: một vài lời nhắc liên quan đến an ninh và sinh học nằm gần mục tiêu của bộ phân loại, cộng với các kiểm soát lành tính mà không bao giờ nên chuyển hướng. Sau đó kiểm định trên phần thân phản hồi. Mỗi kiểm tra sẽ kiểm tra trường model (kiểm soát có giữ trên claude-fable-5 không? trường hợp biên có trở về từ claude-opus-4-8 không?) và stop_reason (có bất kỳ điều gì từ chối thẳng thừng không?).

Chạy kịch bản theo lịch trình hoặc trong CI. Khi Anthropic huấn luyện lại bộ phân loại, như đã làm trước khi triển khai lại vào ngày 1 tháng 7, bộ kiểm thử của bạn sẽ cho bạn biết trong vòng một ngày liệu các trường hợp biên của bạn có còn hoạt động theo cách mã xử lý của bạn mong đợi hay không. Đó là một thiết lập năm phút trong Apidog so với một bất ngờ trong sản xuất mà không được báo trước.

Câu hỏi thường gặp

Tóm lại

Việc Fable 5 chuyển hướng là một quyết định thiết kế, không phải là một sự cố, vì vậy hãy xử lý chúng như vậy trong mã của bạn. Kiểm tra response.model trên mọi cuộc gọi, duy trì một nhánh từ chối ngay cả khi đã bật các chuyển hướng, chọn sử dụng tham số fallbacks trừ khi bạn có lý do để không làm vậy, và chọn một chính sách cho sản phẩm của bạn khi Opus 4.8 trả lời. Sau đó, chứng minh toàn bộ đường dẫn hoạt động: xây dựng bộ kiểm thử trường hợp biên trong Apidog, kiểm định modelstop_reason, và chạy nó theo lịch trình. Tải Apidog và bạn có thể có bộ kiểm thử từ chối chạy trước lần triển khai tiếp theo của mình.

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