Aller au contenu

smolagents - Cheatsheet Agents IA Orientés Code

smolagents - Cheatsheet Agents IA Orientés Code

smolagents est une bibliothèque d”agents minimaliste et orientée code de Hugging Face. Son idée centrale : au lieu de faire émettre au modèle les appels d”outils en tant que blobs JSON, un CodeAgent écrit et exécute du code Python directement. Exprimer les actions en tant que code permet à une seule étape d”appeler plusieurs outils, utiliser des boucles et des variables, et chaîner la logique — ce qui réduit le nombre de round-trips LLM (environ 30% moins) et améliore les performances sur les tâches complexes. Il est agnostique au modèle, supporte l”exécution en sandbox et reste délibérément petit et modifiable.

Installation

MéthodeCommande
pippip install smolagents
Avec extras toolkitpip install "smolagents[toolkit]"
Extras sandboxpip install "smolagents[e2b]" (ou [docker])
Définir une clé modèleexport HF_TOKEN=... ou les clés du fournisseur
Vérificationpython -c "import smolagents; print(''ok'')"

Concepts Principaux

TermeSignification
CodeAgentAgent qui écrit des actions Python (le défaut)
ToolCallingAgentAgent qui émet les appels d”outils JSON classiques
ToolUn callable que l”agent peut utiliser (avec un schéma)
ModelLe backend LLM (HF, OpenAI, LiteLLM, local)
SandboxOù le code généré s”exécute (local, E2B, Docker, Modal)

Un CodeAgent Minimaliste

from smolagents import CodeAgent, WebSearchTool, InferenceClientModel

agent = CodeAgent(
    tools=[WebSearchTool()],
    model=InferenceClientModel(),   # HF Inference API
)

agent.run("How many seconds would it take a cheetah to cross the Golden Gate Bridge?")
ObjetRôle
CodeAgent(tools=[...], model=...)L”agent
agent.run("task")Exécuter une tâche de bout en bout
WebSearchTool()Un outil intégré
InferenceClientModel()Backend de modèle hébergé HF

Modèles

BackendClasse
API HF InferenceInferenceClientModel
Transformateurs locauxTransformersModel
N”importe quel fournisseur via LiteLLMLiteLLMModel(model_id="openai/gpt-4o")
Serveur compatible OpenAIOpenAIServerModel(...)
vLLM / endpoints locauxvia LiteLLM / compatible OpenAI

Définir des Tools

from smolagents import tool

@tool
def get_weather(city: str) -> str:
    """Return the weather for a city.

    Args:
        city: The city to look up.
    """
    return f"Sunny in {city}"

agent = CodeAgent(tools=[get_weather], model=InferenceClientModel())
MécanismeUtilisation
Décorateur @toolTransformer une fonction typée en outil
Sous-classe ToolPlus de contrôle sur le schéma/comportement
Collections de ToolsImporter des ensembles d”outils (ex. depuis le Hub)
Tools MCPConnecter les serveurs Model Context Protocol

Exécution en Sandbox (Important)

Parce que les CodeAgents exécutent du Python généré, isolez-le en production.

SandboxComment
Local (défaut)S”exécute in-process — ok uniquement pour le dev fiable
E2Bexecutor_type="e2b" (sandbox distant)
Dockerexecutor_type="docker"
ModalExécution distante en sandbox
Imports autorisésRestreindre les modules que le code généré peut importer
agent = CodeAgent(tools=[...], model=..., executor_type="e2b")

Multi-Agent et Retrieval

PatternComment
Agents gérésDonner à un agent d”autres agents en tant que tools
Retrieval/RAGAjouter un outil retriever pour les réponses fondées
PlanificationActiver les étapes de planification périodique pour les tâches dures
HandoffsComposer les spécialistes sous un agent manager

Flux de Travail Courants

# Un agent de recherche qui navigue et calcule en code
from smolagents import CodeAgent, WebSearchTool, InferenceClientModel
agent = CodeAgent(tools=[WebSearchTool()], model=InferenceClientModel(),
                  executor_type="docker")
agent.run("Compare the population growth of Tokyo and Delhi since 2000.")

smolagents vs Autres Frameworks d”Agent

AspectsmolagentsLangGraphPydantic AI
Format actionCode PythonGraphe/machine à étatsAppels d”outils typés
Taille/philosophieMinimaliste, modifiableOrchestration stateful complèteTypé-sûr, style FastAPI
Efficacité LLMMoins d”appels (code)DépendStandard
Meilleur pourBoucles code agent simpleAgents stateful durablesAgents production typé-sûrs

Ressources