Deep Research

Gera relatórios de pesquisa aprofundados usando modelos de IA poderosos.

Documentação

Deep Research

GitHub deployments GitHub Release Docker Image Size Docker Pulls License: MIT

Gemini Next Tailwind CSS shadcn/ui

Vercel Cloudflare PWA

Ask DeepWiki

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)

  1. Obtenha a Chave da API Gemini

  2. Implantação do projeto com um clique; você pode escolher implantar no Vercel ou Cloudflare

    Deploy with Vercel

    Atualmente, o projeto suporta implantação no Cloudflare, mas você precisa seguir Como implantar no Cloudflare Pages para fazê-lo.

  3. Comece a usar

Usar Outro LLM

  1. Implante o projeto no Vercel ou Cloudflare
  2. Defina a chave da API do LLM
  3. Defina a URL base da API do LLM (opcional)
  4. Comece a usar

⌨️ Desenvolvimento

Siga estes passos para colocar o Deep Research em funcionamento no seu navegador local.

Pré-requisitos

Instalação

  1. Clone o repositório:

    git clone https://github.com/u14app/deep-research.git
    cd deep-research
    
  2. Instale as dependências:

    pnpm install  # or npm install or yarn install
    
  3. Configure as Variáveis de Ambiente:

    Você precisa modificar o arquivo env.tpl para .env, ou criar um arquivo .env e escrever as variáveis nesse arquivo.

    # For Development
    cp env.tpl .env.local
    # For Production
    cp env.tpl .env
    
  4. Execute o servidor de desenvolvimento:

    pnpm dev  # or npm run dev or yarn dev
    

    Abra 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

Deploy with 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

  1. Tópico de pesquisa

    • Insira o tópico de pesquisa
    • Use recursos de pesquisa locais (opcional)
    • Comece a pensar (ou repensar)
  2. 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
  3. 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)
  4. 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-research pela 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:

  1. Faça um fork do repositório.
  2. Crie um novo branch para seu recurso ou correção de bug.
  3. Faça suas alterações e faça commit delas.
  4. 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.