Loading...
  • ビルド
  • 管理
  • モデルと料金
  • クライアントSDK
  • APIリファレンス
Search...
⌘K
Log in
ストリーミング拒否
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...

Solutions

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

Partners

  • Amazon Bedrock
  • Google Cloud's Vertex AI

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モデルでのストリーミング応答時の拒否処理について学びます

Was this page helpful?

  • API応答形式

Claude 4モデル以降、ClaudeのAPIからのストリーミング応答は、ストリーミング分類器がポリシー違反の可能性を処理する際に**stop_reason: "refusal"**を返します。この新しいセーフティ機能は、リアルタイムストリーミング中のコンテンツコンプライアンスを維持するのに役立ちます。

Claude Sonnet 4.5のAPIセーフティフィルターによってトリガーされた拒否について詳しく知るには、Understanding Sonnet 4.5's API Safety Filtersを参照してください。

API応答形式

ストリーミング分類器がAnthropicのポリシーに違反するコンテンツを検出すると、APIは以下の応答を返します:

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

追加の拒否メッセージは含まれません。応答を処理し、適切なユーザー向けメッセージを提供する必要があります。

拒否後のコンテキストのリセット

stop_reason: refusalを受け取った場合、続行する前に拒否されたターンを削除または更新することでコンテキストをリセットする必要があります。リセットなしで続行しようとすると、拒否が続きます。

使用メトリクスは、応答が拒否された場合でも、課金目的で応答に含まれます。

拒否までの出力トークンについて課金されます。

Claude Sonnet 4.5またはOpus 4.1を使用している際にrefusalストップ理由が頻繁に発生する場合は、APIコールをHaiku 4.5(claude-haiku-4-5-20251001)を使用するように更新してみてください。これは異なる使用制限があります。Sonnet 4.5のAPIセーフティフィルターの理解について詳しく学びます。

実装ガイド

アプリケーションでストリーミング拒否を検出して処理する方法は以下の通りです:

現在の拒否タイプ

APIは現在、3つの異なる方法で拒否を処理します:

拒否タイプ応答形式発生時期
ストリーミング分類器拒否stop_reason: refusalストリーミング中にコンテンツがポリシーに違反する場合
API入力および著作権検証400エラーコード入力が検証チェックに失敗する場合
モデル生成拒否標準テキスト応答モデル自体が拒否を決定する場合

将来のAPIバージョンでは、**stop_reason: refusal**パターンを拡張して、すべてのタイプの拒否処理を統一します。

ベストプラクティス

  • 拒否を監視する: エラーハンドリングに**stop_reason: refusal**チェックを含める
  • 自動的にリセットする: 拒否が検出されたときに自動的にコンテキストをリセットする実装
  • カスタムメッセージを提供する: 拒否が発生した場合のUX向上のためにユーザーフレンドリーなメッセージを作成する
  • 拒否パターンを追跡する: 拒否の頻度を監視して、プロンプトの潜在的な問題を特定する

マイグレーションノート

  • 将来のモデルはこのパターンを他の拒否タイプに拡張します
  • 拒否応答の将来の統一に対応するようにエラーハンドリングを計画してください
client = anthropic.Anthropic()
messages = []


def reset_conversation():
    """拒否後のコンテキストをリセット"""
    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-sonnet-4-6",
    ) as stream:
        for event in stream:
            # メッセージデルタの拒否をチェック
            if hasattr(event, "type") and event.type == "message_delta":
                if event.delta.stop_reason == "refusal":
                    reset_conversation()
                    break
except Exception as e:
    print(f"Error: {e}")