ホーム / ドキュメント / ツールの使用と関数呼び出し

ツールの使用と関数呼び出し

モデルから関数を呼び出す方法:リクエストループ、両形式、トークンを浪費する間違い。

ツールの使用により、モデルは関数の実行をユーザーに依頼し、その結果を使って処理を続けられます。これは、あらゆるコーディングエージェントの基盤となる仕組みです。

処理ループ

  1. 送信する内容: messages および tools 。これにより、利用可能なものを説明します。
  2. モデルが応答で返すもの: stop_reason: tool_use および tool_use ブロック。ツール名とその引数が含まれます。
  3. ユーザーが それを実行します。ゲートウェイがユーザーのコードを実行することはありません。
  4. 履歴全体に次のものを追加して送り返します: tool_result ブロック。
  5. モデルは最終的な回答を生成するか、別のツールの使用を依頼します。

ツールの定義(Messages形式)

{
  "model": "claude-sonnet-4-6",
  "max_tokens": 1024,
  "tools": [{
    "name": "get_weather",
    "description": "Current weather for a city. Use when the user asks about weather.",
    "input_schema": {
      "type": "object",
      "properties": {"city": {"type": "string", "description": "City name"}},
      "required": ["city"]
    }
  }],
  "messages": [{"role": "user", "content": "Weather in Paris?"}]
}

結果の返却

{
  "role": "user",
  "content": [{
    "type": "tool_result",
    "tool_use_id": "toolu_01ABC...",
    "content": "18C, light rain"
  }]
}
tool_result は、次のロールのメッセージに含めます: user、および tool_use_id は、モデルのリクエストに含まれるIDと完全に一致する必要があります。IDが一致しない場合、無効なリクエストとして拒否されます。

OpenAI形式

この /v1/chat/completions エンドポイントでは、OpenAIの tools / tool_calls 形式を代わりに使用し、結果は次のロールのメッセージとして返されます: tool.

ツール使用にかかる費用

ツールスキーマはターン間で変わらないため、システムプロンプトとともに プロンプトキャッシュ の有力な候補になります。