Agente de IA construído com LangGraph que realiza pesquisas em profundidade, valida informações cruzando múltiplas fontes, e gera relatórios confiáveis com referências.
O projeto inclui uma interface web moderna construída com Next.js + shadcn/ui e backend em FastAPI.
# Inicie a stack completa (backend + frontend)
./scripts/start_nextjs_stack.shAcesse: http://localhost:3000
Documentação completa: NEXTJS_GUIDE.md
- Pesquisa Inteligente: Gera queries específicas baseadas na pergunta
- Validação Cruzada: Compara informações de múltiplas fontes
- Detecção de Conflitos: Identifica contradições e informações conflitantes
- Iteração Adaptativa: Busca mais informações se necessário
- Relatórios Estruturados: Gera relatórios em Markdown com referências
- Níveis de Confiança: Calcula confiança nas informações coletadas
START
↓
plan_research (gera queries de busca)
↓
search_web (coleta informações)
↓
validate_information (cruza fontes e detecta conflitos)
↓
decide_next_step (decisão condicional)
↓
├─→ [needs_more_research] → search_web (loop)
└─→ [sufficient_info] → synthesize_report
↓
END
# Clone o repositório
cd langgraph
# Instale as dependências
pip install -r requirements.txt
# Configure as API keys
cp .env.example .env
# Edite .env e adicione sua ANTHROPIC_API_KEY- Acesse https://console.anthropic.com/
- Crie uma API key
- Configure no arquivo
.env:
ANTHROPIC_API_KEY=sua-chave-aquiNOVO! Agora suporta busca web real com Tavily.
- Acesse https://tavily.com/ (plano FREE: 1.000 créditos/mês)
- Obtenha sua API key gratuita
- Configure no
.env:
TAVILY_API_KEY=tvly-dev-sua-chave-aqui- Na interface, marque: ☑️ Usar Tavily API (busca real)
Sem Tavily? O agente usa simulação com LLM automaticamente.
📖 Guia completo: TAVILY_SETUP.md
from src.agent import ResearchAgent
# Inicializa o agente
agent = ResearchAgent(max_iterations=1)
# Realiza uma pesquisa
result = agent.research(
query="Quais são os principais benefícios da computação quântica?"
)
# Acessa os resultados
print(result["report"]) # Relatório final
print(result["references"]) # Lista de fontes
print(result["confidence"]) # Nível de confiança (0-1)from src.agent import ResearchAgent
agent = ResearchAgent(max_iterations=2)
result = agent.research(
query="Compare microserviços vs arquitetura monolítica"
)
print(f"📋 Relatório:\n{result['report']}")
print(f"\n💡 Confiança: {result['confidence']:.0%}")
print(f"📚 Fontes consultadas: {result['search_results_count']}")
print(f"✅ Validações realizadas: {result['validations_count']}")
print(f"⚠️ Conflitos detectados: {result['conflicts_detected']}")python tests/test_agent.pyIsso executará:
- Testes automatizados
- Visualização do grafo
- Modo interativo (opcional)
langgraph/
├── src/ # Código fonte
│ ├── __init__.py
│ ├── agent.py # Grafo principal e orquestração
│ ├── states.py # Definição de estados (TypedDict)
│ └── nodes.py # Implementação dos nós do grafo
├── backend/ # API FastAPI
│ └── api.py # Endpoints da API
├── frontend/ # Interface Next.js + shadcn/ui
│ ├── app/ # App router
│ ├── components/ # Componentes React
│ └── lib/ # Utilitários
├── tests/ # Testes
│ ├── __init__.py
│ ├── test_agent.py # Testes do agente
│ └── test_tavily.py # Testes da API Tavily
├── docs/ # Documentação
│ ├── TAVILY_SETUP.md # Guia de configuração Tavily
│ └── QUICKSTART.md # Guia rápido
├── scripts/ # Scripts utilitários
│ ├── start_backend.sh # Inicia backend FastAPI
│ ├── start_frontend.sh # Inicia frontend Next.js
│ └── start_nextjs_stack.sh # Inicia stack completa
├── requirements.txt # Dependências Python
├── .env # Variáveis de ambiente (não versionado)
├── .gitignore # Arquivos ignorados pelo Git
├── NEXTJS_GUIDE.md # Guia da interface Next.js
└── README.md # Este arquivo
Define a estrutura de dados que flui pelo grafo:
ResearchState: Estado globalSearchResult: Resultado individual de buscaValidationResult: Resultado de validação
Implementa a lógica de cada etapa:
plan_research: Gera queries de busca inteligentessearch_web: Executa buscas e coleta informaçõesvalidate_information: Cruza fontes e detecta conflitossynthesize_report: Gera relatório finaldecide_next_step: Decide se precisa mais pesquisa
Orquestra o grafo e fornece a interface principal.
agent = ResearchAgent()
agent.visualize()Isso gerará um arquivo .mmd que você pode visualizar em https://mermaid.live/
O arquivo tests/test_agent.py inclui:
test_basic_research(): Teste de pesquisa simplestest_complex_research(): Teste com comparaçãotest_technical_research(): Teste técnicointeractive_mode(): Modo interativo de perguntas
Execute todos os testes:
python tests/test_agent.pyagent = ResearchAgent(max_iterations=3) # Até 3 rodadas de pesquisaPor padrão, o agente simula resultados de busca usando o LLM. Para usar busca web real:
- Obtenha uma API key do Tavily: https://tavily.com/
- Configure no
.env:TAVILY_API_KEY=sua-chave-tavily
- Na interface, marque a opção "Usar Tavily API (busca real)"
- Pesquisa Acadêmica: Coleta e valida informações para trabalhos
- Due Diligence: Investiga empresas/produtos
- Fact-Checking: Verifica afirmações cruzando fontes
- Análise Competitiva: Compara soluções/tecnologias
- Revisão de Literatura: Mapeia estado da arte de um tópico
- Integração com mais APIs de busca (Serper, Brave, etc)
- Sistema de cache de resultados
- Exportação de relatórios (PDF, HTML)
- Suporte a documentos locais (PDFs, etc)
- Busca em bases acadêmicas (arXiv, PubMed)
- Sistema de citações acadêmicas (ABNT, APA)
Sugestões e PRs são bem-vindos!
MIT License
Desenvolvido com LangGraph e Claude 🚀