#
Écrire des actions sous forme d’extraits de code ou de blobs JSON

Vous pouvez suivre le code dans ce notebook que vous pouvez exécuter avec Google Colab.

Les Tool Calling Agents sont le deuxième type d’agent disponible dans `smolagents`. Contrairement aux Code Agents qui utilisent des extraits Python, ces agents utilisent les capacités d’appel d’outils intégrées des fournisseurs de LLM pour générer des appels d’outils sous forme de structures JSON. C’est l’approche standard utilisée par OpenAI, Anthropic et de nombreux autres fournisseurs.

Regardons un exemple. Quand Alfred veut rechercher des services de restauration et des idées de fête, un `CodeAgent` générerait et exécuterait du code Python comme ceci :

    for query in [
        "Meilleurs services de restauration à Gotham City",
        "Idées de thème de fête pour super-héros"
    ]:
        print(web_search(f"Rechercher : {query}"))

Un `ToolCallingAgent` créerait plutôt une structure JSON :

    [
        {"name": "web_search", "arguments": "Meilleurs services de restauration à Gotham City"},
        {"name": "web_search", "arguments": "Idées de thème de fête pour super-héros"}
    ]

Ce blob JSON est ensuite utilisé pour exécuter les appels d’outils.

Bien que `smolagents` se concentre principalement sur les `CodeAgents` puisqu’ils performent mieux dans l’ensemble, les `ToolCallingAgents` peuvent être efficaces pour des systèmes simples qui ne nécessitent pas de gestion de variables ou d’appels d’outils complexes.

##
Comment fonctionnent les Tool Calling Agents ?

Les Tool Calling Agents suivent le même flux de travail multi-étapes que les Code Agents (voir la section précédente pour plus de détails).

La différence clé est dans la façon dont ils structurent leurs actions : au lieu de code exécutable, ils génèrent des objets JSON qui spécifient les noms d’outils et les arguments. Le système analyse ensuite ces instructions pour exécuter les outils appropriés.

##
Exemple : Exécuter un Tool Calling Agent

Revisitions l’exemple précédent où Alfred a commencé les préparatifs de la fête, mais cette fois nous utiliserons un `ToolCallingAgent` pour mettre en évidence la différence. Nous allons construire un agent qui peut rechercher sur le web en utilisant DuckDuckGo, tout comme dans notre exemple de Code Agent. La seule différence est le type d’agent - le framework gère tout le reste :

    from smolagents import ToolCallingAgent, DuckDuckGoSearchTool, InferenceClientModel

    agent = ToolCallingAgent(tools=[DuckDuckGoSearchTool()], model=InferenceClientModel())

    agent.run("Recherche les meilleures recommandations musicales pour une fête au manoir des Wayne.")

Lorsque vous examinez la trace de l’agent, au lieu de voir `Executing parsed code:`, vous verrez quelque chose comme :

    ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
    │ Calling tool: 'web_search' with arguments: {'query': "meilleures recommandations musicales pour une fête au     │
    │ manoir des Wayne"}                                                                                              │
    ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯

L’agent génère un appel d’outil structuré que le système traite pour produire la sortie, plutôt que d’exécuter directement du code comme un `CodeAgent`.

Maintenant que nous comprenons les deux types d’agents, nous pouvons choisir le bon pour nos besoins. Continuons à explorer `smolagents` pour faire de la fête d’Alfred un succès ! 🎉

##
Ressources

- Documentation ToolCallingAgent - Documentation officielle pour ToolCallingAgent

< > Update on GitHub