Olá a todos, aqui é a Emma do agent101.net!
É 28 de março de 2026, e se você é como eu, provavelmente passou os últimos meses sentindo que está constantemente tentando acompanhar o mundo dos agentes de IA. Toda semana há um novo framework, uma nova ferramenta, um novo debate filosófico sobre se os agentes vão dominar o mundo ou apenas agendar minhas consultas no dentista de forma mais eficiente. Minha caixa de entrada é um cemitério de artigos “imperdíveis” que ainda não li, e minhas abas do navegador são uma torre de Jenga precária de tutoriais pela metade.
Sério, pode parecer que todos os outros simplesmente ‘entendem’ isso. Enquanto isso, estou aqui, ainda tentando entender a diferença entre um ‘fluxo de trabalho agente’ e apenas, você sabe, um script normal que chama uma API. Isso soa familiar? Ótimo, porque você está no lugar certo.
Hoje, quero falar sobre algo que foi um verdadeiro ponto de virada para mim na compreensão dos agentes de IA: o humilde ‘ferramenta.’ Especificamente, como fornecer a um agente de IA as ferramentas *certas*, e entender *por que* essas ferramentas são importantes, faz toda a diferença. Vamos construir um agente de anotações “inteligente” super simples, mas incrivelmente perspicaz. Ele não vai escrever seu romance, mas vai mostrar o princípio fundamental de como os agentes interagem com o mundo exterior, que é, francamente, o segredo do sucesso.
Por que Ferramentas São o Superpoder do Agente (e Sua Revolução no Aprendizado)
Por muito tempo, meu modelo mental de um agente de IA era basicamente um chatbot muito inteligente. Você conversa com ele, ele responde, talvez resuma algumas coisas. E embora isso seja uma parte, falta o elemento crucial: agência. Um agente não está apenas respondendo; está *agindo*. E para agir, precisa de coisas para agir *com*.
Pense em um assistente humano. Se eu pedir ao meu assistente, “Ei, você pode encontrar o melhor voo para Tóquio no próximo mês?”, ele não apenas fica ali pensando muito. Ele abre um navegador, vai a um site de reservas de voos, insere critérios, compara preços e depois volta para mim com opções. O navegador, o site de reservas – essas são as ferramentas dele.
Os agentes de IA não são diferentes. Fora da caixa, um grande modelo de linguagem (LLM) é brilhante em entender a linguagem e gerar texto. Mas não pode *fazer* muito além disso. Ele não pode navegar na web, não pode executar código, não pode salvar arquivos no seu disco rígido. Para realizar essas ações, você precisa dar a ele funcionalidades específicas – suas ferramentas.
Essa percepção caiu como uma tonelada de tijolos há alguns meses, quando eu tentava fazer um agente encontrar artigos de notícias. Eu continuei alimentando-o com artigos, e ele os resumiria perfeitamente, mas eu queria que ele *encontrasse* os artigos primeiro. Eu estava preso na mentalidade de “LLM como um cérebro”. Assim que entendi que precisava dar a ele uma “ferramenta de busca na web”, de repente todo o quebra-cabeça se encaixou. Não se tratava de o LLM ficar mais inteligente; tratava-se de dar ao LLM a capacidade de interagir com o mundo.
Nossa Meta: Um Agente de Anotações Inteligente que *Lembra*
Hoje, vamos construir um agente muito básico que pode tomar notas. “Que grande coisa, Emma,” você pode dizer, “eu posso fazer isso com o Notepad.” E você estaria certo! Mas nosso agente terá uma diferença crucial: ele pode *lembrar* e *recuperar* notas, e decidirá *quando* usar essas capacidades.
Isso significa que ele precisa de duas ferramentas fundamentais:
- Uma ferramenta para *salvar* uma nota.
- Uma ferramenta para *recuperar* uma nota.
E como estamos começando simples, manteremos nossa “memória” o mais básica possível: um simples arquivo de texto no seu computador.
O que Você Vai Precisar (Checklist Pré-Voo):
- Python (eu estou usando 3.10+, mas qualquer versão moderna deve funcionar).
pippara instalar pacotes.- Uma chave de API para um LLM. Vou usar a API da OpenAI para este exemplo, especificamente `gpt-3.5-turbo`, porque é econômico e muito capaz para esse tipo de tarefa. Se você não tiver uma, pode obtê-la na plataforma da OpenAI. Lembre-se de mantê-la segura!
- A biblioteca Python
openai. - A biblioteca
langchain. Sim, eu sei, LangChain pode parecer um verdadeiro monstruosidade, mas para isso, usaremos apenas uma parte pequena e focada para demonstrar as ferramentas de forma clara.
Vamos instalar esses pacotes:
pip install openai langchain
E configure sua chave de API da OpenAI. A maneira mais segura geralmente é através de uma variável de ambiente:
export OPENAI_API_KEY="sua_chave_api_aqui"
Ou, se você estiver apenas brincando localmente, pode colocá-la diretamente no seu script (embora não seja recomendável para produção!):
import os
os.environ["OPENAI_API_KEY"] = "sua_chave_api_aqui"
Passo 1: Definindo Nossas Ferramentas
É aqui que a mágica começa. Vamos criar funções em Python que representam as capacidades do nosso agente. O LangChain tem uma boa maneira de encapsular essas funções em “ferramentas” que o LLM pode entender.
Ferramenta 1: Salvando uma Nota
Esta ferramenta irá pegar o título de uma nota e seu conteúdo, e salvá-la em um arquivo de texto simples. Cada nota será salva em seu próprio arquivo, nomeado após seu título, em um diretório `notes/`.
import os
def save_note(title: str, content: str) -> str:
"""
Salva uma nota em um arquivo de texto.
Args:
title (str): O título da nota.
content (str): O conteúdo da nota.
Returns:
str: Uma mensagem de confirmação.
"""
notes_dir = "notes"
if not os.path.exists(notes_dir):
os.makedirs(notes_dir)
filename = os.path.join(notes_dir, f"{title.replace(' ', '_').lower()}.txt")
try:
with open(filename, "w") as f:
f.write(content)
return f"Nota '{title}' salva com sucesso em {filename}."
except Exception as e:
return f"Erro ao salvar a nota '{title}': {e}"
# Exemplo de como chamá-la diretamente
# print(save_note("Minha Primeira Nota", "Este é o conteúdo da minha nota muito primeira."))
Algumas coisas para notar aqui:
- A função tem uma docstring clara. Isso é SUPER importante porque o LLM vai ler essa docstring para entender o que a ferramenta faz e como usá-la.
- Ela recebe argumentos específicos (`title`, `content`) com dicas de tipo. Isso ajuda o LangChain (e o LLM) a entender a entrada esperada.
- Ela retorna uma string. Este é a saída que o LLM verá após a execução da ferramenta.
- Estamos garantindo que um diretório `notes` exista. Boa prática!
Ferramenta 2: Recuperando uma Nota
Esta ferramenta irá pegar o título de uma nota e tentar ler seu conteúdo do arquivo de texto correspondente.
def retrieve_note(title: str) -> str:
"""
Recupera o conteúdo de uma nota previamente salva.
Args:
title (str): O título da nota a ser recuperada.
Returns:
str: O conteúdo da nota, ou uma mensagem de erro se não for encontrado.
"""
notes_dir = "notes"
filename = os.path.join(notes_dir, f"{title.replace(' ', '_').lower()}.txt")
if not os.path.exists(filename):
return f"Nota '{title}' não encontrada."
try:
with open(filename, "r") as f:
content = f.read()
return f"Conteúdo de '{title}':\n---\n{content}\n---"
except Exception as e:
return f"Erro ao recuperar a nota '{title}': {e}"
# Exemplo de como chamá-la diretamente
# print(retrieve_note("Minha Primeira Nota"))
Princípios semelhantes aqui: docstring clara, dicas de tipo e uma mensagem de retorno útil.
Passo 2: Conectando Nosso Agente
Agora que temos nossas funções, precisamos dizer ao LangChain para transformá-las em ferramentas que nosso LLM pode usar. Então, criaremos um agente que pode decidir *quando* usar essas ferramentas com base na nossa entrada.
from langchain.agents import initialize_agent, AgentType
from langchain_openai import ChatOpenAI
from langchain.tools import Tool
import os # Certifique-se de que isso está importado se ainda não estiver
# Inicializar o LLM (o "cérebro" do nosso agente)
llm = ChatOpenAI(temperature=0, model="gpt-3.5-turbo") # temperature=0 torna mais determinístico
# Definir nossas ferramentas para o LangChain
tools = [
Tool(
name="SaveNote",
func=save_note,
description="Útil para salvar novas notas ou atualizar as existentes. A entrada deve ser uma string JSON com as chaves 'title' e 'content'."
),
Tool(
name="RetrieveNote",
func=retrieve_note,
description="Útil para recuperar o conteúdo de uma nota previamente salva. A entrada deve ser o 'título' exato da nota."
)
]
# Inicializar o agente
# AgentType.OPENAI_FUNCTIONS é excelente porque usa as capacidades nativas de chamadas de função da OpenAI.
# Isso significa que o LLM é explicitamente treinado para decidir quando chamar funções e quais argumentos passar.
agent = initialize_agent(
tools,
llm,
agent=AgentType.OPENAI_FUNCTIONS,
verbose=True, # Defina como True para ver o processo de pensamento do agente
handle_parsing_errors=True # Bom para depuração
)
print("Agente inicializado! Digite 'exit' para sair.")
# Loop de interação principal
while True:
user_input = input("\nO que você quer fazer com suas notas? (Digite 'exit' para sair) > ")
if user_input.lower() == 'exit':
break
try:
result = agent.run(user_input)
print(f"\nResposta do agente: {result}")
except Exception as e:
print(f"Ocorreu um erro: {e}")
Vamos analisar os pontos importantes:
- `ChatOpenAI(temperature=0, model=”gpt-3.5-turbo”)`: Este é nosso LLM. `temperature=0` o torna menos criativo e mais focado na conclusão lógica de tarefas, que é geralmente o que você deseja para agentes.
- `Tool(…)`: É assim que envolvemos nossas funções Python em algo que o LangChain pode usar.
- `name`: Um identificador único para a ferramenta.
- `func`: A função Python real que definimos.
- `description`: ISSO É CRÍTICO! O LLM lê isso para entender *quando* e *como* usar sua ferramenta. Seja claro e específico sobre seu propósito e o formato de entrada esperado. Eu especifiquei JSON para `SaveNote` porque ele possui múltiplos argumentos.
- `initialize_agent(…)`: Aqui é onde criamos nosso agente.
- `tools`: Nossa lista de ferramentas.
- `llm`: Nosso cérebro LLM.
- `agent=AgentType.OPENAI_FUNCTIONS`: Este é o tipo específico de agente que utiliza o recurso de chamada de funções da OpenAI. Ele é realmente bom nisso!
- `verbose=True`: Este é seu melhor amigo para depuração! Isso mostra o “processo de pensamento” do agente – o que ele está pensando, qual ferramenta ele está chamando e a saída da ferramenta.
Vamos Testar Nosso Agente!
Salve o código acima como algo como `note_agent.py` e execute-o no seu terminal:
python note_agent.py
Agora, tente esses prompts:
Cenário 1: Salvando uma nova nota
O que você quer fazer com suas notas? > Eu preciso salvar uma nota sobre minha lista de compras. O conteúdo é: leite, ovos, pão, café.
Observe a saída detalhada! Você deve ver o agente perceber que precisa usar a ferramenta `SaveNote`, formular os argumentos, chamar a ferramenta e, em seguida, relatar a saída da ferramenta de volta para você.
Verifique seu diretório `notes/`. Você deve ver um arquivo chamado `grocery_list.txt` com o conteúdo!
Cenário 2: Recuperando uma nota
O que você quer fazer com suas notas? > Você pode me mostrar a nota da lista de compras?
Novamente, observe o processo de pensamento do agente. Ele deve identificar `RetrieveNote` como a ferramenta apropriada e retornar o conteúdo.
Cenário 3: Um pedido mais complexo (tomada de decisão)
O que você quer fazer com suas notas? > Acabei de lembrar que preciso adicionar manteiga à lista de compras. Depois, preciso lembrar uma nota de reunião que salvei chamada 'Kickoff do Projeto Alpha'.
Aqui, o agente deve primeiro decidir *atualizar* a lista de compras (salvando uma nova versão) e *depois* recuperar a nota do Projeto Alpha. Isso demonstra sua capacidade de raciocínio sequencial e uso de ferramentas.
Cenário 4: Algo que ele não pode fazer (e como ele lida com isso)
O que você quer fazer com suas notas? > Você pode enviar um e-mail para meu chefe sobre a lista de compras?
O agente não possui uma ferramenta de “envio de e-mail”. Ele deve reconhecer isso e responder adequadamente, explicando que não pode realizar essa ação porque não possui as ferramentas necessárias.
O Que Acabamos de Construir e Por Que Isso é Importante
Você acabou de construir um agente de IA que pode:
- Entender sua intenção: Ele descobriu se você queria salvar ou recuperar.
- Tomar decisões: Ele escolheu a ferramenta correta com base na sua solicitação.
- Executar ações: Ele chamou as funções Python que você forneceu.
- Processar resultados: Ele leu a saída da ferramenta e respondeu para você.
Esse simples tomador de notas demonstra o ciclo central de quase todos os agentes de IA avançados que existem por aí. A diferença entre este e um agente super complexo não está no princípio fundamental; está no *número* e na *sofisticação* das ferramentas às quais ele tem acesso. Imagine se nosso agente também tivesse ferramentas para:
- Pesquisar na web
- Enviar e-mails
- Definir lembretes de calendário
- Executar trechos de código Python
- Interagir com um banco de dados
As possibilidades se multiplicam assim que você começa a pensar em agentes como “cérebros com mãos” (essas mãos sendo as ferramentas).
Conselhos Práticos para Sua Jornada com Agentes:
- Comece Simples com Ferramentas: Não tente construir um agente de dominação mundial no primeiro dia. Escolha uma ou duas ações externas específicas que você deseja que um agente execute, defina-as como funções Python e depois conecte-as.
- Domine a Descrição: O campo `description` para suas ferramentas é fundamental. Dedique um tempo para criar descrições claras e concisas que digam ao LLM exatamente o que a ferramenta faz, quando usá-la e que tipo de entrada ela espera. É assim que o LLM “entende” suas ferramentas.
- Use `verbose=True`: Sério, esse é seu melhor amigo. Ele desmistifica o processo do agente e ajuda você a entender por que ele está tomando certas decisões (ou ficando preso).
- Pense “Ferramenta-Primeiro”: Quando você se deparar com uma tarefa que deseja que um agente execute, pergunte-se primeiro: “Que ações ou informações externas essa tarefa requer?” Cada uma dessas ações externas é uma potencial ferramenta.
- Experimente com Formatos de Entrada: Para ferramentas com múltiplos argumentos, especificar que a entrada deve ser uma string JSON geralmente funciona muito bem com `AgentType.OPENAI_FUNCTIONS`, já que o LLM é hábil em gerar JSON estruturado.
Espero que essa imersão em ferramentas ajude a desmistificar agentes de IA para você tanto quanto me ajudou. Não se trata de mágica; trata-se de dar a um modelo de linguagem poderoso as interfaces certas para interagir com o mundo. Vá em frente, construa algumas ferramentas e deixe seus agentes começar a trabalhar!
Até a próxima, boa construção de agentes!
Emma
agent101.net
🕒 Published: