L'outil batch
Claude peut inclure plusieurs blocs tool_use dans un seul message, mais en pratique, il envoie souvent des reponses separees pour chaque outil. L’outil batch est une astuce pour forcer l’execution parallele.
Le probleme
Quand on demande a Claude de programmer deux rappels pour la meme date, il fait typiquement le premier appel, attend le resultat, puis fait le second. Des allers-retours inutiles.
Le schema de l’outil batch
batch_tool_schema = {
"name": "batch_tool",
"description": "Execute plusieurs appels d'outils simultanement",
"input_schema": {
"type": "object",
"properties": {
"invocations": {
"type": "array",
"description": "Les appels d'outils a executer",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Nom de l'outil a invoquer"
},
"arguments": {
"type": "object",
"description": "Arguments a passer a l'outil"
}
}
}
}
}
}
}
Traitement des appels batch
def run_batch(invocations=[]):
batch_output = []
for invocation in invocations:
name = invocation["name"]
args = json.loads(invocation["arguments"])
tool_output = run_tool(name, args)
batch_output.append({
"tool_name": name,
"output": tool_output
})
return batch_output
Avec le batch tool, Claude regroupe les operations liees : une requete utilisateur, une reponse avec le batch, et un seul suivi avec tous les resultats. Moins de latence, plus d’efficacite.