Loading...
    • 開発者ガイド
    • APIリファレンス
    • MCP
    • リソース
    • リリースノート
    Search...
    ⌘K
    最初のステップ
    Claudeの紹介クイックスタート
    モデルと価格
    モデル概要モデルの選択Claude 4.5の新機能Claude 4.5への移行モデルの廃止予定価格
    Claudeで構築
    機能概要Messages APIの使用コンテキストウィンドウプロンプトのベストプラクティス
    機能
    プロンプトキャッシングコンテキスト編集拡張思考エフォートストリーミングメッセージバッチ処理引用多言語サポートトークンカウント埋め込みビジョンPDFサポートFiles API検索結果構造化出力Google Sheetsアドオン
    ツール
    概要ツール使用の実装方法トークン効率的なツール使用細粒度ツールストリーミングBashツールコード実行ツールプログラマティックツール呼び出しコンピュータ使用ツールテキストエディタツールWebフェッチツールWeb検索ツールメモリツールツール検索ツール
    エージェントスキル
    概要クイックスタートベストプラクティスAPIでスキルを使用
    エージェントSDK
    概要TypeScript SDKPython SDK移行ガイド
    ガイド
    ストリーミング入力権限の処理セッション管理SDKの構造化出力エージェントSDKのホスティングシステムプロンプトの変更SDKのMCPカスタムツールSDKのサブエージェントSDKのスラッシュコマンドSDKのエージェントスキルコストと使用状況の追跡ToDoリストSDKのプラグイン
    APIのMCP
    MCPコネクタリモートMCPサーバー
    サードパーティプラットフォームのClaude
    Amazon BedrockMicrosoft FoundryVertex AI
    プロンプトエンジニアリング
    概要プロンプトジェネレータプロンプトテンプレートを使用プロンプト改善ツール明確で直接的に例を使用(マルチショットプロンプティング)Claudeに考えさせる(CoT)XMLタグを使用Claudeに役割を与える(システムプロンプト)Claudeの応答を事前入力複雑なプロンプトをチェーン長いコンテキストのヒント拡張思考のヒント
    テストと評価
    成功基準を定義テストケースを開発評価ツールの使用レイテンシの削減
    ガードレールを強化
    ハルシネーションを削減出力の一貫性を向上ジェイルブレイクを軽減ストリーミング拒否プロンプトリークを削減Claudeをキャラクターに保つ
    管理とモニタリング
    Admin API概要使用状況とコストAPIClaude Code Analytics API
    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
    • Catalog
    • 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
    • Catalog
    • 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
    機能

    構造化された出力

    エージェントワークフローから検証済みのJSON結果を取得する

    構造化された出力は、Claude の応答を特定のスキーマに従うように制限し、ダウンストリーム処理のための有効で解析可能な出力を保証します。構造化データレスポンスには JSON 出力 (output_format) を使用するか、ツール名と入力の保証されたスキーマ検証には 厳密なツール使用 (strict: true) を使用してください。

    構造化された出力は現在、Claude Sonnet 4.5 および Claude Opus 4.1 の Claude API でパブリックベータ機能として利用可能です。

    この機能を使用するには、ベータヘッダー structured-outputs-2025-11-13 を設定してください。

    このフォーム(https://forms.gle/BFnYc6iCkWoRzFgk7)を使用してフィードバックを共有してください。

    構造化された出力を使用する理由

    構造化された出力がない場合、Claude は不正な形式の JSON レスポンスまたは無効なツール入力を生成し、アプリケーションを破壊する可能性があります。注意深いプロンプティングでも、以下に遭遇する可能性があります:

    • 無効な JSON 構文からの解析エラー
    • 必須フィールドの欠落
    • 一貫性のないデータ型
    • エラー処理と再試行が必要なスキーマ違反

    構造化された出力は、制約付きデコーディングを通じてスキーマ準拠のレスポンスを保証します:

    • 常に有効: JSON.parse() エラーはもうありません
    • : フィールド型と必須フィールドが保証されます
    • JSON 出力と厳密なツール使用をいつ使用するか
    • SDK での JSON 出力の操作
    • Pydantic と Zod の使用
    • SDK 固有のメソッド
    • SDK 変換の仕組み
    • JSON Schema の制限
    型安全
  1. 信頼性: スキーマ違反のための再試行は不要です
  2. 2つのモード: データ抽出などのタスク用の JSON、複雑なツールとエージェンティックワークフロー用の厳密なツール
  3. クイックスタート

    JSON 出力と厳密なツール使用をいつ使用するか

    ユースケースに適したモードを選択してください:

    JSON 出力を使用する場合厳密なツール使用を使用する場合
    Claude のレスポンスが特定の形式である必要がある場合ツール呼び出しの検証済みパラメータとツール名が必要な場合
    画像またはテキストからのデータ抽出エージェンティックワークフローの構築
    構造化されたレポートの生成型安全な関数呼び出しの確保
    API レスポンスのフォーマット多くの、および/またはネストされたプロパティを持つ複雑なツール

    エージェント向けの厳密なツール使用が重要な理由

    信頼性の高いエージェンティックシステムの構築には、保証されたスキーマ準拠が必要です。無効なツールパラメータは関数とワークフローを破壊します。Claude は互換性のない型("2" の代わりに 2)または欠落フィールドを返す可能性があり、ランタイムエラーが発生します。

    厳密なツール使用は型安全なパラメータを保証します:

    • 関数は毎回正しく型付けされた引数を受け取ります
    • ツール呼び出しを検証して再試行する必要がありません
    • スケールで一貫して機能する本番対応エージェント

    例えば、予約システムが passengers: int を必要とするとします。厳密モードがない場合、Claude は passengers: "two" または passengers: "2" を提供する可能性があります。strict: true を使用すると、passengers: 2 が保証されます。

    構造化された出力の仕組み

    SDK での JSON 出力の操作

    Python と TypeScript SDK は、スキーマ変換、自動検証、および一般的なスキーマライブラリとの統合を含む、JSON 出力の操作を容易にするヘルパーを提供します。

    Pydantic と Zod の使用

    Python と TypeScript 開発者は、生の JSON スキーマを記述する代わりに、Pydantic や Zod などの使い慣れたスキーマ定義ツールを使用できます。

    JSON 出力のみ

    SDK ヘルパー(Pydantic、Zod、parse())は JSON 出力(output_format)でのみ機能します。

    これらのヘルパーは Claude の出力をあなたに変換して検証します。厳密なツール使用は Claude の入力をツールに検証し、ツール定義の既存の input_schema フィールドを使用します。

    厳密なツール使用の場合、ツール定義で strict: true を使用して input_schema を直接定義します。

    from pydantic import BaseModel
    from anthropic import Anthropic, transform_schema
    
    class ContactInfo(BaseModel):
        name: str
        email: str
        plan_interest: str
        demo_requested: bool
    
    client = Anthropic()
    
    # With .create() - requires transform_schema()
    response = client.beta.messages.create(
        model="claude-sonnet-4-5",
        max_tokens=1024,
        betas=["structured-outputs-2025-11-13"],
        messages=[
            {
                "role": "user",
                "content": "Extract the key information from this email: John Smith ([email protected]) is interested in our Enterprise plan and wants to schedule a demo for next Tuesday at 2pm."
            }
        ],
        output_format={
            "type": "json_schema",
            "schema": transform_schema(ContactInfo),
        }
    )
    
    print(response.content[0].text)
    
    # With .parse() - can pass Pydantic model directly
    response = client.beta.messages.parse(
        model="claude-sonnet-4-5",
        max_tokens=1024,
        betas=["structured-outputs-2025-11-13"],
        messages=[
            {
                "role": "user",
                "content": "Extract the key information from this email: John Smith ([email protected]) is interested in our Enterprise plan and wants to schedule a demo for next Tuesday at 2pm."
            }
        ],
        output_format=ContactInfo,
    )
    
    print(response.parsed_output)

    SDK 固有のメソッド

    Python: client.beta.messages.parse() (推奨)

    parse() メソッドは自動的に Pydantic モデルを変換し、レスポンスを検証し、parsed_output 属性を返します。

    parse() メソッドは client.messages ではなく client.beta.messages で利用可能です。

    Python: transform_schema() ヘルパー

    スキーマを送信する前に手動で変換する必要がある場合、または Pydantic 生成スキーマを変更したい場合に使用します。client.beta.messages.parse() は提供されたスキーマを自動的に変換するのとは異なり、これはあなたに変換されたスキーマを提供するため、さらにカスタマイズできます。

    SDK 変換の仕組み

    Python と TypeScript SDK は、サポートされていない機能を持つスキーマを自動的に変換します:

    1. サポートされていない制約を削除 (例:minimum、maximum、minLength、maxLength)
    2. 説明を更新 制約情報を含める(例:「最低 100 である必要があります」)、制約が構造化された出力で直接サポートされていない場合
    3. すべてのオブジェクトに additionalProperties: false を追加
    4. 文字列形式をサポートされているリストのみにフィルタリング
    5. 元のスキーマに対してレスポンスを検証 (すべての制約を含む)

    これは Claude が簡略化されたスキーマを受け取ることを意味しますが、コードは検証を通じてすべての制約を引き続き適用します。

    例: minimum: 100 を持つ Pydantic フィールドは送信されたスキーマでプレーン整数になりますが、説明は「最低 100 である必要があります」に更新され、SDK は元の制約に対してレスポンスを検証します。

    一般的なユースケース

    重要な考慮事項

    文法コンパイルとキャッシング

    構造化された出力は、コンパイルされた文法アーティファクトを使用した制約付きサンプリングを使用します。これにより、認識する必要があるいくつかのパフォーマンス特性が導入されます:

    • 最初のリクエストレイテンシ: 特定のスキーマを初めて使用する場合、文法がコンパイルされている間に追加のレイテンシが発生します
    • 自動キャッシング: コンパイルされた文法は最後の使用から 24 時間キャッシュされ、その後のリクエストがはるかに高速になります
    • キャッシュ無効化: 以下を変更した場合、キャッシュは無効化されます:
      • JSON スキーマ構造
      • リクエスト内のツールのセット(構造化された出力とツール使用の両方を使用する場合)
      • name または description フィールドのみを変更してもキャッシュは無効化されません

    プロンプト変更とトークンコスト

    構造化された出力を使用する場合、Claude は自動的に予想される出力形式を説明する追加のシステムプロンプトを受け取ります。これは以下を意味します:

    • 入力トークン数がわずかに増加します
    • 注入されたプロンプトは他のシステムプロンプトと同様にトークンがかかります
    • output_format パラメータを変更すると、その会話スレッドの プロンプトキャッシュ が無効化されます

    JSON Schema の制限

    構造化された出力は標準 JSON Schema をサポートしていますが、いくつかの制限があります。JSON 出力と厳密なツール使用の両方がこれらの制限を共有します。

    Python と TypeScript SDK は、サポートされていない機能を持つスキーマを自動的に変換し、それらを削除してフィールド説明に制約を追加できます。詳細は SDK 固有のメソッド を参照してください。

    無効な出力

    構造化された出力はほとんどの場合スキーマ準拠を保証しますが、出力がスキーマと一致しない可能性があるシナリオがあります:

    拒否 (stop_reason: "refusal")

    Claude は構造化された出力を使用する場合でも、安全性と有用性のプロパティを維持します。Claude が安全上の理由でリクエストを拒否する場合:

    • レスポンスは stop_reason: "refusal" を持ちます
    • 200 ステータスコードを受け取ります
    • 生成されたトークンに対して課金されます
    • 出力はスキーマと一致しない可能性があります(拒否が優先されます)

    トークン制限に達した (stop_reason: "max_tokens")

    max_tokens 制限に達したためにレスポンスが切断された場合:

    • レスポンスは stop_reason: "max_tokens" を持ちます
    • 出力は不完全でスキーマと一致しない可能性があります
    • より高い max_tokens 値で再試行して、完全な構造化出力を取得します

    スキーマ検証エラー

    スキーマがサポートされていない機能を使用しているか、複雑すぎる場合、400 エラーが表示されます:

    「スキーマ内の再帰的定義が多すぎます」

    • 原因: スキーマに過度な、または循環的な再帰的定義があります
    • 解決策: スキーマ構造を簡略化し、ネストの深さを減らします

    「スキーマが複雑すぎます」

    • 原因: スキーマが複雑さの制限を超えています
    • 解決策: より小さなスキーマに分割し、構造を簡略化するか、strict: true としてマークされたツールの数を減らします

    有効なスキーマの永続的な問題については、スキーマ定義を含めて サポートに連絡 してください。

    機能の互換性

    動作:

    • バッチ処理: 50% 割引で大規模に構造化された出力を処理します
    • トークンカウント: コンパイルなしでトークンをカウントします
    • ストリーミング: 通常のレスポンスのように構造化された出力をストリーミングします
    • 組み合わせ使用: 同じリクエストで JSON 出力(output_format)と厳密なツール使用(strict: true)を一緒に使用します

    互換性がない:

    • 引用: 引用はテキストと引用ブロックをインターリーブする必要があり、これは厳密な JSON スキーマ制約と競合します。output_format で引用が有効な場合、400 エラーを返します。
    • メッセージプリフィリング: JSON 出力と互換性がありません

    文法スコープ: 文法は Claude の直接出力にのみ適用され、ツール使用呼び出し、ツール結果、または思考タグ(拡張思考を使用する場合)には適用されません。文法状態はセクション間でリセットされ、Claude が自由に考えることができながら、最終レスポンスで構造化された出力を生成できます。