# ツール呼び出し

Source: https://aiand-docs-staging.pages.dev/ja/capabilities/tool-calling/

ツール呼び出し (function calling) は、提供した JSON ツール定義に基づいてモデルが構造化された関数呼び出しを生成する機能です。ai& は OpenAI Chat Completions と Anthropic Messages の両方の API でツール呼び出しに対応しています。

## ツールの定義

<Tabs>
<TabItem label="OpenAI 形式">

```python
tools = [{
    "type": "function",
    "function": {
        "name": "get_weather",
        "description": "Get current weather for a city.",
        "parameters": {
            "type": "object",
            "properties": {"city": {"type": "string"}},
            "required": ["city"],
        },
    },
}]

response = client.chat.completions.create(
    model="...",
    messages=[{"role": "user", "content": "Weather in Tokyo?"}],
    tools=tools,
    tool_choice="auto",
)
```

</TabItem>
<TabItem label="Anthropic 形式">

```python
tools = [{
    "name": "get_weather",
    "description": "Get current weather for a city.",
    "input_schema": {
        "type": "object",
        "properties": {"city": {"type": "string"}},
        "required": ["city"],
    },
}]

response = client.messages.create(
    model="...",
    max_tokens=1024,
    tools=tools,
    messages=[{"role": "user", "content": "Weather in Tokyo?"}],
)
```

</TabItem>
</Tabs>

## 並列ツール呼び出し

OpenAI 形式のリクエストでは `parallel_tool_calls: true` (デフォルト) を指定して、1 ターンで複数のツール呼び出しを生成できます。

## tool_choice の制御

- `"auto"` — モデルがツールを使うかどうかを判断 (`tools` を指定した場合のデフォルト)。
- `"none"` — このリクエストではツール利用を無効化。
- `"required"` — 必ずツールを呼び出させる。
- `{ "type": "function", "function": { "name": "..." } }` — 特定のツールに限定。

<Aside type="note">
  ツール呼び出しには `tool_calling` capability を持つモデルが必要です。[カタログ](/ja/models/catalog/) で確認してください — 非対応モデルに `tools` を指定したリクエストは拒否されます。
</Aside>
