Um agente recebe um objetivo, decide sozinho quais ações tomar, executa essas ações com ferramentas, e repete até concluir.
Ninguém disse a ele qual botão apertar. O pedido é o objetivo, e não a instrução. huggingface.co/learn/agents-course

Memória, tools e planning. Três peças, e é a combinação delas que separa um agente de uma chamada de API.
Informação no prompt atual. Rápida e temporária, desaparece ao fim da requisição.
Histórico de conversas e interações anteriores. Permite lembrar de usuários e preferências.
Banco vetorial ou SQL. Persistente entre sessões, recuperada por busca semântica.
Quando o agente esquece o que combinaram há dez minutos, o problema quase sempre está aqui.
growthjockey.com/blogs/agentic-ai-memory

Sem tools, o LLM apenas fala sobre o mundo. Com tools, o LLM age no mundo.
O planejamento não é um módulo separado. Ele acontece dentro do mesmo texto que o modelo gera.

developers.openai.com/api/docs/guides/function-calling
O modelo pede a chamada, e quem executa é você. O modelo nunca roda código.
A tool é escolhida pela descrição. Descrição ruim significa tool ignorada.
A segunda regra é a que mais custa caro na prática, e é a que vocês vão testar no exercício de hoje.



O description não é comentário. É a única coisa que o modelo lê para decidir se chama essa função.

Uma chamada ao modelo, com o histórico inteiro e a lista de tools. A resposta entra no histórico.

O critério de parada: o modelo respondeu sem pedir nenhuma ferramenta. Foi ele que decidiu que terminou.
, marcado como ACT](/assets/slides/dsai-2026/img/cod-act.jpg)
O modelo devolveu o nome e os argumentos, em texto. Quem chama a função de verdade é o nosso código, na linha do FUNCS[nome].

Ler antes de editar, substituir trecho em vez do arquivo inteiro, e camadas de proteção no shell. Nenhuma dessas decisões é sobre o modelo.
arxiv.org/abs/2604.09805 · gustavopinto.org/assets/slides/semla-2026/

A assinatura vira o esquema, e a docstring vira a descrição. É esse truque que os frameworks empacotam.

Todos empacotam o mesmo laço. O smolagents, da Hugging Face, é o menor deles, e por isso é o que deixa o laço mais visível.

A docstring com a seção Args é o que vira o esquema. huggingface.co/docs/smolagents/en/guided_tour

Três linhas escondem o laço inteiro que escrevemos à mão. huggingface.co/docs/smolagents/en/guided_tour

Com MCP, cada lado implementa uma vez. Passa de M × N para M + N.
Cliente e servidor conversam por JSON-RPC 2.0. É protocolo, e não biblioteca.

A aplicação hospeda o LLM, o MCP Client traduz os pedidos, e os MCP Servers expõem as ferramentas por stdio, HTTP ou SSE. Trocar de host não obriga a reescrever os servidores.
arxiv.org/abs/2506.13538
initialize, resposta, initialized. Cliente e servidor negociam o que cada um suportatools/list. O cliente descobre em tempo de execução o que existetools/call, notificações opcionais de progresso, respostashutdown e exitO tools/list é o que permite acrescentar uma ferramenta sem tocar no código do agente.



O list_tools() descobre em tempo de execução o que o servidor oferece.

Instalar um servidor MCP é dar acesso ao seu ambiente. Voltamos a esse risco em 24/09.
Um agente de verdade, em menos de cem linhas, e um experimento sobre a descrição da tool.
MAX_PASSOS, usando Ollama local ou a API que a dupla já tem"faz uma consulta", e rodem a mesma pergunta de novodiario/2026-09-03.md quantos passos o laço levou nos dois casos, e se o modelo ainda escolheu a ferramenta certaCommit no dia. Em 08 e 10/09 não há aula, por conta do CBSoft 2026.