Aller au contenu principal

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.