Batch Tool Use
Claude peut nativement executer plusieurs outils en meme temps, mais certaines versions n’exploitent pas toujours cette capacite. Vous pouvez augmenter considerablement les chances de parallelisation en implementant un outil batch.
Le probleme
Si vous demandez “Quelle est la date du 12 mars 2025 + 50 jours ? Et aussi + 100 jours ?”, Claude pourrait theoriquement envoyer deux demandes d’outils separees dans une seule reponse. Ces operations sont totalement parallelisables car elles ne dependent pas l’une de l’autre. Mais Claude les execute souvent sequentiellement.
L’outil batch
L’idee : creer un outil qui peut invoquer plusieurs autres outils simultanement.
{
"name": "batch_tool",
"description": "Invoquer plusieurs appels d'outils simultanement",
"input_schema": {
"type": "object",
"properties": {
"invocations": {
"type": "array",
"description": "Les appels d'outils a invoquer",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Le nom de l'outil a invoquer"
},
"arguments": {
"type": "string",
"description": "Les arguments de l'outil, encodes en chaine JSON"
}
},
"required": ["name", "arguments"]
}
}
},
"required": ["invocations"]
}
}
Implementation
def run_batch(tool_input):
batch_output = []
for invocation in tool_input["invocations"]:
tool_name = invocation["name"]
args = json.loads(invocation["arguments"])
tool_output = run_tool(tool_name, args)
batch_output.append({"tool_name": tool_name, "output": tool_output})
return batch_output
Ajoutez le cas dans run_tool :
elif tool_name == "batch_tool":
return run_batch(tool_input)
Notez que contrairement aux autres outils, vous passez tool_input directement sans utiliser l’operateur de deploiement (**), car l’outil batch doit gerer la structure brute.
Resultat
Au lieu de voir deux appels d’outils separes dans le journal des messages, vous verrez un seul appel a l’outil batch contenant les deux calculs de dates comme sous-invocations.
L’outil batch est particulierement utile quand vous avez plusieurs operations independantes qui peuvent etre executees simultanement, ameliorant significativement l’efficacite de vos workflows Tool Use.