Pular para o conteúdo

smolagents - Cheatsheet de Agentes de IA Code-First

smolagents - Cheatsheet de Agentes de IA Code-First

smolagents é uma biblioteca minimalista de agentes code-first do Hugging Face. Sua ideia central: em vez de o modelo emitir chamadas de ferramenta como blobs JSON, um CodeAgent escreve e executa código Python diretamente. Expressar ações como código permite que um único passo chame múltiplas ferramentas, use loops e variáveis, e encadeie lógica — o que reduz o número de round-trips LLM (aproximadamente ~30% menos) e melhora o desempenho em tarefas complexas. É agnóstico ao modelo, suporta execução em sandbox e permanece deliberadamente pequeno e hackeável.

Instalação

MethodCommand
pippip install smolagents
Com tools extraspip install "smolagents[toolkit]"
Sandbox extraspip install "smolagents[e2b]" (ou [docker])
Defina uma chave de modeloexport HF_TOKEN=... ou chaves do provider
Verificarpython -c "import smolagents; print('ok')"

Conceitos Principais

TermoSignificado
CodeAgentAgente que escreve ações em Python (o padrão)
ToolCallingAgentAgente que emite chamadas de ferramenta JSON clássicas
ToolUma callable que o agente pode usar (com um schema)
ModelO backend LLM (HF, OpenAI, LiteLLM, local)
SandboxOnde o código gerado é executado (local, E2B, Docker, Modal)

Um CodeAgent Minimalista

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?")
ObjetoPapel
CodeAgent(tools=[...], model=...)O agente
agent.run("task")Execute uma tarefa de ponta a ponta
WebSearchTool()Uma ferramenta built-in
InferenceClientModel()Backend de modelo hospedado em HF

Modelos

BackendClass
HF Inference APIInferenceClientModel
Local transformersTransformersModel
Qualquer provider via LiteLLMLiteLLMModel(model_id="openai/gpt-4o")
Servidor compatível com OpenAIOpenAIServerModel(...)
vLLM / endpoints locaisvia LiteLLM / compatível com OpenAI

Definindo Ferramentas

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())
MecanismoUso
@tool decoratorTransforme uma função tipada em uma ferramenta
Tool subclassMais controle sobre schema/comportamento
Tool CollectionsImporte conjuntos de ferramentas (ex. do Hub)
MCP toolsConecte servidores Model Context Protocol

Execução em Sandbox (Importante)

Como CodeAgents executam Python gerado, isole-o em produção.

SandboxComo
Local (padrão)Executa in-process — bom apenas para dev confiável
E2Bexecutor_type="e2b" (sandbox remoto)
Dockerexecutor_type="docker"
ModalExecução remota em sandbox
Allowed importsRestrinja quais módulos o código gerado pode importar
agent = CodeAgent(tools=[...], model=..., executor_type="e2b")

Multi-Agent & Retrieval

PadrãoComo
Managed agentsDê a um agente outros agentes como ferramentas
Retrieval/RAGAdicione uma ferramenta retriever para respostas fundamentadas
PlanningAtive passos de planejamento periódicos para tarefas difíceis
HandoffsComponha especialistas sob um agente gerenciador

Fluxos de Trabalho Comuns

# Um agente de pesquisa que navega e computa em código
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 Outros Frameworks de Agente

AspectosmolagentsLangGraphPydantic AI
Action formatCódigo PythonGraph/state machineChamadas de ferramenta tipadas
Size/philosophyMinimalista, hackeávelOrquestração completa de estadoType-safe, estilo FastAPI
LLM efficiencyMenos chamadas (código)DependePadrão
Melhor paraLoops de código de agente únicoAgentes com estado durávelAgentes de produção type-safe

Recursos