Criei uma versão open source do Deep Research da OpenAI
Fala TabNews! Queria compartilhar minha implementação open source do Deep Research da OpenAI, usando Firecrawl para busca e extração de dados.
Ontem a noite a OpenAI lançou o Deep Research, uma ferramenta que permite realizar pesquisas profundas na web usando IA. Entao em algumas horas decidi criar uma versão open source usando Next.js, Firecrawl e o AI SDK da Vercel.
O meu post no X na madrugada teve muitas visualizações e então lancei pela manhã.
Como Funciona:
- Arquitetura Principal:
- Utilizei o AI SDK da Vercel para gerenciar streams e chamadas de modelo - partiu de um fork do AI chatbot da Vercel que eu tinha apaptado.
- Implementei um sistema de agentes que coordena busca, extração e análise
- Criei um deep research context no React para gerenciar o estado da pesquisa em tempo real
- Componentes Principais:
- Um agente de pesquisa que utiliza Firecrawl para buscar e extrair dados da web
- Sistema de análise progressiva que avalia e sintetiza informações
- UI em tempo real mostrando progresso, fontes e atividades
- Fluxo de Pesquisa:
- Busca inicial usando Firecrawl
- Extração estruturada de dados das páginas relevantes
- Análise progressiva usando modelos de raciocínio
- Síntese final dos resultados
Dentro do Agente
O coração do sistema está no arquivo api/chat/route.ts, onde implementei o agente de pesquisa:
O agente opera em um ciclo iterativo de busca-extração-análise, controlado por um sistema de estado gerenciado. Cada ciclo começa com uma busca usando Firecrawl /search
, que retorna URLs relevantes ao prompt da pesquisa. O agente então extrai informações estruturadas dessas URLs usando a função /extract
do Firecrawl, que processa as URLs mais relevantes por vez e extraí qualquer dado que você queira da URL. Após a extração, a função analyzeAndPlan
avalia os dados coletados, determinando lacunas no conhecimento e próximos passos. O agente mantém um researchState
que rastreia descobertas, sumários e métricas de progresso, com limites de profundidade (maxDepth) e tempo (5 minutos) para evitar o maxDuration
da edge function da Vercel.
Todo o processo é transmitido em tempo real via dataStream
, permitindo uma UI reativa que mostra o progresso da pesquisa, fontes consultadas e atividades do agente. O ciclo continua até que o agente determine que tem informações suficientes ou atinja os limites estabelecidos, culminando em uma síntese final usando um modelo de raciocínio para gerar uma análise abrangente das descobertas.
Stack:
- Next.js (App Router)
- Firecrawl para busca e extração
- AI SDK da Vercel
- TypeScript
- Tailwind CSS
- Radix UI para componentes base
Se gostaram me avisa que vou começar a trazer mais desse conteúdo e se quiserem dar um star na repo, ajuda demais!
https://github.com/nickscamara/open-deep-research
Obrigado :)