> ## Documentation Index
> Fetch the complete documentation index at: https://wb-21fd5541-docs-hivemind-launch.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Smolagents

> Suivez les applications Smolagents avec le Tracing automatique de Weave, en capturant les appels d'outils, les inférences de modèle et les flux de travail d'agent en plusieurs étapes.

<Warning>
  Tous les exemples de code présentés sur cette page sont en Python.
</Warning>

Cette page explique comment intégrer [Smolagents](https://huggingface.co/docs/smolagents/en/index) à W\&B Weave pour suivre et analyser vos applications agentiques. Vous apprendrez à journaliser les inférences de modèle, à surveiller les appels de fonction et à organiser les Experiments à l'aide des fonctionnalités de Tracing et de gestion des versions de Weave. En suivant les exemples fournis, vous pourrez obtenir des informations précieuses, déboguer efficacement vos applications et comparer différentes configurations de modèle, le tout dans l'interface web de Weave.

<div id="overview">
  ## Aperçu
</div>

Smolagents est un framework simple qui offre un minimum d’abstractions pour créer de puissantes applications agentiques. Il prend en charge plusieurs fournisseurs de LLM, comme OpenAI, Hugging Face Transformers et Anthropic.

Weave capture automatiquement les traces de [Smolagents](https://huggingface.co/docs/smolagents/en/index). Pour commencer le suivi, appelez `weave.init()` et utilisez la bibliothèque comme d’habitude.

<div id="prerequisites">
  ## Prérequis
</div>

1. Avant de pouvoir utiliser Smolagents avec Weave, installez les bibliothèques requises ou mettez-les à jour vers leur dernière version. La commande suivante installe ou met à jour `smolagents`, `openai` et `weave`, et masque la sortie :

   ```python lines theme={null}
   pip install -U smolagents openai weave -qqq
   ```

2. Smolagents prend en charge plusieurs fournisseurs de LLM, comme OpenAI, Hugging Face Transformers et Anthropic. Définissez la clé API du fournisseur de votre choix via la variable d'environnement correspondante :

   ```python lines theme={null}
   import os
   import getpass

   os.environ["OPENAI_API_KEY"] = getpass.getpass("Enter your OpenAI API key: ")
   ```

<div id="basic-tracing">
  ## Tracing de base
</div>

Stocker les traces des applications de modèles de langage dans un emplacement central est essentiel, aussi bien pendant le développement qu’en production. Ces traces facilitent le débogage et constituent de précieux jeux de données pour améliorer votre application.

Weave capture automatiquement les traces pour [Smolagents](https://huggingface.co/docs/smolagents/en/index). Pour commencer le suivi, initialisez Weave en appelant `weave.init()`, puis utilisez la bibliothèque comme d’habitude.

L’exemple suivant montre comment enregistrer les appels d’Inférence d’un agent LLM utilisant des outils avec Weave. Dans ce scénario :

* Vous définissez un modèle de langage (le `gpt-4o` d’OpenAI) à l’aide de `OpenAIServerModel` de Smolagents.
* Vous configurez un outil de recherche (`DuckDuckGoSearchTool`) que l’agent peut invoquer si nécessaire.
* Vous créez un `ToolCallingAgent` en lui passant l’outil et le modèle.
* Vous exécutez une requête via l’agent, ce qui déclenche l’outil de recherche.
* Weave enregistre chaque appel de fonction et de modèle, puis les rend disponibles pour inspection via son interface web.

```python lines theme={null}
import weave
from smolagents import DuckDuckGoSearchTool, OpenAIServerModel, ToolCallingAgent

# Initialiser Weave
weave.init(project_name="smolagents")

# Définir votre fournisseur LLM pris en charge par Smolagents
model = OpenAIServerModel(model_id="gpt-4o")

# Définir un outil de recherche web DuckDuckGo basé sur votre requête
search_tool = DuckDuckGoSearchTool()

# Définir un agent d'appel d'outils
agent = ToolCallingAgent(tools=[search_tool], model=model)
answer = agent.run(
    "Get me just the title of the page at url 'https://wandb.ai/geekyrakshit/story-illustration/reports/Building-a-GenAI-assisted-automatic-story-illustrator--Vmlldzo5MTYxNTkw'?"
)
```

Une fois l’exemple de code exécuté, accédez au tableau de bord de votre projet Weave pour consulter les traces.

<Frame>
  <img src="https://mintcdn.com/wb-21fd5541-docs-hivemind-launch/IJ5wvwHtTZtWc35M/weave/guides/integrations/imgs/smolagents-trace.png?fit=max&auto=format&n=IJ5wvwHtTZtWc35M&q=85&s=300201a6db9b4ed55b57ce4613545cce" alt="Weave journalise chaque appel d’inférence et fournit des détails sur les entrées, les sorties et les métadonnées." width="3452" height="1866" data-path="weave/guides/integrations/imgs/smolagents-trace.png" />
</Frame>

<div id="tracing-custom-tools">
  ## Tracing des outils personnalisés
</div>

Vous pouvez déclarer des outils personnalisés pour vos flux de travail agentiques en décorant une fonction avec `@tool` de `smolagents` ou en héritant de la classe `smolagents.Tool`.

Weave suit automatiquement les appels d’outils personnalisés dans vos flux de travail Smolagents. L’exemple suivant montre comment journaliser un appel à un outil Smolagents personnalisé avec Weave :

* Une fonction `get_weather` personnalisée est définie et décorée avec `@tool` de Smolagents, ce qui permet à l’agent de l’invoquer dans son processus de raisonnement.
* La fonction accepte un emplacement et un indicateur facultatif pour afficher le résultat en Celsius.
* Un modèle de langage est instancié à l’aide de `OpenAIServerModel`.
* Un `ToolCallingAgent` est créé avec l’outil personnalisé et le modèle.
* Lorsque l’agent exécute la requête, il sélectionne et invoque l’outil `get_weather`.
* Weave journalise à la fois l’inférence du modèle et l’invocation de l’outil personnalisé, y compris les arguments et les valeurs de retour.

```python lines theme={null}
from typing import Optional

import weave
from smolagents import OpenAIServerModel, ToolCallingAgent, tool

weave.init(project_name="smolagents")

@tool
def get_weather(location: str, celsius: Optional[bool] = False) -> str:
    """
    Obtenir la météo pour les prochains jours à un emplacement donné.
    Args:
        location: L'emplacement.
        celsius: Indique si la température doit être en Celsius.
    """
    return f"The weather in {location} is sunny with temperatures around 7°C."

model = OpenAIServerModel(model_id="gpt-4o")
agent = ToolCallingAgent(tools=[get_weather], model=model)
answer = agent.run("What is the weather in Tokyo?")
```

Une fois que vous avez exécuté l’exemple de code, accédez au tableau de bord de votre projet Weave pour afficher les traces.

<Frame>
  <img src="https://mintcdn.com/wb-21fd5541-docs-hivemind-launch/IJ5wvwHtTZtWc35M/weave/guides/integrations/imgs/smolagents-custom-tool.png?fit=max&auto=format&n=IJ5wvwHtTZtWc35M&q=85&s=997c0fbdd8d0569bac7d0e9d64f255aa" alt="Weave journalise chaque appel à un outil personnalisé." width="3452" height="1866" data-path="weave/guides/integrations/imgs/smolagents-custom-tool.png" />
</Frame>
