深度研究报告生成工具

一款利用多种AI模型快速生成深度研究报告的工具,支持多平台部署和本地数据处理,适用于学术研究、市场分析等场景。

  • by u14app
  • JavaScript
  • 本地部署
  • 4688 星标
  • 更新于
在 GitHub 查看 u14app/deep-research

使用说明

Deep Research

闪电快速深度研究报告

Deep Research使用各种强大的人工智能模型,在短短几分钟内生成深入的研究报告。它利用先进的“思考”和“任务”模型,结合互联网连接,对各种主题提供快速而富有洞察力的分析。 您的隐私至关重要-所有数据都在本地处理和存储。

✨ 特征

  • 快速深入研究: 在大约2分钟内生成全面的研究报告,大大加快了您的研究过程。
  • 多平台支持: 支持快速部署到Vercel、Cloudflare和其他平台。
  • 由AI驱动: 利用先进的人工智能模型进行准确和富有洞察力的分析。
  • 注重隐私: 您的数据保持私密和安全,因为所有数据都存储在浏览器本地。
  • 支持多LLM: 支持多种主流大型语言模型,包括Gemini、OpenAI、Anthropic、Deepseek、Atlas Cloud、Grok、Mistral、Azure OpenAI、任何兼容OpenAI的LLM、OpenRouter、Ollama等。
  • 支持网络搜索: 支持Searxng、Tavily、Firecrawl、fastCRW、Exa、Bocha、Brave等搜索引擎,使不支持搜索的LLM更方便地使用网络搜索功能。
  • 思维和任务模型: 采用复杂的“思考”和“任务”模型来平衡深度和速度,确保快速获得高质量的结果。支持转换研究模型。
  • 支持进一步研究: 您可以在项目的任何阶段改进或调整研究内容,并支持从该阶段开始的重新研究。
  • 本地知识库: 支持上传和处理文本、Office、PDF和其他资源文件,以生成本地知识库。
  • 工件: 支持研究内容的编辑,有WYSIWYM和Markdown两种编辑模式。可以调整阅读水平、文章长度和全文翻译。
  • 知识图谱: 它支持一键生成知识图,使您能够系统地了解报告内容。
  • 研究历史: 支持保存研究历史,您可以随时回顾以前的研究成果,并再次进行深入研究。
  • 本地服务器API支持(&S): 提供本地和服务器端API调用选项的灵活性,以满足您的需求。
  • 支持SaaS和MCP: 您可以通过SSE API将该项目用作深度研究服务(SaaS),也可以通过MCP服务将其用于其他人工智能服务。
  • 支持PWA: 借助Progressive Web App(PWA)技术,您可以像使用软件一样使用该项目。
  • 支持多密钥有效载荷: 支持多密钥有效负载,提高API响应效率。
  • 多语言支持: English, 简体中文, Español.
  • 采用现代技术打造: 使用Next.js 15和Shadcn UI开发,确保现代、高性能和视觉吸引力的用户体验。
  • MIT许可证: 开源,在MIT许可证下可供个人和商业使用。

🎯 路线图

  • [x] 支持保存研究历史
  • [x] 支持编辑最终报告和搜索结果
  • [x] 支持其他LLM模型
  • [x] 支持文件上传和本地知识库
  • [x] 支持SSE API和MCP服务器

🚀 入门指南

使用免费Gemini(推荐)

  1. 获取 Gemini API密钥

  2. 一键部署项目,您可以选择部署到Vercel或Cloudflare

    目前,该项目支持部署到Cloudflare,但您需要遵循以下步骤 如何部署到Cloudflare页面 去做。

  3. 开始使用

使用其他LLM

  1. 将项目部署到Vercel或Cloudflare
  2. 设置LLM API密钥
  3. 设置LLM API基本URL(可选)
  4. 开始使用

⌨️ 发展

按照以下步骤在本地浏览器上启动并运行Deep Research。

先决条件

安装

  1. 克隆存储库:

    git clone https://github.com/u14app/deep-research.git
    cd deep-research
    
  2. 安装依赖项:

    pnpm install  # or npm install or yarn install
    
  3. 设置环境变量:

    您需要修改文件 env.tpl 到 .env,或创建 .env 并将变量写入此文件。

    # For Development
    cp env.tpl .env.local
    # For Production
    cp env.tpl .env
    
  4. 运行开发服务器:

    pnpm dev  # or npm run dev or yarn dev
    

    打开浏览器并访问 http://localhost:3000 访问深度研究。

自定义型号列表

该项目允许自定义模型列表,但 仅在代理模式下工作。请添加一个名为的环境变量 NEXT_PUBLIC_MODEL_LIST 在 .env 文件或环境变量页面。

自定义模型列表使用 , 以分离多个模型。如果要禁用模型,请使用 - 符号后跟型号名称,即。 -existing-model-name。要只允许指定型号可用,请使用 -all,+new-model-name.

🚢 部署

维塞尔

云耀

目前,该项目支持部署到Cloudflare,但您需要遵循以下步骤 如何部署到Cloudflare页面 去做。

码头工人

Docker版本需要是20或以上,否则会提示找不到镜像。

⚠️ 注意:在大多数情况下,docker版本会落后于最新版本1到2天,因此部署后会继续出现“更新存在”的提示,这是正常的。

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

您还可以指定其他环境变量:

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

或者构建自己的docker镜像:

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

如果需要指定其他环境变量,请添加 -e key=value 对上述命令进行指定。

使用部署 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

或者构建自己的docker compose:

docker compose -f docker-compose.yml build

静态部署

您还可以直接构建静态页面版本,然后上传 out 目录指向任何支持静态页面的网站服务,如Github Page、Cloudflare、Vercel等。。

pnpm build:export

⚙️ 配置

如“入门”部分所述,Deep Research将以下环境变量用于服务器端API配置:

请参阅文件 env.tpl 对于所有可用的环境变量。

关于环境变量的重要说明:

  • 隐私提醒: 这些环境变量主要用于 服务器端API调用.使用时 本地API模式,不需要API密钥或服务器端配置,进一步增强了您的隐私。

  • 多键支持: 支持多个按键,每个按键之间用 ,,即。 key1,key2,key3.

  • 安全设置: 通过设置 ACCESS_PASSWORD,可以更好地保护服务器API的安全。

  • 使变量有效: 添加或修改此环境变量后,请重新部署项目以使更改生效。

📄 API文档

目前,该项目支持两种形式的API:服务器事件(SSE)和模型上下文协议(MCP)。

服务器端事件API

API深度研究为启动和监控复杂的研究任务提供了实时接口。

建议通过使用API @microsoft/fetch-event-source,要获得最终报告,你需要听 message 事件,数据将以文本流的形式返回。

POST 方法

端点: /api/sse

方法: POST

主体:

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

标题:

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

查看详情 API文档.

GET方法

这是一个有趣的实现。您可以直接通过URL观看深度研究的整个过程,就像观看视频一样。

您可以通过以下链接访问深度研究报告:

http://localhost:3000/api/sse/live?query=AI+trends+for+this+year&provider=pollinations&thinkingModel=openai&taskModel=openai-fast&searchProvider=searxng

查询参数:

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

模型上下文协议(MCP)服务器

目前支持 StreamableHTTP 和 SSE 服务器传输。

StreamableHTTP服务器端点: /api/mcp,运输类型: streamable-http

SSE服务器终结点: /api/mcp/sse,运输类型: sse

{
  "mcpServers": {
    "deep-research": {
      "url": "http://127.0.0.1:3000/api/mcp",
      "transportType": "streamable-http",
      "timeout": 600
    }
  }
}

注: 由于深入研究需要很长时间才能执行,因此您需要设置更长的超时时间以避免中断研究。

如果您的服务器设置 ACCESS_PASSWORD,MCP服务将受到保护,您需要添加其他标头参数:

{
  "mcpServers": {
    "deep-research": {
      "url": "http://127.0.0.1:3000/api/mcp",
      "transportType": "streamable-http",
      "timeout": 600,
      "headers": {
        "Authorization": "Bearer YOUR_ACCESS_PASSWORD"
      }
    }
  }
}

启用MCP服务需要设置全局环境变量:

# 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

注: 为确保MCP服务能够正常使用,您需要设置相应模型和搜索引擎的环境变量。具体环境变量参数请参考 env.tpl.

🪄 运作原理

  1. 研究课题

    • 输入研究主题
    • 使用当地研究资源(可选)
    • 开始思考(或重新思考)
  2. 提出你的想法

    • 系统会提问
      • 回答系统问题(可选)
      • 撰写研究计划(或重写研究计划)
    • 系统输出研究计划
      • 开始深入研究(或重新研究)
      • 系统生成SERP查询
  3. 信息收集

    • 初步研究
      • 基于SERP查询检索本地研究资源
      • 基于SERP查询从互联网收集信息
    • 深入研究(这个过程可以重复)
      • 提出研究建议(可选)
      • 开始新一轮的信息收集(过程与初步研究相同)
  4. 生成最终报告

    • 提出书面请求(可选)
    • 将所有研究材料总结成一份全面的Markdown报告
    • 重新生成研究报告(可选)
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

🙋 常见问题

为什么我的Ollama或SearXNG不能正常工作并显示错误 TypeError: Failed to fetch?

如果您的请求生成 CORS 由于浏览器安全限制,您需要为Ollama或SearXNG配置参数以允许跨域请求。您还可以考虑使用服务器代理模式,这是一种发出请求的后端服务器,可以有效地避免跨域问题。

🛡️ 隐私

Deep Research的设计考虑到了您的隐私。 所有研究数据和生成的报告都存储在您的计算机上。 我们不会收集您的任何研究数据或将其传输到外部服务器(除非您明确使用服务器端API调用,在这种情况下,数据通过您配置的代理发送到API(如果有))。您的隐私是我们的首要任务。

🙏 致谢

  • Next.js -用于构建高性能web应用程序的React框架。
  • Shadcn用户界面 -设计精美的组件,有助于简化UI开发。
  • AI SDK -增强Deep research的智能研究能力。
  • 深入研究 -多亏了这个项目 dzhng/deep-research 为了获得灵感。

🤝 贡献

我们欢迎对Deep Research的贡献!如果您有改进、错误修复或新功能的想法,请随时:

  1. 分叉存储库。
  2. 为您的功能或错误修复创建一个新分支。
  3. 进行更改并提交。
  4. 提交拉取请求。

对于重大更改,请先打开一个问题来讨论您提出的更改。

✉️ 联系

如果您有任何问题、建议或反馈,请创建一个新的 问题.

📝 许可证

Deep Research发布于 MIT许可证。本许可证允许出于商业和非商业目的免费使用、修改和分发。