Définition d’un outil - Amazon Nova

Définition d’un outil

Une étape cruciale du flux de travail d’appel de l’outil consiste à définir l’outil. La définition de l’outil doit inclure tout le contexte nécessaire pour guider le modèle sur le moment approprié pour invoquer l’outil.

Pour définir un outil, créez une configuration d’outil et transmettez-la avec le message utilisateur à l’API. Le schéma tool configuration attend un tableau d’outils et, éventuellement, un paramètre de choix d’outil.

Note

Amazon Nova prend en charge les options auto, any et tool pour toolChoice. Pour plus d’informations, consultez ToolChoice dans la documentation de l’API Amazon Bedrock et Utiliser un outil pour compléter une réponse du modèle Amazon Bedrock.

Voici un exemple de définition d’un outil :

tool_config = { "tools": [ { "toolSpec": { "name": "top_song", "description": "Get the most popular song played on a radio station.", "inputSchema": { "json": { "type": "object", "properties": { "sign": { "type": "string", "description": "The call sign for the radio station for which you want the most popular song. Example calls signs are WZPZ, and WKRP." } }, "required": [ "sign" ] } } } } ], }

Le nom, la description et le schéma d’entrée doivent être explicites et correspondre exactement aux fonctionnalités de l’outil. Assurez-vous que tous les facteurs clés permettant de déterminer quand utiliser l’outil sont pris en compte dans la configuration de l’outil.

Note

Les modèles de compréhension Amazon Nova ne prennent actuellement en charge qu’un sous-ensemble des fonctionnalités JsonSchema lorsqu’ils sont utilisés pour définir le ToolInputSchema dans l’API Converse.

  • Le schéma de niveau supérieur doit être de type Object.

  • Seuls trois champs sont pris en charge dans l’objet de niveau supérieur : type (doit être défini sur « object »), properties et required.

Pour l’appel d’outils, nous recommandons de définir la température sur 0 afin d’activer le décodage glouton.

Voici un exemple d’appel d’un outil avec l’API Converse :

import json import boto3 client = boto3.client("bedrock-runtime", region_name="us-east-1") input_text = "What is the most popular song on WZPZ?" messages = [{ "role": "user", "content": [{"text": input_text}] }] inf_params = {"maxTokens": 1000, "temperature": 0} response = client.converse( modelId="us.amazon.nova-lite-v1:0", messages=messages, toolConfig=tool_config, inferenceConfig=inf_params ) messages.append(response["output"]["message"]) # Pretty print the response JSON. print("[Full Response]") print(json.dumps(response, indent=2)) # Print the tool content for easy readability. tool = next( block["toolUse"] for block in response["output"]["message"]["content"] if "toolUse" in block ) print("\n[Tool Response]") print(tool)