Agentes de IA na Prática: Como Criar um Assistente Autônomo com Python (2026)
Tags: ia, python, agentes, tutorial, programacao
Você já imaginou ter um assistente de IA que não apenas responde perguntas, mas executa tarefas — pesquisa na web, manipula arquivos, chama APIs e toma decisões por conta própria? Em 2026, isso não é ficção científica. Os chamados agentes de IA autônomos são a tendência mais quente do momento, e o melhor: você pode construir o seu com Python em poucas horas.
Neste artigo, você vai aprender o que realmente é um agente de IA, como funciona o ciclo de raciocínio por trás dele, e vai construir um agente funcional do zero — sem frameworks misteriosos, sem dependências obscuras. Apenas Python puro e uma API de LLM.
O que é um Agente de IA?
Diferente de um chatbot comum que apenas gera texto, um agente de IA é um sistema que:
- Recebe um objetivo (ex: "pesquise sobre o clima e me mande um resumo")
- Raciocina sobre como alcançá-lo
- Escolhe ferramentas para executar (buscar na web, ler arquivos, calcular)
- Observa o resultado das ações
- Repete até concluir o objetivo
Esse ciclo é conhecido como ReAct (Reasoning + Acting), popularizado por pesquisadores em 2023 e hoje o padrão de facto para agentes.
┌─────────────────────────────────────┐
│ AGENT LOOP (ReAct) │
│ │
│ Objetivo → Pensamento → Ação │
│ ↑ ↓ │
│ Observação ←── Resultado │
│ ↓ │
│ [Repetir até concluir] │
└─────────────────────────────────────┘
Mão na Massa: Construindo um Agente do Zero
Vamos construir um agente que consegue pesquisar na web e ler arquivos para responder perguntas complexas. Usaremos a API da OpenAI (compatível com qualquer provedor que suporte tool calling, como DeepSeek, Groq, ou modelos locais via Ollama).
1. Configuração do Ambiente
Primeiro, crie um ambiente virtual e instale as dependências mínimas:
python3 -m venv venv-agente
source venv-agente/bin/activate
pip install openai requests python-dotenv
Crie um arquivo .env com sua chave de API:
OPENAI_API_KEY=sua-chave-aqui
# Para provedor alternativo, descomente:
# OPENAI_BASE_URL=https://api.deepseek.com/v1
2. Conectando ao Modelo
Vamos criar uma função simples para conversar com o LLM, suportando tool calling — o recurso que permite ao modelo solicitar a execução de funções:
import os
import json
from openai import OpenAI
from dotenv import load_dotenv
load_dotenv()
client = OpenAI(
api_key=os.getenv("OPENAI_API_KEY"),
base_url=os.getenv("OPENAI_BASE_URL", "https://api.openai.com/v1"),
)
MODEL = os.getenv("MODEL_NAME", "gpt-4o")
3. Definindo as Ferramentas do Agente
Aqui está o coração do sistema. Cada ferramenta é uma função Python com um schema JSON que descreve como o modelo deve chamá-la:
def buscar_web(query: str) -> str:
"""Pesquisa na web e retorna resultados resumidos."""
import requests
from urllib.parse import quote
url = f"https://api.duckduckgo.com/?q={quote(query)}&format=json"
resp = requests.get(url, timeout=10)
data = resp.json()
resultados = []
for item in data.get("Results", [])[:5]:
resultados.append(f"- {item.get('Text', '')}")
return "\n".join(resultados) if resultados else "Nenhum resultado encontrado."
def calcular(expressao: str) -> str:
"""Avalia uma expressão matemática."""
try:
return str(eval(expressao, {"__builtins__": {}}, {}))
except Exception as e:
return f"Erro: {e}"
def ler_arquivo(caminho: str) -> str:
"""Lê o conteúdo de um arquivo de texto."""
try:
with open(caminho, "r", encoding="utf-8") as f:
return f.read()
except Exception as e:
return f"Erro ao ler arquivo: {e}"
Agora, definimos os schemas que o modelo entende:
FERRAMENTAS = [
{
"type": "function",
"function": {
"name": "buscar_web",
"description": "Pesquisa na web por informações atualizadas",
"parameters": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Termo de busca"
}
},
"required": ["query"]
}
}
},
{
"type": "function",
"function": {
"name": "calcular",
"description": "Executa uma expressão matemática",
"parameters": {
"type": "object",
"properties": {
"expressao": {
"type": "string",
"description": "Expressão matemática (ex: 2 + 2 * 5)"
}
},
"required": ["expressao"]
}
}
},
{
"type": "function",
"function": {
"name": "ler_arquivo",
"description": "Lê o conteúdo de um arquivo",
"parameters": {
"type": "object",
"properties": {
"caminho": {
"type": "string",
"description": "Caminho completo do arquivo"
}
},
"required": ["caminho"]
}
}
}
]
# Mapeia nomes para funções
FUNCOES_DISPONIVEIS = {
"buscar_web": buscar_web,
"calcular": calcular,
"ler_arquivo": ler_arquivo,
}
4. O Loop do Agente
Esta é a peça central — o loop que executa o ciclo ReAct:
def executar_agente(pergunta: str, max_iteracoes: int = 10) -> str:
"""Executa o agente com uma pergunta até encontrar a resposta."""
mensagens = [
{
"role": "system",
"content": (
"Você é um assistente autônomo. Resolva problemas passo a passo. "
"Use as ferramentas disponíveis quando precisar de informações externas. "
"Quando tiver a resposta final, responda diretamente."
)
},
{"role": "user", "content": pergunta}
]
for passo in range(max_iteracoes):
print(f"\n🧠 Passo {passo + 1}: Chamando modelo...")
resposta = client.chat.completions.create(
model=MODEL,
messages=mensagens,
tools=FERRAMENTAS,
tool_choice="auto"
)
mensagem = resposta.choices[0].message
# Se o modelo não pediu ferramenta, temos a resposta final
if not mensagem.tool_calls:
return mensagem.content
# Adiciona a resposta do modelo ao histórico
mensagens.append(mensagem)
# Executa cada ferramenta solicitada
for tool_call in mensagem.tool_calls:
nome_funcao = tool_call.function.name
argumentos = json.loads(tool_call.function.arguments)
print(f"🔧 Executando: {nome_funcao}({argumentos})")
if nome_funcao in FUNCOES_DISPONIVEIS:
resultado = FUNCOES_DISPONIVEIS[nome_funcao](**argumentos)
else:
resultado = f"Erro: ferramenta '{nome_funcao}' não encontrada"
# Adiciona o resultado da ferramenta ao histórico
mensagens.append({
"role": "tool",
"tool_call_id": tool_call.id,
"content": str(resultado)
})
print(f"📥 Resultado: {resultado[:100]}...")
return "❌ Número máximo de iterações atingido sem conclusão."
5. Testando o Agente
Agora vamos colocar nosso agente para trabalhar:
# Teste 1: Pesquisa na web
resposta = executar_agente(
"Pesquise sobre as tendências de IA para 2026 e me dê um resumo dos 3 pontos principais"
)
print(f"\n📝 Resposta final:\n{resposta}")
# Teste 2: Cálculos
resposta = executar_agente(
"Calcule quanto é 25 * 48 + 1000 / 4"
)
print(f"\n📝 Resposta final:\n{resposta}")
# Teste 3: Múltiplas ferramentas
resposta = executar_agente(
"Pesquise qual a população do Brasil em 2026 e calcule 10% desse valor"
)
print(f"\n📝 Resposta final:\n{resposta}")
Exemplo Real: Agente Pesquisador
Vamos criar um agente especializado que pesquisa, analisa e gera um relatório completo:
def agente_pesquisador(tema: str) -> str:
prompt = f"""
Você é um pesquisador assistente. Para o tema "{tema}", faça:
1. Pesquise na web informações atualizadas
2. Analise os resultados
3. Gere um relatório estruturado com:
- Visão geral
- 3-5 pontos principais
- Conclusão
Use buscar_web quantas vezes precisar.
"""
return executar_agente(prompt, max_iteracoes=15)
# Uso:
relatorio = agente_pesquisador("Avanços em inteligência artificial em 2026")
print(relatorio)
Evoluindo o Agente
O que construímos aqui é a base. Para um sistema mais robusto, você pode adicionar:
✅ Memória Persistente
Guarde o histórico em um banco SQLite para que o agente "lembre" de conversas anteriores.
✅ Ferramentas Personalizadas
- Enviar e-mail → integração com SMTP
- Manipular planilhas → openpyxl
- Processar imagens → integração com APIs de visão computacional
- Acessar bancos de dados → SQL via psycopg2 ou sqlite3
✅ Segurança e Validação
- Sanitização de entradas para
eval() - Rate limiting por ferramenta
- Confirmação humana para ações destrutivas
✅ Interface Web
Com FastAPI + HTMX, você pode criar um chat interativo para seu agente em minutos:
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Pergunta(BaseModel):
texto: str
@app.post("/agente")
async def perguntar(p: Pergunta):
resposta = executar_agente(p.texto)
return {"resposta": resposta}
Agentes com Frameworks (Quando Usar)
O que construímos aqui é didático e funcional. Para produção, considere frameworks especializados:
| Framework | Ideal para | Aprendizado |
|---|---|---|
| LangChain / LangGraph | Fluxos complexos com múltiplos agentes | Curva média |
| CrewAI | Equipes de agentes colaborando | Curva baixa |
| AutoGen (Microsoft) | Agentes conversando entre si | Curva média |
| Sem framework (como aqui) | Controle total, aprendizado | Curva inicial alta |
Para a maioria dos projetos pessoais e automações, seu próprio agente com Python puro é mais que suficiente — e você entende exatamente o que está acontecendo.
Conclusão
Em 2026, construir um agente de IA autônomo não é mais um bicho de sete cabeças. Com Python, uma API de LLM e o loop ReAct, você pode criar assistentes que pesquisam, calculam, leem arquivos e executam tarefas do mundo real.
O código deste artigo é o ponto de partida. Adicione suas próprias ferramentas, customize o prompt de sistema, e você terá um assistente pessoal que trabalha 24/7 por você.
E você, vai criar qual agente hoje? 🚀
Artigo escrito por IA na Prática — tecnologia acessível para desenvolvedores reais.
Quer mais conteúdos como este? Siga o blog IA na Prática no DEV.to para tutoriais práticos toda semana.
Top comments (0)