Claude Platform Docs
  • 消息
  • 托管智能体
  • 管理

Search...
⌘K
第一步
Claude 简介快速入门
使用 Claude 构建
功能概览使用 Messages API停止原因与回退拒绝与回退回退额度
模型能力
扩展思考自适应思考努力程度任务预算(测试版)快速模式(研究预览)结构化输出引用流式传输消息批量处理搜索结果流式传输拒绝多语言支持嵌入
工具
概览工具使用的工作原理教程:构建使用工具的智能体定义工具处理工具调用并行工具使用工具运行器(SDK)严格工具使用工具使用与提示缓存服务器工具故障排除网页搜索工具网页抓取工具代码执行工具顾问工具记忆工具Bash 工具计算机使用工具文本编辑器工具
工具基础设施
工具参考管理工具上下文工具组合工具搜索编程式工具调用细粒度工具流式传输
上下文管理
上下文窗口压缩上下文编辑提示缓存对话中系统消息构建编排模式缓存诊断(测试版)令牌计数
处理文件
Files APIPDF 支持图像与视觉
技能
概览快速入门最佳实践企业技能API 中的技能
MCP
远程 MCP 服务器MCP 连接器
云平台上的 Claude
Amazon BedrockAmazon Bedrock(旧版)AWS 上的 Claude PlatformMicrosoft FoundryVertex AI

Log in
流式传输拒绝
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Claude Platform Docs

Solutions

  • AI agents
  • Code modernization
  • Coding
  • Customer support
  • Education
  • Financial services
  • Government
  • Life sciences

Partners

  • Claude on AWS
  • Claude on Google Cloud

Learn

  • Blog
  • Courses
  • Use cases
  • Connectors
  • Customer stories
  • Engineering at Anthropic
  • Events
  • Powered by Claude
  • Service partners
  • Startups program

Company

  • Anthropic
  • Careers
  • Economic Futures
  • Research
  • News
  • Responsible Scaling Policy
  • Security and compliance
  • Transparency

Learn

  • Blog
  • Courses
  • Use cases
  • Connectors
  • Customer stories
  • Engineering at Anthropic
  • Events
  • Powered by Claude
  • Service partners
  • Startups program

Help and security

  • Availability
  • Status
  • Support
  • Discord

Terms and policies

  • Privacy policy
  • Responsible disclosure policy
  • Terms of service: Commercial
  • Terms of service: Consumer
  • Usage policy
消息/模型能力

流式传输拒绝

检测和处理流式传输响应中的拒绝停止原因,并在备用模型上重试被拒绝的请求。

从 Claude 4 模型开始,当流式传输分类器介入处理潜在的策略违规时,Claude API 的流式传输响应会返回 stop_reason: "refusal"。此安全功能有助于在实时流式传输期间维护内容合规性。



本页介绍拒绝在流式传输响应中的呈现方式。有关每个 stop_reason 值及其处理方法,请参阅停止原因与备用方案。要在另一个 Claude 模型上重试被拒绝的请求,请参阅拒绝与备用方案。

API 响应格式

当流式传输分类器检测到违反 Anthropic 策略的内容时,API 会返回以下响应:

{
  "role": "assistant",
  "content": [
    {
      "type": "text",
      "text": "Hello.."
    }
  ],
  "stop_reason": "refusal"
}


响应中不包含额外的拒绝消息。您必须自行处理该响应并提供适当的面向用户的消息。

拒绝后重置上下文

当您收到 stop_reason: refusal 时,必须在继续之前重置对话上下文。您可以删除或重新表述触发拒绝的那一轮对话,或者完全清除对话历史记录。如果不重置就尝试继续,将会导致持续的拒绝。



即使响应被拒绝,响应中仍会提供使用量指标。

当拒绝在 Claude 生成任何输出之前到达时,您在 Claude API 上不会为该请求付费,该响应中的使用量计数仅供参考。当 Claude 在拒绝之前已生成输出时,您需要为该请求付费。



重置上下文并非唯一的恢复方式。您还可以在不同的 Claude 模型上重试被拒绝的请求,拒绝与备用方案页面展示了如何通过服务器端备用方案、SDK 中间件或手动重试来进行设置。

实现指南

以下是如何在您的应用程序中检测和处理流式传输拒绝:

当前的拒绝类型

API 目前以三种不同的方式处理拒绝:

拒绝类型响应格式发生时机
流式传输分类器拒绝stop_reason: refusal在流式传输期间内容违反策略时
API 输入和版权验证400 错误代码当输入未通过验证检查时
模型生成的拒绝标准文本响应当模型自身决定拒绝时


未来的 API 版本将扩展 stop_reason: refusal 模式,以统一所有类型的拒绝处理。

最佳实践

  • 监控拒绝: 在您的错误处理中包含 stop_reason: refusal 检查
  • 自动重置: 在检测到拒绝时实现自动上下文重置
  • 回退到另一个模型: 配置服务器端备用方案或 SDK 中间件,以便在另一个 Claude 模型上重试被拒绝的请求,而不是向用户显示拒绝
  • 在手动重试时兑换备用额度: 如果您自行构建重试逻辑,请传递拒绝响应中的 fallback credit(备用额度)令牌,以避免重试时重复支付提示缓存成本
  • 提供自定义消息: 创建用户友好的消息,以便在发生拒绝时提供更好的用户体验
  • 跟踪拒绝模式: 监控拒绝频率,以识别您的提示中可能存在的问题

迁移说明

如果您在此功能首次发布时构建了拒绝处理逻辑,或者正在将其添加到现有集成中,请检查以下内容:

  • 拒绝是响应,而非错误。 拒绝以带有 stop_reason: "refusal" 的成功 HTTP 200 响应形式到达,因此仅基于错误率构建的监控不会捕获到它。请将拒绝作为独立的信号进行跟踪。
  • 较新的模型返回更多详细信息。 在 Claude Fable 5 上,拒绝还包含一个 stop_details 对象,用于标识拒绝背后的策略类别。有关完整的响应结构,请参阅拒绝与备用方案。
  • 在不同的模型上重试。 将被拒绝的请求重新发送到同一模型通常会导致再次拒绝。不要仅重置上下文,而应通过服务器端备用方案、SDK 中间件或手动重试在备用模型上重试,并在自行构建重试逻辑时兑换备用额度。
  • 检查批处理结果中的拒绝。 消息批处理中被拒绝的请求会作为带有 stop_reason: "refusal" 的成功结果返回,而不是作为错误结果返回。
  • 围绕 stop_reason 集中处理。 API 会持续将拒绝处理整合到 stop_reason: "refusal" 上,因此请基于停止原因进行分支处理,而不是基于特定模型的行为。

后续步骤

拒绝与备用方案

在服务器端或客户端中,在另一个 Claude 模型上重试被拒绝的请求。


停止原因与备用方案

每个 stop_reason 值及其处理方法。


流式传输消息

流式传输响应,并在 message_delta 事件到达时从中读取 stop_reason。

Was this page helpful?

  • API 响应格式
  • 拒绝后重置上下文
  • 实现指南
  • 当前的拒绝类型
  • 最佳实践
  • 迁移说明
  • 后续步骤
client = anthropic.Anthropic()
messages = []


def reset_conversation():
    """Reset conversation context after refusal"""
    global messages
    messages = []
    print("Conversation reset due to refusal")


try:
    with client.messages.stream(
        max_tokens=1024,
        messages=messages + [{"role": "user", "content": "Hello"}],
        model="claude-opus-4-8",
    ) as stream:
        for event in stream:
            # 检查消息增量中的拒绝
            if event.type == "message_delta":
                if event.delta.stop_reason == "refusal":
                    reset_conversation()
                    break
except Exception as e:
    print(f"Error: {e}")

多语言支持

利用 Claude 的跨语言能力为不同语言的用户提供服务。