

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Choix d’un outil
<a name="tool-choice"></a>

Les modèles Amazon Nova prennent en charge la fonctionnalité *choix d’outil*. Le choix d’outil vous permet, en tant que développeur, de contrôler la manière dont un outil est appelé. Trois options de paramètres sont prises en charge pour le choix d’outil : `tool`, `any` et `auto`.
+ **Tool** : l’outil spécifié sera appelé une fois.
+ **Any** : l’un des outils fournis sera appelé au moins une fois.
+ **Auto** : le modèle décidera s’il convient d’appeler un outil et plusieurs outils seront appelés si nécessaire.

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

L’utilisation de `tool` comme choix d’outil vous permet de contrôler l’outil spécifique que le modèle appelle. L’exemple ci-dessous présente cela avec des éléments principaux d’un cas d’utilisation de sortie structurée où la réponse doit être formatée de manière cohérente.

```
tool_config = {
    "toolChoice": {
        "tool": { "name" : "extract_recipe"}
    },
    "tools": [
        {
            "toolSpec": {
                "name": "extract_recipe",
                "description": "Extract recipe for cooking instructions",
                "inputSchema": {
                    "json": {
                        "type": "object",
                        "properties": {
                            "name": {
                                "type": "string",
                                "description": "Name of the recipe"
                            },
                            "description": {
                                "type": "string",
                                "description": "Brief description of the dish"
                            },
                            "ingredients": {
                                "type": "array",
                                "items": {
                                    "type": "string",
                                    "description": "Name of ingredient"
                                }
                            }
                        },
                        "required": ["name", "description", "ingredients"]
                    }
                }
            }
        }
    ]
}
```

------
#### [ Any ]

L’utilisation de `any` comme choix d’outil vous permet de vous assurer qu’au moins un outil est appelé à chaque fois. Bien que le choix de l’outil à appeler soit laissé à la discrétion du modèle, un outil sera toujours renvoyé. Les éléments principaux ci-dessous illustrent l’utilisation du choix d’outil any pour un cas d’utilisation de point de terminaison de sélection d’API. Il s’agit d’un exemple où il est utile d’exiger que le modèle renvoie un outil spécifique.

```
tool_config = {
    "toolChoice": {
        "any": {}
    },
    "tools": [
         {
            "toolSpec": {
                "name": "get_all_products",
                "description": "API to retrieve multiple products with filtering and pagination options",
                "inputSchema": {
                    "json": {
                        "type": "object",
                        "properties": {
                            "sort_by": {
                                "type": "string",
                                "description": "Field to sort results by. One of: price, name, created_date, popularity",
                                "default": "created_date"
                            },
                            "sort_order": {
                                "type": "string",
                                "description": "Order of sorting (ascending or descending). One of: asc, desc",
                                "default": "desc"
                            },
                        },
                        "required": []
                    }
                }
            }
        },
        {
            "toolSpec": {
                "name": "get_products_by_id",
                "description": "API to retrieve retail products based on search criteria",
                "inputSchema": {
                    "json": {
                        "type": "object",
                        "properties": {
                            "product_id": {
                                "type": "string",
                                "description": "Unique identifier of the product"
                            },
                        },
                        "required": ["product_id"]
                    }
                }
            }
        }
    ]
}
```

------
#### [ Auto ]

L’utilisation de `auto` comme choix d’outil est la fonctionnalité par défaut de la prise en charge des outils et permet au modèle de décider quand appeler un outil et combien d’outils appeler. C’est le comportement qui s’applique si vous n’incluez pas de choix d’outil dans votre demande.

**Note**  
Le comportement par défaut de l'appel d'outils Amazon Nova est à utiliser chain-of-thought pour la sélection d'outils. Lorsque vous utilisez le comportement par défaut ou le choix d’outil `auto`, le processus de réflexion est également affiché dans les balises <thinking>.

L’exemple suivant présente les éléments principaux d’un cas d’utilisation de chatbot dans lequel vous pourriez vouloir autoriser le modèle à rechercher des informations récentes sur Internet ou à répondre directement à l’utilisateur. Ce choix d’outil offre une grande flexibilité et laisse le raisonnement au modèle.

```
tool_config = {
    "toolChoice": {
        "auto": {}
    },
    "tools": [
         {
            "toolSpec": {
                "name": "search",
                "description": "API that provides access to the internet",
                "inputSchema": {
                    "json": {
                        "type": "object",
                        "properties": {
                            "query": {
                                "type": "string",
                                "description": "Query to search by",
                            },
                        },
                        "required": ["query"]
                    }
                }
            }
        }
    ]
}
```

------

**Note**  
Lorsque vous définissez le paramètre de choix de l’outil, il est possible que vous voyiez toujours le texte de sortie du modèle ou que vous effectuiez des appels d’outils séquentiels après la sélection initiale de l’outil. Nous vous recommandons de définir une séquence d’arrêt ici afin de limiter la sortie à l’outil uniquement :  

```
“stopSequences”: [“</tool>”]
```
Pour plus d'informations, consultez le guide [InferenceConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_InferenceConfiguration.html)de l'API Amazon Bedrock.