Loading...
    • 構築
    • 管理
    • モデルと価格
    • クライアントSDK
    • APIリファレンス
    Search...
    ⌘K
    最初のステップ
    Claudeの紹介クイックスタート
    Claudeで構築
    機能概要Messages APIの使用Claude 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
    Documentation

    ツールを定義する

    ツールスキーマを指定し、効果的な説明を書き、Claudeがツールを呼び出すタイミングを制御します。

    Was this page helpful?

    • Claudeの出力を制御する

    モデルの選択

    複雑なツールと曖昧なクエリには、最新のClaude Opus(4.7)モデルを使用してください。複数のツールをより適切に処理し、必要に応じて明確化を求めます。

    シンプルなツールにはClaude Haikuモデルを使用できますが、不足しているパラメータを推測する可能性があることに注意してください。

    Claude とツール使用および拡張思考を使用する場合は、拡張思考ガイドを参照してください。

    クライアントツールの指定

    クライアントツール(Anthropicスキーマとユーザーカスタムスキーマの両方)は、APIリクエストのtoolsトップレベルパラメータで指定されます。各ツール定義には以下が含まれます:

    パラメータ説明
    nameツールの名前。正規表現^[a-zA-Z0-9_-]{1,64}$に一致する必要があります。
    descriptionツールが何をするか、いつ使用すべきか、どのように動作するかについての詳細なプレーンテキスト説明。
    input_schemaツールの予想されるパラメータを定義するJSON Schemaオブジェクト。
    input_examples(オプション)Claudeがツールの使用方法を理解するのに役立つサンプル入力オブジェクトの配列。ツール使用例の提供を参照してください。

    cache_control、strict、defer_loading、allowed_callersを含むツール定義で利用可能なオプションプロパティの完全なセットについては、ツールリファレンスを参照してください。

    ツール使用システムプロンプト

    toolsパラメータを使用してClaude APIを呼び出すと、APIはツール定義、ツール設定、およびユーザーが指定したシステムプロンプトから特別なシステムプロンプトを構築します。構築されたプロンプトは、モデルに指定されたツールを使用するよう指示し、ツールが適切に動作するために必要なコンテキストを提供するように設計されています:

    In this environment you have access to a set of tools you can use to answer the user's question.
    {{ FORMATTING INSTRUCTIONS }}
    String and scalar parameters should be specified as is, while lists and objects should use JSON format. Note that spaces for string values are not stripped. The output is not expected to be valid XML and is parsed with regular expressions.
    Here are the functions available in JSONSchema format:
    {{ TOOL DEFINITIONS IN JSON SCHEMA }}
    {{ USER SYSTEM PROMPT }}
    {{ TOOL CONFIGURATION }}

    ツール定義のベストプラクティス

    ツールを使用する際にClaudeから最高のパフォーマンスを得るには、以下のガイドラインに従ってください:

    • 非常に詳細な説明を提供してください。 これはツールパフォーマンスにおいて最も重要な要素です。説明には、ツールに関するすべての詳細を説明する必要があります:
      • ツールが何をするか
      • いつ使用すべきか(そしていつ使用すべきでないか)
      • 各パラメータが何を意味し、ツールの動作にどのように影響するか
      • ツール名が不明確な場合、ツールが返さない情報など、重要な注意事項や制限事項。Claudeにツールについてより多くのコンテキストを提供できるほど、ツールをいつどのように使用するかを決定するのに優れています。ツール説明ごとに少なくとも3~4文を目指し、ツールが複雑な場合はそれ以上を目指してください。
    • 説明を優先しますが、複雑なツールにはinput_examplesの使用を検討してください。 明確な説明が最も重要ですが、複雑な入力、ネストされたオブジェクト、またはフォーマットに敏感なパラメータを持つツールの場合、input_examplesフィールドを使用してスキーマ検証済みの例を提供できます。詳細については、ツール使用例の提供を参照してください。
    • 関連する操作を少数のツールに統合してください。 すべてのアクション(create_pr、review_pr、merge_pr)に対して個別のツールを作成するのではなく、actionパラメータを持つ単一のツールにグループ化してください。より少ないが、より機能的なツールは選択の曖昧性を減らし、Claudeがツール表面をナビゲートしやすくします。

    良い説明は、ツールが何をするか、いつ使用するか、どのデータを返すか、およびtickerパラメータが何を意味するかを明確に説明しています。悪い説明は短すぎて、Claudeにツールの動作と使用方法について多くの未解決の質問を残します。

    ツール設計(統合、命名、応答形成)についてのより深いガイダンスについては、エージェント向けツールの作成を参照してください。

    ツール使用例の提供

    有効なツール入力の具体的な例を提供して、Claudeがツールをより効果的に使用する方法を理解するのに役立てることができます。これは、ネストされたオブジェクト、オプションパラメータ、またはフォーマットに敏感な入力を持つ複雑なツールに特に役立ちます。

    基本的な使用方法

    ツール定義にオプションのinput_examplesフィールドを追加して、サンプル入力オブジェクトの配列を含めます。各例はツールのinput_schemaに従って有効である必要があります:

    例はツールスキーマと一緒にプロンプトに含まれ、Claudeに適切に形成されたツール呼び出しの具体的なパターンを示します。これにより、Claudeはオプションパラメータをいつ含めるか、どのフォーマットを使用するか、複雑な入力をどのように構造化するかを理解するのに役立ちます。

    要件と制限事項

    • スキーマ検証 - 各例はツールのinput_schemaに従って有効である必要があります。無効な例は400エラーを返します
    • サーバー側ツールではサポートされていません - 入力例はユーザー定義およびAnthropicスキーマクライアントツールで機能しますが、Webサーチやコード実行などのサーバーツールではサポートされていません
    • トークンコスト - 例はプロンプトトークンに追加されます:シンプルな例の場合は約20~50トークン、複雑なネストされたオブジェクトの場合は約100~200トークン

    Claudeの出力を制御する

    ツール使用の強制

    場合によっては、Claudeがツールを呼び出さずに直接回答する場合でも、Claudeに特定のツールを使用してユーザーの質問に答えるよう強制したい場合があります。これは、tool_choiceフィールドでツールを指定することで実行できます:

    tool_choice = {"type": "tool", "name": "get_weather"}

    tool_choiceパラメータを使用する場合、4つの可能なオプションがあります:

    • autoはClaudeが提供されたツールを呼び出すかどうかを決定することを許可します。これはtoolsが提供される場合のデフォルト値です。
    • anyはClaudeが提供されたツールの1つを使用する必要があることを示しますが、特定のツールを強制しません。
    • toolはClaudeに特定のツールを常に使用するよう強制します。
    • noneはClaudeがツールを使用することを防止します。これはtoolsが提供されない場合のデフォルト値です。

    プロンプトキャッシングを使用する場合、tool_choiceパラメータへの変更はキャッシュされたメッセージブロックを無効にします。ツール定義とシステムプロンプトはキャッシュされたままですが、メッセージコンテンツは再処理される必要があります。

    このダイアグラムは、各オプションがどのように機能するかを示しています:

    4つのtool_choiceオプション(auto、any、tool、none)を示すダイアグラム

    tool_choiceがanyまたはtoolの場合、APIはアシスタントメッセージをプリフィルして、ツールを強制的に使用させることに注意してください。これは、明示的に要求された場合でも、モデルがtool_useコンテンツブロックの前に自然言語応答または説明を発行しないことを意味します。

    拡張思考とツール使用を使用する場合、tool_choice: {"type": "any"}とtool_choice: {"type": "tool", "name": "..."}はサポートされておらず、エラーが発生します。tool_choice: {"type": "auto"}(デフォルト)とtool_choice: {"type": "none"}のみが拡張思考と互換性があります。

    Claude Mythos Previewは強制ツール使用をサポートしていません。tool_choice: {"type": "any"}またはtool_choice: {"type": "tool", "name": "..."}を含むリクエストはこのモデルで400エラーを返します。tool_choice: {"type": "auto"}(デフォルト)またはtool_choice: {"type": "none"}を使用し、プロンプティングに頼ってツール選択に影響を与えてください。

    テストでは、これはパフォーマンスを低下させないことが示されています。モデルが自然言語コンテキストまたは説明を提供しながら、特定のツールを使用するようモデルに要求したい場合は、tool_choiceに{"type": "auto"}(デフォルト)を使用し、userメッセージに明示的な指示を追加できます。例えば:What's the weather like in London? Use the get_weather tool in your response.

    厳密なツールを使用した保証されたツール呼び出し

    tool_choice: {"type": "any"}を厳密なツール使用と組み合わせて、ツールの1つが呼び出されることを保証し、ツール入力がスキーマに厳密に従うことを保証します。ツール定義でstrict: trueを設定してスキーマ検証を有効にします。

    ツールを使用したモデル応答

    ツールを使用する場合、Claudeはしばしば実行内容についてコメントしたり、ツールを呼び出す前にユーザーに自然に応答したりします。

    例えば、プロンプト「サンフランシスコの現在の天気と時刻は?」が与えられた場合、Claudeは次のように応答する可能性があります:

    JSON
    {
      "role": "assistant",
      "content": [
        {
          "type": "text",
          "text": "I'll help you check the current weather and time in San Francisco."
        },
        {
          "type": "tool_use",
          "id": "toolu_01A09q90qw90lq917835lq9",
          "name": "get_weather",
          "input": { "location": "San Francisco, CA" }
        }
      ]
    }

    この自然な応答スタイルは、ユーザーがClaudeが何をしているかを理解するのに役立ち、より会話的なインタラクションを作成します。システムプロンプトと、プロンプトに<examples>を提供することで、これらの応答のスタイルとコンテンツをガイドできます。

    Claudeが実行内容を説明する際に様々なフレーズングとアプローチを使用する可能性があることに注意することが重要です。コードはこれらの応答を他のアシスタント生成テキストと同じように扱い、特定のフォーマット規則に依存しないようにする必要があります。

    次のステップ

    ツール呼び出しを処理する

    tool_useブロックを解析し、tool_result応答をフォーマットします。

    Tool Runner(SDK)

    SDKにエージェンティックループを自動的に処理させます。

    ツールリファレンス

    Anthropic提供ツールとオプションプロパティのディレクトリ。

  1. ツール名に意味のある名前空間を使用してください。 ツールが複数のサービスまたはリソースにまたがる場合、名前の前にサービスを付けてください(例:github_list_prs、slack_send_message)。これにより、ライブラリが成長するにつれてツール選択が曖昧でなくなり、特にツール検索を使用する場合に重要です。
  2. ツール応答を設計して、高信号情報のみを返すようにしてください。 不透明な内部参照ではなく、セマンティック的で安定した識別子(例:スラッグまたはUUID)を返し、Claudeが次のステップについて推論するために必要なフィールドのみを含めてください。膨らんだ応答はコンテキストを浪費し、Claudeが重要なものを抽出するのを難しくします。
  3. import anthropic
    
    client = anthropic.Anthropic()
    
    response = client.messages.create(
        model="claude-opus-4-7",
        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",
                        },
                        "unit": {
                            "type": "string",
                            "enum": ["celsius", "fahrenheit"],
                            "description": "The unit of temperature",
                        },
                    },
                    "required": ["location"],
                },
                "input_examples": [
                    {"location": "San Francisco, CA", "unit": "fahrenheit"},
                    {"location": "Tokyo, Japan", "unit": "celsius"},
                    {
                        "location": "New York, NY"  # 'unit' is optional
                    },
                ],
            }
        ],
        messages=[{"role": "user", "content": "What's the weather like in San Francisco?"}],
    )
    
    print(response)