

# Escolher uma ferramenta
<a name="tool-choice"></a>

Os modelos do Amazon Nova são compatíveis com a funcionalidade de *escolha de ferramenta*. A escolha de ferramenta permite que você, como desenvolvedor, controle a maneira pela qual uma ferramenta é chamada. Há três opções de parâmetros compatíveis para a escolha da ferramenta: `tool`, `any` e `auto`.
+ **Tool**: a ferramenta especificada será chamada uma vez.
+ **Any**: uma das ferramentas fornecidas será chamada pelo menos uma vez.
+ **Auto**: o modelo decidirá se chamará uma ferramenta, e várias ferramentas serão chamadas, se necessário.

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

Usar `tool` como a escolha de ferramenta permite controlar a ferramenta específica que o modelo chama. O exemplo abaixo destaca isso com um caso de uso de saída estruturada em que a resposta precisa ser formatada de maneira consistente.

```
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 ]

Usar `any` como a escolha de ferramenta permite garantir que pelo menos uma ferramenta seja chamada toda vez. Embora a decisão de qual ferramenta chamar seja deixada para o modelo, sempre haverá uma ferramenta retornada. O exemplo abaixo destaca o uso da escolha de ferramenta “any” para um caso de uso de endpoint de seleção de API. Este é um exemplo de quando é útil exigir que o modelo retorne uma ferramenta específica.

```
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 ]

Usar `auto` como opção de ferramenta é a funcionalidade padrão do suporte à ferramenta e permite que o modelo decida quando chamar uma ferramenta e quantas ferramentas chamar. Este será o comportamento se você não incluir a escolha da ferramenta em sua solicitação.

**nota**  
O comportamento padrão da chamada de ferramentas do Amazon Nova é usar a cadeia de pensamento para a seleção de ferramentas. Ao usar o comportamento padrão ou a escolha da ferramenta `auto`, também haverá a saída do processo de pensamento nas tags <thinking>.

O exemplo a seguir destaca um caso de uso do chatbot em que talvez você queira permitir que o modelo pesquise informações recentes na internet ou responda diretamente ao usuário. Essa escolha de ferramenta oferece flexibilidade e deixará o raciocínio para o modelo.

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

------

**nota**  
Ao definir o parâmetro de escolha da ferramenta, você ainda poderá ver o texto de saída do modelo ou realizar chamadas sequenciais de ferramenta após a seleção original da ferramenta. Recomendamos que você defina uma sequência de parada aqui para limitar a saída apenas à ferramenta:  

```
“stopSequences”: [“</tool>”]
```
Para obter mais informações, consulte [InferenceConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_InferenceConfiguration.html) no guia da API do Amazon Bedrock.