Executer les fonctions outils
Quand Claude repond avec une demande d’outil, votre serveur doit executer l’outil demande et renvoyer les resultats. Cette etape implique l’extraction des parties ToolUse de la reponse, l’execution des fonctions appropriees, et le formatage correct des resultats.
Gerer les demandes multiples
Claude peut envoyer plusieurs parties ToolUse dans une seule reponse. Votre code doit gerer cette possibilite.
Extraire les parties ToolUse
Creez une fonction pour traiter toutes les parties renvoyees :
def run_tools(parts):
tool_requests = [part for part in parts if "toolUse" in part]
tool_result_parts = []
for tool_request in tool_requests:
tool_use_id = tool_request["toolUse"]["toolUseId"]
tool_name = tool_request["toolUse"]["name"]
tool_input = tool_request["toolUse"]["input"]
Cette comprehension de liste filtre les parties pour ne garder que les dictionnaires contenant une cle "toolUse".
Executer les outils
Creez une fonction d’acheminement pour executer l’outil demande :
def run_tool(tool_name, tool_input):
if tool_name == "get_current_datetime":
return get_current_datetime(**tool_input)
else:
raise Exception(f"Nom d'outil inconnu : {tool_name}")
Le detail cle : utilisez **tool_input pour deployer le dictionnaire d’arguments dans votre fonction. Claude renvoie toujours les arguments sous forme de dictionnaire.
Creer les parties ToolResult
Apres l’execution, formatez la reponse comme une partie ToolResult avec trois proprietes requises :
toolUseId: doit correspondre a l’ID de la demande originalecontent: la sortie de votre outil, serialisee en chainestatus:"success"ou"error"
Gestion des erreurs
Encadrez l’execution dans un try-except. Claude est intelligent face aux erreurs et peut ajuster son approche :
try:
tool_output = run_tool(tool_name, tool_input)
tool_result_part = {
"toolResult": {
"toolUseId": tool_use_id,
"content": [{"text": json.dumps(tool_output)}],
"status": "success"
}
}
except Exception as e:
tool_result_part = {
"toolResult": {
"toolUseId": tool_use_id,
"content": [{"text": f"Erreur : {e}"}],
"status": "error"
}
}
Comprendre les IDs d’outils
Le systeme d’ID devient important quand Claude demande plusieurs outils en parallele. Chaque demande d’outil recoit un ID unique, et vos resultats doivent inclure les IDs correspondants pour que Claude sache quel resultat correspond a quelle demande.