Chargement

Après que Claude a demandé un appel d'outil, vous devez exécuter la fonction et renvoyer les résultats. Cela complète le flux de travail d'utilisation d'outils en fournissant à Claude les informations qu'il a demandées.

Exécution de la fonction d'outil

Lorsque Claude répond avec un bloc d'utilisation d'outil, vous extrayez les paramètres d'entrée et appelez votre fonction. Voici comment accéder aux paramètres de l'outil :

python
response.content[1].input

Cela vous donne un dictionnaire des arguments que Claude souhaite transmettre à votre fonction. Puisque votre fonction attend des arguments nommés plutôt qu'un dictionnaire, vous utilisez la syntaxe de décompaction de Python :

python
get_current_datetime(**response.content[1].input)

Bloc de résultat d'outil

Après avoir exécuté la fonction d'outil, vous devez renvoyer les résultats à Claude en utilisant un bloc de résultat d'outil. Ce bloc se trouve à l'intérieur d'un message utilisateur et indique à Claude ce qui s'est passé lors de l'exécution de l'outil.

Le bloc de résultat d'outil possède plusieurs propriétés importantes :

  • tool_use_id - Doit correspondre à l'id du bloc ToolUse auquel ce ToolResult correspond
  • content - Sortie de l'exécution de votre outil, sérialisée sous forme de chaîne
  • is_error - True si une erreur s'est produite

Gestion de plusieurs appels d'outils

Claude peut demander plusieurs appels d'outils dans une seule réponse. Par exemple, si un utilisateur demande « Combien font 10 + 10 et combien font 30 + 30 ? », Claude pourrait répondre avec deux blocs ToolUse distincts.

Chaque appel d'outil reçoit un identifiant unique, et vous devez faire correspondre ces identifiants lors de l'envoi des résultats. Cela garantit que Claude sait quel résultat correspond à quelle demande, même si les résultats arrivent dans un ordre différent.

Construction de la requête de suivi

Votre requête de suivi à Claude doit inclure l'historique complet de la conversation ainsi que le nouveau résultat d'outil. Voici la structure :

python
messages.append({
    "role": "user",
    "content": [{
        "type": "tool_result",
        "tool_use_id": response.content[1].id,
        "content": "15:04:22",
        "is_error": False
    }]
})

L'historique complet des messages contient désormais :

  • Le message utilisateur original
  • Le message de l'assistant avec le bloc d'utilisation d'outil
  • Le message utilisateur avec le bloc de résultat d'outil

Envoi de la requête finale

Lors de l'envoi de la requête de suivi, vous devez toujours inclure le schéma de l'outil même si vous ne vous attendez pas à ce que Claude effectue un autre appel d'outil. Claude a besoin du schéma pour comprendre les références à l'outil dans l'historique de votre conversation.

python
client.messages.create(
    model=model,
    max_tokens=1000,
    messages=messages,
    tools=[get_current_datetime_schema]
)

Claude répondra alors avec un message final qui intègre les résultats de l'outil dans une réponse naturelle pour l'utilisateur. Le flux de travail d'utilisation d'outils est maintenant terminé - vous avez réussi à permettre à Claude d'accéder à des informations en temps réel via votre fonction personnalisée.