

# Amazon Nova でのツールの使用 (関数呼び出し)
<a name="tool-use"></a>

**注記**  
このドキュメントは Amazon Nova バージョン 1 を対象としています。Amazon Nova 2 でツールを使用する方法については、「[ツールの使用 (関数呼び出し)](https://docs.aws.amazon.com/nova/latest/nova2-userguide/using-tools.html)」(Using tools (function calling)) を参照してください。

ツールは、API コールやコード関数などの外部機能を Amazon Nova に提供する方法です。このセクションでは、Amazon Nova モデルを使用する際にツールを定義して統合する方法について説明します。

ツールの使用には、次の 3 つの大まかなステップがあります。
+ **ユーザークエリ** – Amazon Nova が使用できるツールを定義するには、各ツールの機能と入力要件を説明する JSON スキーマを指定します。
+ **ツールの選択** – ユーザーがメッセージを送信すると、Amazon Nova はそれを分析して、レスポンスを生成するためにツールが必要かどうかを判断します。これは `Auto` ツール選択と呼ばれます。詳細については、「[ツールの選択](https://docs.aws.amazon.com/nova/latest/userguide/tool-choice.html)」を参照してください。Amazon Nova が適切なツールを特定すると、「ツールを呼び出し」、使用するツールの名前とパラメータが返されます。

  開発者は、モデルのリクエストに基づいてツールを実行する責任があります。つまり、ツールの機能を呼び出し、モデルによって提供される入力パラメータを処理するコードを記述する必要があります。
**注記**  
すべての LLM レスポンスと同様に、Amazon Nova はツール呼び出しをハルシネーションする可能性があります。開発者は、ツールが存在し、入力が正しくフォーマットされ、適切なアクセス許可がすでに設定されていることを確認する責任があります。
+ **結果を返す** – ツールを実行したら、構造化された形式で結果を Amazon Nova に送り返す必要があります。有効な形式には、JSON またはテキストとイメージの組み合わせが含まれます。これにより、Amazon Nova はツールの出力をユーザーへの最終レスポンスに組み込むことができます。

  ツールの実行中にエラーが発生した場合は、これを Amazon Nova へのツールレスポンスで示し、Amazon Nova がそれに応じてレスポンスを調整できるようにします。

計算ツールの簡単な例を考えてみましょう。

------
#### [ User query ]

ツール呼び出しワークフローの最初のステップは、数式「10 掛ける 5」の結果を尋ねる Amazon Nova へのユーザークエリです。このクエリは、計算ツールを表すツール仕様とともに、プロンプトとして Amazon Nova に送信されます。

```
user_query = "10*5"

messages = [{
    "role": "user",
    "content": [{"text": user_query}]
}]

tool_config = {
    "tools": [
        {
            "toolSpec": {
                "name": "calculator", # Name of the tool
                "description": "A calculator tool that can execute a math equation", # Concise description of the tool
                "inputSchema": {
                    "json": { 
                        "type": "object",
                        "properties": {
                            "equation": { # The name of the parameter
                                "type": "string", # parameter type: string/int/etc
                                "description": "The full equation to evaluate" # Helpful description of the parameter
                            }
                        },
                        "required": [ # List of all required parameters
                            "equation"
                        ]
                    }
                }
            }
        }
    ]
}
```

------
#### [ Tool selection ]

Amazon Nova は、ツールのコンテキストとユーザープロンプトを使用して、使用する必要なツールと必要な設定を決定します。これは API レスポンスの一部として返されます。

```
{
    "toolUse": {
        "toolUseId": "tooluse_u7XTryCSReawd9lXwljzHQ", 
        "name": "calculator", 
        "input": {
            "equation": "10*5"
         }
    }
}
```

アプリケーションはツールを実行し、結果を保存する役割があります。

```
def calculator(equation: str):
    return eval(equation)
    
tool_result = calculator("10*5")
```

------
#### [ Return results ]

ツールの結果を Amazon Nova に返すため、ツールの結果が新しい API リクエストに含まれます。ツール使用 ID は、前のレスポンスで Amazon Nova から返された ID と一致することに注意してください。

```
{ 
    "toolResult": {
        "toolUseId": "tooluse_u7XTryCSReawd9lXwljzHQ",
        "content": [
            {
                "json": {
                    "result": "50"
                }
            }
        ],
        "status": "success"
    }
}
```
+ Amazon Nova は、最初のユーザークエリ、ツールの使用、ツールの結果など、メッセージの完全なコンテキストを使用して、ユーザーへの最終応答を決定します。この場合、Amazon Nova はユーザーに「10 掛ける 5 は 50 です」と応答します。

------

Amazon Nova では、Invoke API と Converse API の両方でツールを使用できますが、フル機能の範囲では [Converse API](https://docs.aws.amazon.com/bedrock/latest/userguide/tool-use-inference-call.html) を使用することをお勧めします。今後の例では、この API を使用します。

**Topics**
+ [ツールの定義](tool-use-definition.md)
+ [ツールの呼び出し](tool-use-invocation.md)
+ [ツールの選択](tool-choice.md)
+ [ツールの結果を返す](tool-use-results.md)
+ [組み込みツールの使用](tool-built-in.md)
+ [エラーの報告](tool-use-error.md)
+ [その他のリファレンス](#tool-use-resources)

## その他のリファレンス
<a name="tool-use-resources"></a>

1. [ツールを使用してモデルレスポンスを完成させる](https://docs.aws.amazon.com/bedrock/latest/userguide/tool-use.html)

1. [Amazon Nova を使用した AI エージェントの構築](agents.md)

1. [テキスト理解のプロンプトのベストプラクティス](prompting-text-understanding.md)

1. [ツール呼び出しのトラブルシューティング](prompting-tool-troubleshooting.md)