Loading...
    • ビルド
    • 管理
    • モデルと料金
    • クライアントSDK
    • APIリファレンス
    Search...
    ⌘K
    はじめに
    Claudeの概要クイックスタート
    Claudeで構築する
    機能概要Messages APIの使用停止理由の処理
    モデルの機能
    拡張思考適応的思考エフォート高速モード(ベータ:リサーチプレビュー)構造化出力引用ストリーミングメッセージバッチ処理検索結果ストリーミング拒否多言語サポート埋め込み
    ツール
    概要ツール使用の仕組みウェブ検索ツールウェブフェッチツールコード実行ツールメモリツールBashツールコンピューター使用ツールテキストエディタツール
    ツールインフラ
    ツール検索プログラムによるツール呼び出し細粒度ツールストリーミング
    コンテキスト管理
    コンテキストウィンドウコンパクションコンテキスト編集プロンプトキャッシュトークンカウント
    ファイルの操作
    Files APIPDFサポート画像とビジョン
    スキル
    概要クイックスタートベストプラクティスエンタープライズ向けスキルAPIのスキル
    MCP
    リモートMCPサーバーMCPコネクター
    プロンプトエンジニアリング
    概要プロンプトのベストプラクティスConsoleプロンプトツール
    テストと評価
    成功の定義と評価の構築ConsoleでのEvaluation Toolの使用レイテンシの削減
    ガードレールの強化
    幻覚の低減出力の一貫性向上ジェイルブレイクの軽減プロンプトリークの低減
    リソース
    用語集
    リリースノート
    Claude Platform
    Console
    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
    モデルの機能

    メッセージのストリーミング

    メッセージをストリーミングして、サーバー送信イベント(SSE)を使用してレスポンスをインクリメンタルに受け取る方法を学びます。

    メッセージを作成する際に、"stream": trueを設定することで、サーバー送信イベント(SSE)を使用してレスポンスをインクリメンタルにストリーミングできます。

    SDK でのストリーミング

    Python と TypeScript SDK は複数のストリーミング方法を提供しています。PHP SDK は createStream() 経由でストリーミングを提供しています。Python SDK は同期と非同期の両方のストリームをサポートしています。詳細は各 SDK のドキュメントを参照してください。

    ant messages create --stream --format jsonl \
      --model claude-opus-4-6 \
      --max-tokens 1024 \
      --message '{role: user, content: "Hello"}' \
      | while IFS= read -r event; do
          [[ $event == *'"text_delta"'* ]] || continue
          text=${event#*'"text":"'}
          printf '%b' "${text%\"*}"
        done

    イベント処理なしで最終メッセージを取得する

    テキストが到着するにつれて処理する必要がない場合、SDK は内部でストリーミングを使用しながら、.create() が返すものと同じ完全な Message オブジェクトを返す方法を提供しています。これは特に大きな max_tokens 値を持つリクエストに対して便利です。SDK がHTTPタイムアウトを回避するためにストリーミングが必要な場合があります。

    # ant CLI の --stream フラグは1行ごとに1つのイベントを出力し、
    # 最終的な Message に蓄積されません。長い生成の場合は、
    # 生のイベントをストリーミングしてください:
    ant messages create --stream --format jsonl <<'YAML'
    model: claude-opus-4-6
    max_tokens: 128000
    messages:
      - role: user
        content: Write a detailed analysis...
    YAML

    .stream() 呼び出しはサーバー送信イベントで HTTP 接続を保持し、その後 .get_final_message()(Python)または .finalMessage()(TypeScript)がすべてのイベントを蓄積して完全な Message オブジェクトを返します。Go では、ストリームループ内で message.Accumulate(event) を呼び出して同じ完全な Message を構築します。Java では、MessageAccumulator.create() を使用し、各イベントで accumulator.accumulate(event) を呼び出します。Ruby では、ストリームで .accumulated_message を呼び出します。PHP SDK では、ストリームイベントを手動で反復処理してレスポンスを蓄積します。

    イベントタイプ

    各サーバー送信イベントには、名前付きイベントタイプと関連する JSON データが含まれています。各イベントは SSE イベント名(例:event: message_stop)を使用し、そのデータに一致するイベント type を含みます。

    各ストリームは以下のイベントフローを使用します:

    1. message_start:空の content を持つ Message オブジェクトを含みます。
    2. 一連のコンテンツブロック。各ブロックには content_block_start、1 つ以上の content_block_delta イベント、および content_block_stop イベントがあります。各コンテンツブロックには、最終的な Message content 配列内のそのインデックスに対応する index があります。
    3. 1 つ以上の message_delta イベント。最終的な Message オブジェクトへのトップレベルの変更を示します。
    4. 最終的な message_stop イベント。

    message_delta イベントの usage フィールドに表示されるトークンカウントは累積的です。

    Ping イベント

    イベントストリームには、任意の数の ping イベントが含まれる場合があります。

    エラーイベント

    API は、イベントストリーム内でエラーを送信することがあります。例えば、使用量が多い期間中に、overloaded_error を受け取る可能性があります。これは通常、ストリーミング以外のコンテキストでは HTTP 529 に対応します:

    エラーの例
    event: error
    data: {"type": "error", "error": {"type": "overloaded_error", "message": "Overloaded"}}

    その他のイベント

    バージョニングポリシーに従い、新しいイベントタイプが追加される可能性があり、コードは不明なイベントタイプを適切に処理する必要があります。

    コンテンツブロックデルタタイプ

    各 content_block_delta イベントには、指定された index でコンテンツブロックを更新する delta が含まれています。

    テキストデルタ

    text コンテンツブロックデルタは以下のようになります:

    テキストデルタ
    event: content_block_delta
    data: {"type": "content_block_delta","index": 0,"delta": {"type": "text_delta", "text": "ello frien"}}

    入力 JSON デルタ

    tool_use コンテンツブロックのデルタは、ブロックの input フィールドの更新に対応しています。最大の粒度をサポートするために、デルタは部分的な JSON 文字列ですが、最終的な tool_use.input は常にオブジェクトです。

    文字列デルタを蓄積し、content_block_stop イベントを受け取った後に JSON を解析できます。Pydantic のようなライブラリを使用して部分的な JSON 解析を行うか、解析されたインクリメンタル値にアクセスするためのヘルパーを提供する SDK を使用します。

    tool_use コンテンツブロックデルタは以下のようになります:

    入力 JSON デルタ
    event: content_block_delta
    data: {"type": "content_block_delta","index": 1,"delta": {"type": "input_json_delta","partial_json": "{\"location\": \"San Fra"}}

    注:現在のモデルは、input から一度に 1 つの完全なキーと値のプロパティのみを出力することをサポートしています。そのため、ツールを使用する場合、モデルが作業中の間、ストリーミングイベント間に遅延が生じる可能性があります。input キーと値が蓄積されると、チャンク化された部分的な JSON を含む複数の content_block_delta イベントとして出力されるため、フォーマットは将来のモデルでより細かい粒度を自動的にサポートできます。

    思考デルタ

    ストリーミングが有効な状態で拡張思考を使用する場合、thinking_delta イベント経由で思考コンテンツを受け取ります。これらのデルタは、thinking コンテンツブロックの thinking フィールドに対応しています。

    思考コンテンツの場合、content_block_stop イベントの直前に特別な signature_delta イベントが送信されます。この署名は思考ブロックの整合性を検証するために使用されます。

    思考設定で display: "omitted" が設定されている場合、thinking_delta イベントは送信されません。思考ブロックが開き、単一の signature_delta を受け取り、閉じます。思考表示の制御を参照してください。

    典型的な思考デルタは以下のようになります:

    思考デルタ
    event: content_block_delta
    data: {"type": "content_block_delta", "index": 0, "delta": {"type": "thinking_delta", "thinking": "I need to find the GCD of 1071 and 462 using the Euclidean algorithm.\n\n1071 = 2 × 462 + 147"}}

    署名デルタは以下のようになります:

    署名デルタ
    event: content_block_delta
    data: {"type": "content_block_delta", "index": 0, "delta": {"type": "signature_delta", "signature": "EqQBCgIYAhIM1gbcDa9GJwZA2b3hGgxBdjrkzLoky3dl1pkiMOYds..."}}

    完全な HTTP ストリームレスポンス

    ストリーミングモードを使用する場合は、クライアント SDK を使用してください。ただし、直接 API 統合を構築している場合は、これらのイベントを自分で処理する必要があります。

    ストリームレスポンスは以下で構成されています:

    1. message_start イベント
    2. 潜在的に複数のコンテンツブロック。各ブロックには以下が含まれます:
      • content_block_start イベント
      • 潜在的に複数の content_block_delta イベント
      • content_block_stop イベント
    3. message_delta イベント
    4. message_stop イベント

    レスポンス全体に ping イベントが分散している場合があります。フォーマットの詳細については、イベントタイプを参照してください。

    基本的なストリーミングリクエスト

    curl https://api.anthropic.com/v1/messages \
         --header "anthropic-version: 2023-06-01" \
         --header "content-type: application/json" \
         --header "x-api-key: $ANTHROPIC_API_KEY" \
         --data \
    '{
      "model": "claude-opus-4-6",
      "messages": [{"role": "user", "content": "Hello"}],
      "max_tokens": 256,
      "stream": true
    }'
    レスポンス
    event: message_start
    data: {"type": "message_start", "message": {"id": "msg_1nZdL29xx5MUA1yADyHTEsnR8uuvGzszyY", "type": "message", "role": "assistant", "content": [], "model": "claude-opus-4-6", "stop_reason": null, "stop_sequence": null, "usage": {"input_tokens": 25, "output_tokens": 1}}}
    
    event: content_block_start
    data: {"type": "content_block_start", "index": 0, "content_block": {"type": "text", "text": ""}}
    
    event: ping
    data: {"type": "ping"}
    
    event: content_block_delta
    data: {"type": "content_block_delta", "index": 0, "delta": {"type": "text_delta", "text": "Hello"}}
    
    event: content_block_delta
    data: {"type": "content_block_delta", "index": 0, "delta": {"type": "text_delta", "text": "!"}}
    
    event: content_block_stop
    data: {"type": "content_block_stop", "index": 0}
    
    event: message_delta
    data: {"type": "message_delta", "delta": {"stop_reason": "end_turn", "stop_sequence":null}, "usage": {"output_tokens": 15}}
    
    event: message_stop
    data: {"type": "message_stop"}
    

    ツール使用によるストリーミングリクエスト

    ツール使用は、パラメータ値のきめ細かいストリーミングをサポートしています。eager_input_streamingでツールごとに有効にします。

    このリクエストは、Claudeにツールを使用して天気を報告するよう求めています。

      curl https://api.anthropic.com/v1/messages \
        -H "content-type: application/json" \
        -H "x-api-key: $ANTHROPIC_API_KEY" \
        -H "anthropic-version: 2023-06-01" \
        -d '{
          "model": "claude-opus-4-6",
          "max_tokens": 1024,
          "tools": [
            {
              "name": "get_weather",
              "description": "Get the current weather in a given location",
              "input_schema": {
                "type": "object",
                "properties": {
                  "location": {
                    "type": "string",
                    "description": "The city and state, e.g. San Francisco, CA"
                  }
                },
                "required": ["location"]
              }
            }
          ],
          "tool_choice": {"type": "any"},
          "messages": [
            {
              "role": "user",
              "content": "What is the weather like in San Francisco?"
            }
          ],
          "stream": true
        }'
    Response
    event: message_start
    data: {"type":"message_start","message":{"id":"msg_014p7gG3wDgGV9EUtLvnow3U","type":"message","role":"assistant","model":"claude-opus-4-6","stop_sequence":null,"usage":{"input_tokens":472,"output_tokens":2},"content":[],"stop_reason":null}}
    
    event: content_block_start
    data: {"type":"content_block_start","index":0,"content_block":{"type":"text","text":""}}
    
    event: ping
    data: {"type": "ping"}
    
    event: content_block_delta
    data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"Okay"}}
    
    event: content_block_delta
    data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":","}}
    
    event: content_block_delta
    data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" let"}}
    
    event: content_block_delta
    data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"'s"}}
    
    event: content_block_delta
    data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" check"}}
    
    event: content_block_delta
    data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" the"}}
    
    event: content_block_delta
    data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" weather"}}
    
    event: content_block_delta
    data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" for"}}
    
    event: content_block_delta
    data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" San"}}
    
    event: content_block_delta
    data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" Francisco"}}
    
    event: content_block_delta
    data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":","}}
    
    event: content_block_delta
    data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" CA"}}
    
    event: content_block_delta
    data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":":"}}
    
    event: content_block_stop
    data: {"type":"content_block_stop","index":0}
    
    event: content_block_start
    data: {"type":"content_block_start","index":1,"content_block":{"type":"tool_use","id":"toolu_01T1x1fJ34qAmk2tNTrN7Up6","name":"get_weather","input":{}}}
    
    event: content_block_delta
    data: {"type":"content_block_delta","index":1,"delta":{"type":"input_json_delta","partial_json":""}}
    
    event: content_block_delta
    data: {"type":"content_block_delta","index":1,"delta":{"type":"input_json_delta","partial_json":"{\"location\":"}}
    
    event: content_block_delta
    data: {"type":"content_block_delta","index":1,"delta":{"type":"input_json_delta","partial_json":" \"San"}}
    
    event: content_block_delta
    data: {"type":"content_block_delta","index":1,"delta":{"type":"input_json_delta","partial_json":" Francisc"}}
    
    event: content_block_delta
    data: {"type":"content_block_delta","index":1,"delta":{"type":"input_json_delta","partial_json":"o,"}}
    
    event: content_block_delta
    data: {"type":"content_block_delta","index":1,"delta":{"type":"input_json_delta","partial_json":" CA\""}}
    
    event: content_block_delta
    data: {"type":"content_block_delta","index":1,"delta":{"type":"input_json_delta","partial_json":","}}
    
    event: content_block_delta
    data: {"type":"content_block_delta","index":1,"delta":{"type":"input_json_delta","partial_json":" \"unit\": \"fah"}}
    
    event: content_block_delta
    data: {"type":"content_block_delta","index":1,"delta":{"type":"input_json_delta","partial_json":"renheit\"}"}}
    
    event: content_block_stop
    data: {"type":"content_block_stop","index":1}
    
    event: message_delta
    data: {"type":"message_delta","delta":{"stop_reason":"tool_use","stop_sequence":null},"usage":{"output_tokens":89}}
    
    event: message_stop
    data: {"type":"message_stop"}

    拡張思考によるストリーミングリクエスト

    このリクエストは、ストリーミングで拡張思考を有効にして、Claudeのステップバイステップの推論を確認します。

    curl https://api.anthropic.com/v1/messages \
         --header "x-api-key: $ANTHROPIC_API_KEY" \
         --header "anthropic-version: 2023-06-01" \
         --header "content-type: application/json" \
         --data \
    '{
        "model": "claude-opus-4-6",
        "max_tokens": 20000,
        "stream": true,
        "thinking": {
            "type": "enabled",
            "budget_tokens": 16000
        },
        "messages": [
            {
                "role": "user",
                "content": "What is the greatest common divisor of 1071 and 462?"
            }
        ]
    }'
    Response
    event: message_start
    data: {"type": "message_start", "message": {"id": "msg_01...", "type": "message", "role": "assistant", "content": [], "model": "claude-opus-4-6", "stop_reason": null, "stop_sequence": null}}
    
    event: content_block_start
    data: {"type": "content_block_start", "index": 0, "content_block": {"type": "thinking", "thinking": "", "signature": ""}}
    
    event: content_block_delta
    data: {"type": "content_block_delta", "index": 0, "delta": {"type": "thinking_delta", "thinking": "I need to find the GCD of 1071 and 462 using the Euclidean algorithm.\n\n1071 = 2 × 462 + 147"}}
    
    event: content_block_delta
    data: {"type": "content_block_delta", "index": 0, "delta": {"type": "thinking_delta", "thinking": "\n462 = 3 × 147 + 21"}}
    
    event: content_block_delta
    data: {"type": "content_block_delta", "index": 0, "delta": {"type": "thinking_delta", "thinking": "\n147 = 7 × 21 + 0"}}
    
    event: content_block_delta
    data: {"type": "content_block_delta", "index": 0, "delta": {"type": "thinking_delta", "thinking": "\nThe remainder is 0, so GCD(1071, 462) = 21."}}
    
    event: content_block_delta
    data: {"type": "content_block_delta", "index": 0, "delta": {"type": "signature_delta", "signature": "EqQBCgIYAhIM1gbcDa9GJwZA2b3hGgxBdjrkzLoky3dl1pkiMOYds..."}}
    
    event: content_block_stop
    data: {"type": "content_block_stop", "index": 0}
    
    event: content_block_start
    data: {"type": "content_block_start", "index": 1, "content_block": {"type": "text", "text": ""}}
    
    event: content_block_delta
    data: {"type": "content_block_delta", "index": 1, "delta": {"type": "text_delta", "text": "The greatest common divisor of 1071 and 462 is **21**."}}
    
    event: content_block_stop
    data: {"type": "content_block_stop", "index": 1}
    
    event: message_delta
    data: {"type": "message_delta", "delta": {"stop_reason": "end_turn", "stop_sequence": null}}
    
    event: message_stop
    data: {"type": "message_stop"}

    Webサーチツール使用によるストリーミングリクエスト

    このリクエストは、Claudeに現在の天気情報をWebで検索するよう求めています。

    curl https://api.anthropic.com/v1/messages \
         --header "x-api-key: $ANTHROPIC_API_KEY" \
         --header "anthropic-version: 2023-06-01" \
         --header "content-type: application/json" \
         --data \
    '{
        "model": "claude-opus-4-6",
        "max_tokens": 1024,
        "stream": true,
        "tools": [
            {
                "type": "web_search_20250305",
                "name": "web_search",
                "max_uses": 5
            }
        ],
        "messages": [
            {
                "role": "user",
                "content": "What is the weather like in New York City today?"
            }
        ]
    }'
    Response
    event: message_start
    data: {"type":"message_start","message":{"id":"msg_01G...","type":"message","role":"assistant","model":"claude-opus-4-6","content":[],"stop_reason":null,"stop_sequence":null,"usage":{"input_tokens":2679,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":3}}}
    
    event: content_block_start
    data: {"type":"content_block_start","index":0,"content_block":{"type":"text","text":""}}
    
    event: content_block_delta
    data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"I'll check"}}
    
    event: content_block_delta
    data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" the current weather in New York City for you"}}
    
    event: ping
    data: {"type": "ping"}
    
    event: content_block_delta
    data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"."}}
    
    event: content_block_stop
    data: {"type":"content_block_stop","index":0}
    
    event: content_block_start
    data: {"type":"content_block_start","index":1,"content_block":{"type":"server_tool_use","id":"srvtoolu_014hJH82Qum7Td6UV8gDXThB","name":"web_search","input":{}}}
    
    event: content_block_delta
    data: {"type":"content_block_delta","index":1,"delta":{"type":"input_json_delta","partial_json":""}}
    
    event: content_block_delta
    data: {"type":"content_block_delta","index":1,"delta":{"type":"input_json_delta","partial_json":"{\"query"}}
    
    event: content_block_delta
    data: {"type":"content_block_delta","index":1,"delta":{"type":"input_json_delta","partial_json":"\":"}}
    
    event: content_block_delta
    data: {"type":"content_block_delta","index":1,"delta":{"type":"input_json_delta","partial_json":" \"weather"}}
    
    event: content_block_delta
    data: {"type":"content_block_delta","index":1,"delta":{"type":"input_json_delta","partial_json":" NY"}}
    
    event: content_block_delta
    data: {"type":"content_block_delta","index":1,"delta":{"type":"input_json_delta","partial_json":"C to"}}
    
    event: content_block_delta
    data: {"type":"content_block_delta","index":1,"delta":{"type":"input_json_delta","partial_json":"day\"}"}}
    
    event: content_block_stop
    data: {"type":"content_block_stop","index":1 }
    
    event: content_block_start
    data: {"type":"content_block_start","index":2,"content_block":{"type":"web_search_tool_result","tool_use_id":"srvtoolu_014hJH82Qum7Td6UV8gDXThB","content":[{"type":"web_search_result","title":"Weather in New York City in May 2025 (New York) - detailed Weather Forecast for a month","url":"https://world-weather.info/forecast/usa/new_york/may-2025/","encrypted_content":"Ev0DCioIAxgCIiQ3NmU4ZmI4OC1k...","page_age":null},...]}}
    
    event: content_block_stop
    data: {"type":"content_block_stop","index":2}
    
    event: content_block_start
    data: {"type":"content_block_start","index":3,"content_block":{"type":"text","text":""}}
    
    event: content_block_delta
    data: {"type":"content_block_delta","index":3,"delta":{"type":"text_delta","text":"Here's the current weather information for New York"}}
    
    event: content_block_delta
    data: {"type":"content_block_delta","index":3,"delta":{"type":"text_delta","text":" City:\n\n# Weather"}}
    
    event: content_block_delta
    data: {"type":"content_block_delta","index":3,"delta":{"type":"text_delta","text":" in New York City"}}
    
    event: content_block_delta
    data: {"type":"content_block_delta","index":3,"delta":{"type":"text_delta","text":"\n\n"}}
    
    ...
    
    event: content_block_stop
    data: {"type":"content_block_stop","index":17}
    
    event: message_delta
    data: {"type":"message_delta","delta":{"stop_reason":"end_turn","stop_sequence":null},"usage":{"input_tokens":10682,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":510,"server_tool_use":{"web_search_requests":1}}}
    
    event: message_stop
    data: {"type":"message_stop"}

    エラー復旧

    Claude 4.5以前

    Claude 4.5モデル以前では、ネットワークの問題、タイムアウト、またはその他のエラーによって中断されたストリーミングリクエストを、ストリームが中断された場所から再開することで復旧できます。このアプローチにより、応答全体を再処理する必要がなくなります。

    基本的な復旧戦略には以下が含まれます:

    1. 部分的な応答をキャプチャする: エラーが発生する前に正常に受信されたすべてのコンテンツを保存する
    2. 継続リクエストを構築する: 部分的なアシスタント応答を新しいアシスタントメッセージの開始として含む新しいAPIリクエストを作成する
    3. ストリーミングを再開する: 中断された場所から応答の残りを受信し続ける

    Claude 4.6

    Claude 4.6モデルの場合、モデルに中断された場所から続行するよう指示するユーザーメッセージを追加する必要があります。例えば:

    Sample prompt
    Your previous response was interrupted and ended with [previous_response]. Continue from where you left off.

    エラー復旧のベストプラクティス

    1. SDKの機能を使用する: SDKの組み込みメッセージ蓄積とエラー処理機能を活用する
    2. コンテンツタイプを処理する: メッセージは複数のコンテンツブロック(text、tool_use、thinking)を含むことができることに注意する。ツール使用と拡張思考ブロックは部分的に復旧できません。最新のテキストブロックからストリーミングを再開できます。

    Was this page helpful?

    • SDK でのストリーミング
    • Ping イベント
    • 入力 JSON デルタ
    • 完全な HTTP ストリームレスポンス
    • Webサーチツール使用によるストリーミングリクエスト
    • Claude 4.5以前
    • Claude 4.6