Deep Research

Genera informes de investigación detallados utilizando potentes modelos de IA.

Documentación

Deep Research

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

Gemini Next Tailwind CSS shadcn/ui

Vercel Cloudflare PWA

Ask DeepWiki

Informe de Investigación Profunda ultrarrápido

Deep Research utiliza una variedad de potentes modelos de IA para generar informes de investigación exhaustivos en solo unos minutos. Aprovecha modelos avanzados de "Pensamiento" y "Tarea", combinados con una conexión a internet, para proporcionar análisis rápidos y perspicaces sobre diversos temas. Tu privacidad es primordial: todos los datos se procesan y almacenan localmente.

✨ Características

  • Investigación profunda rápida: Genera informes de investigación completos en aproximadamente 2 minutos, acelerando significativamente tu proceso de investigación.
  • Soporte multiplataforma: Admite implementación rápida en Vercel, Cloudflare y otras plataformas.
  • Impulsado por IA: Utiliza los modelos avanzados de IA para un análisis preciso y perspicaz.
  • Enfocado en la privacidad: Tus datos permanecen privados y seguros, ya que todos se almacenan localmente en tu navegador.
  • Soporte para múltiples LLM: Admite una variedad de modelos de lenguaje grandes populares, incluidos Gemini, OpenAI, Anthropic, Deepseek, Atlas Cloud, Grok, Mistral, Azure OpenAI, cualquier LLM compatible con OpenAI, OpenRouter, Ollama, etc.
  • Búsqueda web compatible: Admite motores de búsqueda como Searxng, Tavily, Firecrawl, fastCRW, Exa, Bocha, Brave, etc., lo que permite que los LLM que no admiten búsqueda utilicen la función de búsqueda web de manera más conveniente.
  • Modelos de pensamiento y tarea: Emplea modelos sofisticados de "Pensamiento" y "Tarea" para equilibrar profundidad y velocidad, garantizando resultados de alta calidad rápidamente. Admite el cambio de modelos de investigación.
  • Investigación adicional compatible: Puedes refinar o ajustar el contenido de la investigación en cualquier etapa del proyecto y admitir una nueva investigación desde esa etapa.
  • Base de conocimiento local: Admite la carga y el procesamiento de archivos de texto, Office, PDF y otros recursos para generar una base de conocimiento local.
  • Artefacto: Admite la edición del contenido de la investigación, con dos modos de edición: WYSIWYM y Markdown. Es posible ajustar el nivel de lectura, la longitud del artículo y la traducción del texto completo.
  • Grafo de conocimiento: Admite la generación con un clic de un grafo de conocimiento, lo que te permite tener una comprensión sistemática del contenido del informe.
  • Historial de investigación: Admite la conservación del historial de investigación; puedes revisar resultados anteriores en cualquier momento y realizar investigaciones profundas nuevamente.
  • Soporte de API local y de servidor: Ofrece flexibilidad con opciones de llamada a la API tanto local como del lado del servidor para adaptarse a tus necesidades.
  • Soporte para SaaS y MCP: Puedes usar este proyecto como un servicio de investigación profunda (SaaS) a través de la API SSE, o usarlo en otros servicios de IA a través del servicio MCP.
  • Soporte PWA: Con la tecnología de Aplicación Web Progresiva (PWA), puedes usar el proyecto como un software.
  • Soporte de carga útil de múltiples claves: Admite carga útil de múltiples claves para mejorar la eficiencia de respuesta de la API.
  • Soporte multilingüe: Inglés, 简体中文, Español.
  • Construido con tecnologías modernas: Desarrollado con Next.js 15 y Shadcn UI, lo que garantiza una experiencia de usuario moderna, eficiente y visualmente atractiva.
  • Licencia MIT: Código abierto y disponible gratuitamente para uso personal y comercial bajo la Licencia MIT.

🎯 Hoja de ruta

  • Soporte para conservación del historial de investigación
  • Soporte para editar el informe final y los resultados de búsqueda
  • Soporte para otros modelos LLM
  • Soporte para carga de archivos y base de conocimiento local
  • Soporte para API SSE y servidor MCP

🚀 Primeros pasos

Usar Gemini gratuito (recomendado)

  1. Obtén Gemini API Key

  2. Implementación con un clic del proyecto; puedes elegir implementarlo en Vercel o Cloudflare

    Deploy with Vercel

    Actualmente, el proyecto admite la implementación en Cloudflare, pero debes seguir Cómo implementar en Cloudflare Pages para hacerlo.

  3. Comienza a usar

Usar otro LLM

  1. Implementa el proyecto en Vercel o Cloudflare
  2. Configura la clave de API del LLM
  3. Configura la URL base de la API del LLM (opcional)
  4. Comienza a usar

⌨️ Desarrollo

Sigue estos pasos para poner en marcha Deep Research en tu navegador local.

Requisitos previos

Instalación

  1. Clona el repositorio:

    git clone https://github.com/u14app/deep-research.git
    cd deep-research
    
  2. Instala las dependencias:

    pnpm install  # or npm install or yarn install
    
  3. Configura las variables de entorno:

    Debes modificar el archivo env.tpl a .env, o crear un archivo .env y escribir las variables en este archivo.

    # For Development
    cp env.tpl .env.local
    # For Production
    cp env.tpl .env
    
  4. Ejecuta el servidor de desarrollo:

    pnpm dev  # or npm run dev or yarn dev
    

    Abre tu navegador y visita http://localhost:3000 para acceder a Deep Research.

Lista de modelos personalizados

El proyecto permite una lista de modelos personalizados, pero solo funciona en modo proxy. Agrega una variable de entorno llamada NEXT_PUBLIC_MODEL_LIST en el archivo .env o en la página de variables de entorno.

Las listas de modelos personalizados usan , para separar varios modelos. Si deseas deshabilitar un modelo, usa el símbolo - seguido del nombre del modelo, es decir, -existing-model-name. Para permitir solo el modelo especificado, usa -all,+new-model-name.

🚢 Implementación

Vercel

Deploy with Vercel

Cloudflare

Actualmente, el proyecto admite la implementación en Cloudflare, pero debes seguir Cómo implementar en Cloudflare Pages para hacerlo.

Docker

La versión de Docker debe ser 20 o superior; de lo contrario, se indicará que no se puede encontrar la imagen.

⚠️ Nota: La mayoría de las veces, la versión de Docker se retrasa entre 1 y 2 días con respecto a la última versión, por lo que el aviso de "actualización disponible" seguirá apareciendo después de la implementación, lo cual es normal.

docker pull xiangfa/deep-research:latest
docker run -d --name deep-research -p 3333:3000 xiangfa/deep-research

También puedes especificar variables de entorno adicionales:

docker run -d --name deep-research \
   -p 3333:3000 \
   -e ACCESS_PASSWORD=your-password \
   -e GOOGLE_GENERATIVE_AI_API_KEY=AIzaSy... \
   xiangfa/deep-research

o construir tu propia imagen de Docker:

docker build -t deep-research .
docker run -d --name deep-research -p 3333:3000 deep-research

Si necesitas especificar otras variables de entorno, agrega -e key=value al comando anterior para especificarlo.

Implementa 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

o construye tu propio docker compose:

docker compose -f docker-compose.yml build

Implementación estática

También puedes compilar una versión de página estática directamente y luego subir todos los archivos del directorio out a cualquier servicio web que admita páginas estáticas, como Github Page, Cloudflare, Vercel, etc.

pnpm build:export

⚙️ Configuración

Como se mencionó en la sección "Primeros pasos", Deep Research utiliza las siguientes variables de entorno para las configuraciones de API del lado del servidor:

Consulta el archivo env.tpl para todas las variables de entorno disponibles.

Notas importantes sobre las variables de entorno:

  • Recordatorio de privacidad: Estas variables de entorno se utilizan principalmente para llamadas a la API del lado del servidor. Cuando se usa el modo de API local, no se necesitan claves de API ni configuraciones del lado del servidor, lo que mejora aún más tu privacidad.

  • Soporte de múltiples claves: Admite varias claves; cada clave se separa con ,, es decir, key1,key2,key3.

  • Configuración de seguridad: Al configurar ACCESS_PASSWORD, puedes proteger mejor la seguridad de la API del servidor.

  • Hacer efectivas las variables: Después de agregar o modificar esta variable de entorno, vuelve a implementar el proyecto para que los cambios surtan efecto.

📄 Documentación de la API

Actualmente, el proyecto admite dos formas de API: Server-Sent Events (SSE) y Model Context Protocol (MCP).

API de Server-Sent Events

La API de Deep Research proporciona una interfaz en tiempo real para iniciar y monitorear tareas de investigación complejas.

Se recomienda usar la API a través de @microsoft/fetch-event-source; para obtener el informe final, debes escuchar el evento message; los datos se devolverán en forma de flujo de texto.

Método POST

Endpoint: /api/sse

Método: POST

Cuerpo:

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;
}

Encabezados:

interface Headers {
  "Content-Type": "application/json";
  // If you set an access password
  // Authorization: "Bearer YOUR_ACCESS_PASSWORD";
}

Consulta la documentación detallada de la API.

Método GET

Esta es una implementación interesante. Puedes ver todo el proceso de investigación profunda directamente a través de la URL, como si vieras un video.

Puedes acceder al informe de investigación profunda a través del siguiente enlace:

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)

Actualmente admite StreamableHTTP y SSE Server Transport.

Endpoint del servidor StreamableHTTP: /api/mcp, tipo de transporte: streamable-http

Endpoint del 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: Dado que la investigación profunda tarda mucho tiempo en ejecutarse, debes configurar un tiempo de espera más largo para evitar interrumpir el estudio.

Si tu servidor configura ACCESS_PASSWORD, el servicio MCP estará protegido y deberás agregar parámetros de encabezado adicionales:

{
  "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 el servicio MCP, se requiere configurar variables de entorno globales:

# 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 garantizar que el servicio MCP funcione correctamente, debes configurar las variables de entorno del modelo y del motor de búsqueda correspondientes. Para parámetros específicos de variables de entorno, consulta env.tpl.

🪄 Cómo funciona

  1. Tema de investigación

    • Ingresa el tema de investigación
    • Usa recursos de investigación locales (opcional)
    • Comienza a pensar (o repensar)
  2. Propón tus ideas

    • El sistema hace preguntas
      • Responde las preguntas del sistema (opcional)
      • Escribe un plan de investigación (o reescribe el plan de investigación)
    • El sistema genera el plan de investigación
      • Comienza la investigación profunda (o reinvestigación)
      • El sistema genera consultas SERP
  3. Recopilación de información

    • Investigación inicial
      • Recupera recursos de investigación locales según las consultas SERP
      • Recopila información de internet según las consultas SERP
    • Investigación profunda (este proceso se puede repetir)
      • Propón sugerencias de investigación (opcional)
      • Comienza una nueva ronda de recopilación de información (el proceso es el mismo que la investigación inicial)
  4. Generar informe final

    • Haz una solicitud de redacción (opcional)
    • Resume todos los materiales de investigación en un informe Markdown completo
    • Regenera el informe de investigación (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

🙋 Preguntas frecuentes

¿Por qué mi Ollama o SearXNG no funciona correctamente y muestra el error TypeError: Failed to fetch?

Si tu solicitud genera CORS debido a restricciones de seguridad del navegador, debes configurar parámetros para Ollama o SearXNG para permitir solicitudes de origen cruzado. También puedes considerar usar el modo proxy del servidor, que es un servidor backend que realiza solicitudes, lo que puede evitar eficazmente problemas de origen cruzado.

🛡️ Privacidad

Deep Research está diseñado pensando en tu privacidad. Todos los datos de investigación y los informes generados se almacenan localmente en tu máquina. No recopilamos ni transmitimos ninguno de tus datos de investigación a servidores externos (a menos que estés usando explícitamente llamadas a la API del lado del servidor, en cuyo caso los datos se envían a la API a través de tu proxy configurado, si lo hay). Tu privacidad es nuestra prioridad.

🙏 Agradecimientos

  • Next.js - El framework de React para construir aplicaciones web eficientes.
  • Shadcn UI - Componentes bellamente diseñados que ayudaron a optimizar el desarrollo de la interfaz de usuario.
  • AI SDKs - Impulsan las capacidades de investigación inteligente de Deep Research.
  • Deep Research - Gracias al proyecto dzhng/deep-research por la inspiración.

🤝 Contribuciones

¡Damos la bienvenida a contribuciones a Deep Research! Si tienes ideas para mejoras, correcciones de errores o nuevas funciones, no dudes en:

  1. Hacer un fork del repositorio.
  2. Crear una nueva rama para tu función o corrección de errores.
  3. Realizar tus cambios y confirmarlos.
  4. Enviar una solicitud de extracción.

Para cambios importantes, abre primero un issue para discutir los cambios propuestos.

✉️ Contacto

Si tienes alguna pregunta, sugerencia o comentario, por favor crea un nuevo issue.

📝 Licencia

Deep Research se publica bajo la Licencia MIT. Esta licencia permite el uso, modificación y distribución gratuitos tanto para fines comerciales como no comerciales.