Deep Research
Gera relatórios de pesquisa aprofundados usando modelos de IA poderosos.
Documentação
Relatório de Pesquisa Profunda Relâmpago
O Deep Research utiliza uma variedade de modelos de IA poderosos para gerar relatórios de pesquisa aprofundados em apenas alguns minutos. Ele aproveita modelos avançados de "Pensamento" e "Tarefa", combinados com uma conexão com a internet, para fornecer análises rápidas e perspicazes sobre diversos tópicos. Sua privacidade é primordial - todos os dados são processados e armazenados localmente.
✨ Recursos
- Pesquisa Profunda Rápida: Gera relatórios de pesquisa abrangentes em cerca de 2 minutos, acelerando significativamente seu processo de pesquisa.
- Suporte Multi-plataforma: Suporta implantação rápida em Vercel, Cloudflare e outras plataformas.
- Alimentado por IA: Utiliza modelos de IA avançados para análises precisas e perspicazes.
- Foco em Privacidade: Seus dados permanecem privados e seguros, pois todos são armazenados localmente no seu navegador.
- Suporte Multi-LLM: Suporta uma variedade de modelos de linguagem de grande porte, incluindo Gemini, OpenAI, Anthropic, Deepseek, Atlas Cloud, Grok, Mistral, Azure OpenAI, qualquer LLM compatível com OpenAI, OpenRouter, Ollama, etc.
- Suporte a Busca na Web: Suporta mecanismos de busca como Searxng, Tavily, Firecrawl, fastCRW, Exa, Bocha, Brave, etc., permitindo que LLMs que não suportam busca utilizem a função de busca na web de forma mais conveniente.
- Modelos de Pensamento e Tarefa: Emprega modelos sofisticados de "Pensamento" e "Tarefa" para equilibrar profundidade e velocidade, garantindo resultados de alta qualidade rapidamente. Suporta a troca de modelos de pesquisa.
- Suporte a Pesquisa Adicional: Você pode refinar ou ajustar o conteúdo da pesquisa em qualquer etapa do projeto e apoiar uma nova pesquisa a partir dessa etapa.
- Base de Conhecimento Local: Suporta o upload e processamento de arquivos de texto, Office, PDF e outros recursos para gerar uma base de conhecimento local.
- Artefato: Suporta edição do conteúdo da pesquisa, com dois modos de edição: WYSIWYM e Markdown. É possível ajustar o nível de leitura, o comprimento do artigo e a tradução do texto completo.
- Grafo de Conhecimento: Suporta a geração de grafo de conhecimento com um clique, permitindo que você tenha uma compreensão sistemática do conteúdo do relatório.
- Histórico de Pesquisa: Suporta a preservação do histórico de pesquisa; você pode revisar resultados anteriores a qualquer momento e realizar pesquisas aprofundadas novamente.
- Suporte a API Local e de Servidor: Oferece flexibilidade com opções de chamada de API local e no servidor para atender às suas necessidades.
- Suporte a SaaS e MCP: Você pode usar este projeto como um serviço de pesquisa profunda (SaaS) através da API SSE, ou usá-lo em outros serviços de IA através do serviço MCP.
- Suporte a PWA: Com a tecnologia Progressive Web App (PWA), você pode usar o projeto como um software.
- Suporte a Multi-Key payload: Suporta payload de múltiplas chaves para melhorar a eficiência da resposta da API.
- Suporte Multi-idioma: Inglês, 简体中文, Espanhol.
- Construído com Tecnologias Modernas: Desenvolvido usando Next.js 15 e Shadcn UI, garantindo uma experiência de usuário moderna, performática e visualmente atraente.
- Licença MIT: Código aberto e gratuito para uso pessoal e comercial sob a Licença MIT.
🎯 Roteiro
- Suporte à preservação do histórico de pesquisa
- Suporte à edição do relatório final e dos resultados de busca
- Suporte a outros modelos de LLM
- Suporte a upload de arquivos e base de conhecimento local
- Suporte a API SSE e servidor MCP
🚀 Começando
Usar o Gemini Gratuito (recomendado)
-
Obtenha a Chave da API Gemini
-
Implantação do projeto com um clique; você pode escolher implantar no Vercel ou Cloudflare
Atualmente, o projeto suporta implantação no Cloudflare, mas você precisa seguir Como implantar no Cloudflare Pages para fazê-lo.
-
Comece a usar
Usar Outro LLM
- Implante o projeto no Vercel ou Cloudflare
- Defina a chave da API do LLM
- Defina a URL base da API do LLM (opcional)
- Comece a usar
⌨️ Desenvolvimento
Siga estes passos para colocar o Deep Research em funcionamento no seu navegador local.
Pré-requisitos
Instalação
-
Clone o repositório:
git clone https://github.com/u14app/deep-research.git cd deep-research -
Instale as dependências:
pnpm install # or npm install or yarn install -
Configure as Variáveis de Ambiente:
Você precisa modificar o arquivo
env.tplpara.env, ou criar um arquivo.enve escrever as variáveis nesse arquivo.# For Development cp env.tpl .env.local # For Production cp env.tpl .env -
Execute o servidor de desenvolvimento:
pnpm dev # or npm run dev or yarn devAbra seu navegador e visite http://localhost:3000 para acessar o Deep Research.
Lista de Modelos Personalizados
O projeto permite uma lista de modelos personalizados, mas só funciona no modo proxy. Adicione uma variável de ambiente chamada NEXT_PUBLIC_MODEL_LIST no arquivo .env ou na página de variáveis de ambiente.
As listas de modelos personalizados usam , para separar vários modelos. Se você quiser desativar um modelo, use o símbolo - seguido do nome do modelo, ou seja, -existing-model-name. Para permitir apenas que o modelo especificado esteja disponível, use -all,+new-model-name.
🚢 Implantação
Vercel
Cloudflare
Atualmente, o projeto suporta implantação no Cloudflare, mas você precisa seguir Como implantar no Cloudflare Pages para fazê-lo.
Docker
A versão do Docker precisa ser 20 ou superior; caso contrário, será exibido um aviso de que a imagem não pode ser encontrada.
⚠️ Nota: Na maioria das vezes, a versão do Docker ficará defasada em 1 a 2 dias em relação à versão mais recente, então o aviso "existe atualização" continuará aparecendo após a implantação, o que é normal.
docker pull xiangfa/deep-research:latest
docker run -d --name deep-research -p 3333:3000 xiangfa/deep-research
Você também pode especificar variáveis de ambiente adicionais:
docker run -d --name deep-research \
-p 3333:3000 \
-e ACCESS_PASSWORD=your-password \
-e GOOGLE_GENERATIVE_AI_API_KEY=AIzaSy... \
xiangfa/deep-research
ou construir sua própria imagem docker:
docker build -t deep-research .
docker run -d --name deep-research -p 3333:3000 deep-research
Se você precisar especificar outras variáveis de ambiente, adicione -e key=value ao comando acima para especificá-las.
Implante usando docker-compose.yml:
version: '3.9'
services:
deep-research:
image: xiangfa/deep-research
container_name: deep-research
environment:
- ACCESS_PASSWORD=your-password
- GOOGLE_GENERATIVE_AI_API_KEY=AIzaSy...
ports:
- 3333:3000
ou construa seu próprio docker compose:
docker compose -f docker-compose.yml build
Implantação Estática
Você também pode compilar uma versão de página estática diretamente e, em seguida, enviar todos os arquivos no diretório out para qualquer serviço de site que suporte páginas estáticas, como Github Page, Cloudflare, Vercel, etc.
pnpm build:export
⚙️ Configuração
Como mencionado na seção "Começando", o Deep Research utiliza as seguintes variáveis de ambiente para configurações de API no lado do servidor:
Consulte o arquivo env.tpl para todas as variáveis de ambiente disponíveis.
Notas Importantes sobre Variáveis de Ambiente:
-
Lembrete de Privacidade: Essas variáveis de ambiente são usadas principalmente para chamadas de API no lado do servidor. Ao usar o modo de API local, nenhuma chave de API ou configuração no lado do servidor é necessária, aumentando ainda mais sua privacidade.
-
Suporte Multi-chave: Suporta várias chaves, cada chave é separada por
,, ou seja,key1,key2,key3. -
Configuração de Segurança: Ao definir
ACCESS_PASSWORD, você pode proteger melhor a segurança da API do servidor. -
Tornar as variáveis efetivas: Após adicionar ou modificar esta variável de ambiente, reimplante o projeto para que as alterações entrem em vigor.
📄 Documentação da API
Atualmente, o projeto suporta duas formas de API: Server-Sent Events (SSE) e Model Context Protocol (MCP).
API Server-Sent Events
A API do Deep Research fornece uma interface em tempo real para iniciar e monitorar tarefas de pesquisa complexas.
Recomenda-se usar a API via @microsoft/fetch-event-source; para obter o relatório final, você precisa ouvir o evento message, e os dados serão retornados na forma de um fluxo de texto.
Método POST
Endpoint: /api/sse
Método: POST
Corpo:
interface SSEConfig {
// Research topic
query: string;
// AI provider, Possible values include: google, openai, anthropic, deepseek, atlascloud, xai, mistral, azure, openrouter, openaicompatible, pollinations, ollama
provider: string;
// Thinking model id
thinkingModel: string;
// Task model id
taskModel: string;
// Search provider, Possible values include: model, tavily, firecrawl, crw, exa, bocha, searxng
searchProvider: string;
// Response Language, also affects the search language. (optional)
language?: string;
// Maximum number of search results. Default, `5` (optional)
maxResult?: number;
// Whether to include content-related images in the final report. Default, `true`. (optional)
enableCitationImage?: boolean;
// Whether to include citation links in search results and final reports. Default, `true`. (optional)
enableReferences?: boolean;
}
Cabeçalhos:
interface Headers {
"Content-Type": "application/json";
// If you set an access password
// Authorization: "Bearer YOUR_ACCESS_PASSWORD";
}
Consulte a documentação detalhada da API.
Método GET
Esta é uma implementação interessante. Você pode assistir a todo o processo de pesquisa profunda diretamente pela URL, como se estivesse assistindo a um vídeo.
Você pode acessar o relatório de pesquisa profunda através do seguinte link:
http://localhost:3000/api/sse/live?query=AI+trends+for+this+year&provider=pollinations&thinkingModel=openai&taskModel=openai-fast&searchProvider=searxng
Parâmetros de Consulta:
// The parameters are the same as POST parameters
interface QueryParams extends SSEConfig {
// If you set the `ACCESS_PASSWORD` environment variable, this parameter is required
password?: string;
}
Servidor Model Context Protocol (MCP)
Atualmente suporta transporte de servidor StreamableHTTP e SSE.
Endpoint do servidor StreamableHTTP: /api/mcp, tipo de transporte: streamable-http
Endpoint do servidor SSE: /api/mcp/sse, tipo de transporte: sse
{
"mcpServers": {
"deep-research": {
"url": "http://127.0.0.1:3000/api/mcp",
"transportType": "streamable-http",
"timeout": 600
}
}
}
Nota: Como a pesquisa profunda leva muito tempo para ser executada, você precisa definir um tempo limite maior para evitar interromper o estudo.
Se o seu servidor definir ACCESS_PASSWORD, o serviço MCP será protegido e você precisará adicionar parâmetros de cabeçalho adicionais:
{
"mcpServers": {
"deep-research": {
"url": "http://127.0.0.1:3000/api/mcp",
"transportType": "streamable-http",
"timeout": 600,
"headers": {
"Authorization": "Bearer YOUR_ACCESS_PASSWORD"
}
}
}
}
Para habilitar o serviço MCP, é necessário definir variáveis de ambiente globais:
# MCP Server AI provider
# Possible values include: google, openai, anthropic, deepseek, atlascloud, xai, mistral, azure, openrouter, openaicompatible, pollinations, ollama
MCP_AI_PROVIDER=google
# MCP Server search provider. Default, `model`
# Possible values include: model, tavily, firecrawl, crw, exa, bocha, searxng
MCP_SEARCH_PROVIDER=tavily
# MCP Server thinking model id, the core model used in deep research.
MCP_THINKING_MODEL=gemini-2.0-flash-thinking-exp
# MCP Server task model id, used for secondary tasks, high output models are recommended.
MCP_TASK_MODEL=gemini-2.0-flash-exp
Nota: Para garantir que o serviço MCP possa ser usado normalmente, você precisa definir as variáveis de ambiente do modelo e do mecanismo de busca correspondentes. Para parâmetros específicos de variáveis de ambiente, consulte env.tpl.
🪄 Como funciona
-
Tópico de pesquisa
- Insira o tópico de pesquisa
- Use recursos de pesquisa locais (opcional)
- Comece a pensar (ou repensar)
-
Proponha suas ideias
- O sistema faz perguntas
- Responda às perguntas do sistema (opcional)
- Escreva um plano de pesquisa (ou reescreva o plano de pesquisa)
- O sistema gera o plano de pesquisa
- Inicie a pesquisa aprofundada (ou re-pesquise)
- O sistema gera consultas SERP
- O sistema faz perguntas
-
Coleta de informações
- Pesquisa inicial
- Recupere recursos de pesquisa locais com base nas consultas SERP
- Colete informações da internet com base nas consultas SERP
- Pesquisa aprofundada (este processo pode ser repetido)
- Proponha sugestões de pesquisa (opcional)
- Inicie uma nova rodada de coleta de informações (o processo é o mesmo da pesquisa inicial)
- Pesquisa inicial
-
Gerar Relatório Final
- Faça uma solicitação de escrita (opcional)
- Resuma todos os materiais de pesquisa em um relatório Markdown abrangente
- Regere o relatório de pesquisa (opcional)
flowchart TB
A[Research Topic]:::start
subgraph Propose[Propose your ideas]
B1[System asks questions]:::process
B2[System outputs the research plan]:::process
B3[System generates SERP queries]:::process
B1 --> B2
B2 --> B3
end
subgraph Collect[Information collection]
C1[Initial research]:::collection
C1a[Retrieve local research resources based on SERP queries]:::collection
C1b[Collect information from the Internet based on SERP queries]:::collection
C2[In-depth research]:::recursive
Refine{More in-depth research needed?}:::decision
C1 --> C1a
C1 --> C1b
C1a --> C2
C1b --> C2
C2 --> Refine
Refine -->|Yes| C2
end
Report[Generate Final Report]:::output
A --> Propose
B3 --> C1
%% Connect the exit from the loop/subgraph to the final report
Refine -->|No| Report
%% Styling
classDef start fill:#7bed9f,stroke:#2ed573,color:black
classDef process fill:#70a1ff,stroke:#1e90ff,color:black
classDef recursive fill:#ffa502,stroke:#ff7f50,color:black
classDef output fill:#ff4757,stroke:#ff6b81,color:black
classDef collection fill:#a8e6cf,stroke:#3b7a57,color:black
classDef decision fill:#c8d6e5,stroke:#8395a7,color:black
class A start
class B1,B2,B3 process
class C1,C1a,C1b collection
class C2 recursive
class Refine decision
class Report output
🙋 Perguntas Frequentes
Por que meu Ollama ou SearXNG não funciona corretamente e exibe o erro TypeError: Failed to fetch?
Se sua solicitação gerar CORS devido a restrições de segurança do navegador, você precisa configurar parâmetros para Ollama ou SearXNG para permitir solicitações entre origens. Você também pode considerar usar o modo de proxy do servidor, que é um servidor backend que faz as solicitações, evitando efetivamente problemas de origem cruzada.
🛡️ Privacidade
O Deep Research foi projetado com sua privacidade em mente. Todos os dados de pesquisa e relatórios gerados são armazenados localmente na sua máquina. Não coletamos nem transmitimos seus dados de pesquisa para servidores externos (a menos que você esteja explicitamente usando chamadas de API no lado do servidor; nesse caso, os dados são enviados à API através do seu proxy configurado, se houver). Sua privacidade é nossa prioridade.
🙏 Agradecimentos
- Next.js - O framework React para construir aplicações web performáticas.
- Shadcn UI - Componentes lindamente projetados que ajudaram a otimizar o desenvolvimento da interface.
- AI SDKs - Alimentando as capacidades de pesquisa inteligente do Deep Research.
- Deep Research - Agradecemos ao projeto
dzhng/deep-researchpela inspiração.
🤝 Contribuindo
Aceitamos contribuições para o Deep Research! Se você tiver ideias para melhorias, correções de bugs ou novos recursos, sinta-se à vontade para:
- Faça um fork do repositório.
- Crie um novo branch para seu recurso ou correção de bug.
- Faça suas alterações e faça commit delas.
- Envie um pull request.
Para alterações importantes, abra uma issue primeiro para discutir suas alterações propostas.
✉️ Contato
Se você tiver alguma dúvida, sugestão ou feedback, por favor crie uma nova issue.
📝 Licença
O Deep Research é distribuído sob a Licença MIT. Esta licença permite uso, modificação e distribuição gratuitos para fins comerciais e não comerciais.