Choix d’un outil - Amazon Nova

Choix d’un outil

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’outil Amazon Nova consiste à utiliser la chaîne de pensée 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 InferenceConfiguration dans le guide de l’API Amazon Bedrock.