Ошибки и отказы/Отказы модели

Как распознать отказ модели

Когда модель Claude отказывает, Wokey передаёт сообщение об отказе от Anthropic без изменений. Downstream-платформы могут распознавать отказы по полям ниже и применять свои меры контроля рисков.

На этой страницеexpand_more

Краткоlink

  • Отказ возвращается с HTTP 200, а не с кодом ошибки. Распознавайте его по полям ответа.
  • Причина отказа приходит в конце ответа. В потоковом режиме уже отправленное до отказа содержимое не отзывается.
  • Wokey не переписывает отказы: текст формирует Anthropic.

Распознавание по формату APIlink

Anthropic Messages /v1/messages

Признак отказа stop_reason == "refusal"

Категория указана в stop_details.category, причина — в stop_details.explanation. В потоке они приходят в последнем событии message_delta, без потока — на верхнем уровне объекта message.

SSE
event: message_delta
data: {"type":"message_delta","delta":{"stop_reason":"refusal","stop_sequence":null,"stop_details":{"type":"refusal","category":"cyber","explanation":"This request triggered ..."}},"usage":{...}}

event: message_stop
data: {"type":"message_stop"}

OpenAI Chat Completions /v1/chat/completions

Признак отказа finish_reason == "content_filter"

Причина находится в поле refusal: в потоке — choices[0].delta.refusal последнего chunk, без потока — choices[0].message.refusal, а message.content равен null. Категории в этом формате нет.

SSE
data: {"object":"chat.completion.chunk","choices":[{"index":0,"delta":{"refusal":"This request triggered ..."},"finish_reason":"content_filter"}],"usage":{...}}

data: [DONE]

OpenAI Responses /v1/responses

Признак отказа в output есть часть контента с type "refusal"

Причина находится в поле refusal этой части. В потоке приходят события response.refusal.delta и response.refusal.done, а output_text — пустая строка. Категории в этом формате нет.

SSE
event: response.refusal.done
data: {"type":"response.refusal.done","item_id":"msg_...","output_index":0,"content_index":0,"refusal":"This request triggered ..."}

Категории отказов и исходный текстlink

categoryЗначениеexplanation (дословно)
reasoning_extractionУсловия обслуживания: обратная разработка или копирование ответов модели (дистилляция)This request was blocked as it seems to violate Anthropic's Terms of Service restrictions on reverse engineering or duplicating model outputs. To learn more, visit https://www.anthropic.com/legal/commercial-terms.
frontier_llmУсловия обслуживания: разработка конкурирующих моделейThis request was blocked as our automated systems flagged that it may violate Anthropic's Terms of Service restrictions on developing competing model products. To learn more, visit https://www.anthropic.com/legal/commercial-terms.
cyberКибербезопасность (Opus 5 и новее, Fable, Sonnet 5.5)This request triggered restrictions on violative cyber content and was blocked under Anthropic's Usage Policy. To learn more, see https://platform.claude.com/docs/en/build-with-claude/refusals-and-fallback.
cyberКибербезопасность (Opus 4.x, Sonnet 5, Haiku 5.5)This request triggered cyber-related safeguards. To learn about the Cyber Verification Program and apply for access, visit our help center: https://support.claude.com/en/articles/14604842-real-time-cyber-safeguards-on-claude.
general_harmsОбщий вред, например взрывчатые веществаThis request triggered restrictions on content related to the development of high-yield explosives and was blocked under Anthropic's Usage Policy. To learn more, provide feedback, or request an exemption based on how you use Claude, visit our help center: https://support.claude.com/
bio и др.Биология и другое содержимое, для которого апстрим не указывает причинуВ формате Anthropic поля explanation нет; форматы OpenAI возвращают "The upstream model refused this request."

Примечанияlink

  • Текст формирует Anthropic, и он может измениться в любой момент. Ориентируйтесь на признаки отказа и category, а не на точное совпадение строки.
  • В форматах OpenAI категории нет. Чтобы определить её, сопоставьте текст с таблицей выше.