

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Definizione di uno strumento
<a name="tool-use-definition"></a>

Una fase fondamentale del flusso di lavoro di chiamata dello strumento è la definizione dello strumento. La definizione dello strumento deve includere tutto il contesto necessario per guidare il modello nel momento in cui è opportuno invocare lo strumento.

Per definire uno strumento, crea una configurazione dello strumento e inseriscila insieme al messaggio dell’utente all’API. Lo schema di [configurazione dello strumento](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ToolConfiguration.html) prevede una varietà di strumenti e, facoltativamente, un parametro di scelta dello strumento.

**Nota**  
Amazon Nova supporta le opzioni `auto`, `any` e `tool` per `toolChoice`. Per ulteriori informazioni, consulta [ToolChoice](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ToolChoice.html)la documentazione dell'API Amazon Bedrock e [Usa uno strumento per completare una risposta del modello Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/tool-use.html).

Di seguito è riportato un esempio di come definire uno strumento:

```
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"
                        ]
                    }
                }
            }
        }
    ],
}
```

Il nome, la descrizione e lo schema di input devono essere espliciti con la funzionalità esatta dello strumento. Assicurati che tutti i principali fattori di differenziazione relativi all’utilizzo dello strumento siano riflessi nella configurazione dello strumento.

**Nota**  
I modelli di comprensione di Amazon Nova attualmente supportano solo un sottoinsieme di JsonSchema funzionalità se utilizzati per definire l'API [ToolInputSchema](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ToolInputSchema.html)in Converse.  
Lo schema di primo livello deve essere di tipo [Object](https://json-schema.org/understanding-json-schema/reference/object).
Nello schema Object di primo livello sono supportati solo tre campi: tipo (deve essere impostato su “object”), [https://json-schema.org/understanding-json-schema/reference/object#properties](https://json-schema.org/understanding-json-schema/reference/object#properties) e [https://json-schema.org/understanding-json-schema/reference/object#required](https://json-schema.org/understanding-json-schema/reference/object#required).

Per la chiamata dello strumento, consigliamo di impostare la temperatura su 0 per consentire la decodifica greedy.

Di seguito è riportato un esempio di chiamata di uno strumento con 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)
```