SISTEMA DE ACESSO COMPUTACIONAL

Construindo Agentes em Casa de Graça: Ferramentas e Modelos Open Source


Você pode construir um sistema multi-agente funcional no seu laptop usando apenas ferramentas gratuitas e modelos open source. Sem cartão de crédito, sem limites de taxa de API, sem dependência de fornecedor. O compromisso? Inferência mais lenta e ligeiramente menos capacidade. Mas para aprendizado, experimentação e automação em pequena escala, é mais do que suficiente.

Ao final deste guia, você terá um agente de pesquisa local funcionando no seu próprio hardware — pesquisando na web, lendo arquivos e sintetizando informações — completamente de graça.

O Caso para o Desenvolvimento de Agentes Open Source

Realidade de Custos

A precificação da API Claude é razoável para cargas de trabalho em produção, mas aprendizado e experimentação se acumulam rapidamente. A inferência local elimina essa preocupação completamente — iterações infinitas a custo marginal zero.

Privacidade e Controle de Dados

Algumas cargas de trabalho não podem ir para APIs em nuvem. Dados de pacientes, código proprietário, lógica de negócios sensível — todos se beneficiam de ficar na sua máquina. Modelos locais dão o mesmo comportamento inteligente sem que nenhum dado saia do seu hardware.

O Teste de Realidade

Modelos open source de 7–13B parâmetros estão notavelmente atrás dos modelos de fronteira em raciocínio complexo, geração de código e seguimento de instruções. Para produção onde a precisão importa, as APIs comerciais permanecem a melhor escolha. Para aprendizado e prototipagem, modelos locais são excelentes.

Selecionando seu LLM Open Source

As Famílias de LLM

  • Llama (Meta): A família mais amplamente suportada. Llama 3 é particularmente capaz.
  • Mistral: Excelente relação qualidade/parâmetro. Mistral-7B supera seu tamanho.
  • Phi (Microsoft): Modelos pequenos extremamente eficientes. Phi-3 Mini funciona sem GPU.
  • Qwen (Alibaba): Forte desempenho multilíngue.

Tamanho do Modelo e Requisitos de Hardware

ModeloParâmetrosQuantizaçãoVRAMVelocidadeQualidade
Phi-3 Mini3.8B4-bit4GBMuito RápidaBoa
Mistral-7B7B4-bit8GBRápidaBoa
Llama-3-8B8B4-bit8GBRápidaMuito Boa
Llama-3-13B13B4-bit10GBMédiaMuito Boa
Mixtral-8x7B46.7B (MoE)4-bit24GBLentaExcelente

Quantização: Por Que Importa

A quantização comprime os pesos do modelo para usar menos memória. Um modelo de 7B parâmetros em precisão total requer ~28GB de RAM. O mesmo modelo em quantização de 4-bit precisa de ~4GB, com apenas uma pequena perda de qualidade.

Pontos de partida por hardware:

  • Laptop (8–16GB RAM): Phi-3 Mini ou Mistral-7B em 4-bit
  • Desktop com GPU intermediária: Mistral-7B ou Llama-3-8B com aceleração GPU
  • Desktop com GPU de alto desempenho: Mixtral-8x7B ou Llama-3-70B em 4-bit

Configuração de Inferência Local

Ollama: O Ponto de Entrada Mais Simples

Terminal window
# Instalar no macOS
brew install ollama
# Instalar no Linux
curl -fsSL https://ollama.com/install.sh | sh
# Baixar Mistral-7B
ollama pull mistral
# Opção mais leve para hardware mais lento
ollama pull phi3
# Iniciar o servidor de inferência
ollama serve

Verificar que funciona:

Terminal window
curl http://localhost:11434/api/generate -d '{
"model": "mistral",
"prompt": "O que é um agente de IA em uma frase?",
"stream": false
}'

LM Studio: Alternativa com Interface Gráfica

LM Studio é um aplicativo de desktop que fornece uma interface gráfica para baixar e executar modelos. Expõe um endpoint de API compatível com OpenAI.

Frameworks de Agentes Open Source

FrameworkMelhor ParaCurva de Aprendizado
LangChainAmplo suporte de ferramentasModerada
LangGraphWorkflows com máquinas de estadoModerada-Alta
AutoGenConversas multi-agenteBaixa
CrewAISistemas multi-agente baseados em papéisBaixa-Moderada

Comece com AutoGen ou LangChain. AutoGen é mais rápido para prototipar; LangChain dá mais controle sobre o loop do agente.

Construindo seu Primeiro Agente: Assistente de Pesquisa Local

Configuração do Ambiente

Terminal window
python3 -m venv agent-env
source agent-env/bin/activate
pip install langchain langchain-ollama langchain-community duckduckgo-search

O Agente Completo

#!/usr/bin/env python3
"""
Agente de Pesquisa Local usando Ollama + LangChain
Pré-requisitos:
- ollama serve (rodando em segundo plano)
- ollama pull mistral
- pip install langchain langchain-ollama langchain-community duckduckgo-search
"""
import json
from langchain_core.tools import tool
from langchain_core.prompts import ChatPromptTemplate
from langchain_ollama import ChatOllama
from langchain.agents import AgentExecutor, create_react_agent
from duckduckgo_search import DDGS
@tool
def search_web(query: str) -> str:
"""Pesquisa informações na web usando DuckDuckGo."""
try:
with DDGS() as ddgs:
results = list(ddgs.text(query, max_results=5))
if not results:
return "Nenhum resultado encontrado."
return json.dumps([
{"title": r["title"], "snippet": r["body"], "url": r["href"]}
for r in results
], indent=2)
except Exception as e:
return f"Pesquisa falhou: {e}"
@tool
def read_file(filepath: str) -> str:
"""Lê um arquivo local e retorna seu conteúdo."""
try:
with open(filepath, "r") as f:
return f.read()
except FileNotFoundError:
return f"Arquivo não encontrado: {filepath}"
@tool
def calculate(expression: str) -> str:
"""Avalia uma expressão aritmética simples com segurança."""
try:
result = eval(expression, {"__builtins__": {}}, {})
return str(result)
except Exception as e:
return f"Erro de cálculo: {e}"
llm = ChatOllama(
model="mistral",
base_url="http://localhost:11434",
temperature=0.3,
)
prompt = ChatPromptTemplate.from_messages([
("system", """Você é um assistente de pesquisa. Responda perguntas usando suas ferramentas.
Ferramentas disponíveis: {tool_names}
Descrições das ferramentas: {tools}
Siga este formato exatamente:
Thought: O que preciso descobrir?
Action: nome_ferramenta
Action Input: a entrada para a ferramenta
Observation: resultado da ferramenta
... (repita conforme necessário)
Thought: Agora tenho informações suficientes.
Final Answer: sua resposta completa"""),
("user", "{input}"),
("placeholder", "{agent_scratchpad}"),
])
tools = [search_web, read_file, calculate]
agent = create_react_agent(llm, tools, prompt)
agent_executor = AgentExecutor(
agent=agent,
tools=tools,
verbose=True,
max_iterations=8,
handle_parsing_errors=True,
)
if __name__ == "__main__":
result = agent_executor.invoke({
"input": "Quais são os três LLMs open source mais populares agora? Dê nomes e uma característica chave de cada um."
})
print(f"\nRESPOSTA FINAL:\n{result['output']}")

Executando

Terminal window
# Terminal 1: Iniciar Ollama
ollama serve
# Terminal 2: Executar o agente
python research_agent.py

Expandindo Capacidades: Ferramentas Sem APIs

Acesso a Banco de Dados Local

import sqlite3
@tool
def query_database(sql: str) -> str:
"""Executa uma consulta SQL somente leitura no banco de dados local."""
try:
conn = sqlite3.connect("data.db")
cursor = conn.cursor()
cursor.execute(sql)
rows = cursor.fetchall()
columns = [desc[0] for desc in cursor.description]
conn.close()
return json.dumps([dict(zip(columns, row)) for row in rows], indent=2)
except Exception as e:
return f"Erro de banco de dados: {e}"

Busca de Documentos Local com Embeddings

Terminal window
pip install sentence-transformers chromadb
from sentence_transformers import SentenceTransformer
import chromadb
model = SentenceTransformer("all-MiniLM-L6-v2")
client = chromadb.Client()
collection = client.create_collection("docs")
@tool
def search_docs(query: str) -> str:
"""Busca documentos locais por similaridade semântica."""
results = collection.query(
query_embeddings=[model.encode(query).tolist()],
n_results=3
)
return json.dumps(results["documents"][0], indent=2)

Restrições do Mundo Real e Soluções

Latência

Espere 2–30 segundos por etapa de inferência. Estratégias:

  • Projete agentes com menos etapas; mais simples é mais rápido
  • Agrupe chamadas de ferramentas quando possível

Lacunas de Precisão

Estratégias de mitigação:

  • Prompts mais curtos e explícitos — Especifique exatamente o formato esperado
  • Divida tarefas complexas em etapas
  • Valide saídas de ferramentas antes de devolvê-las ao agente
  • Use temperatura de 0.1–0.3 para uso de ferramentas

Implantação: Do Laptop para Sempre Ativo

Docker

FROM python:3.12-slim
RUN pip install langchain langchain-ollama langchain-community duckduckgo-search
COPY research_agent.py .
ENV OLLAMA_HOST=host.docker.internal:11434
CMD ["python3", "research_agent.py"]

Serviço Systemd (Linux)

Terminal window
sudo systemctl enable ollama
sudo systemctl start ollama

Indo Mais Fundo: Sistemas Multi-Agente em Casa

def run_pipeline(question: str) -> str:
research_result = researcher.invoke({"input": question})
final_output = writer.invoke({
"input": f"Com base nesta pesquisa, escreva um resumo claro:\n{research_result['output']}"
})
return final_output["output"]

O desenvolvimento de agentes open source é prático hoje. O caminho é: Ollama para inferência, LangChain ou AutoGen para o loop do agente, DuckDuckGo para busca, e o sistema de arquivos da sua máquina para todo o resto.

Comece simples — o agente de pesquisa acima. Faça funcionar. Depois adicione uma segunda ferramenta. Depois um segundo agente.


Artigos Relacionados